From: Chet Ramey Date: Mon, 17 Sep 2018 19:10:56 +0000 (-0400) Subject: bash-5.0-beta release X-Git-Tag: bash-5.0-beta X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f5dfe5a18b4670eb4cea32c1c76295eb70a8865;p=thirdparty%2Fbash.git bash-5.0-beta release --- diff --git a/ABOUT-NLS b/ABOUT-NLS index 47d5e39f0..3cc828658 100644 --- a/ABOUT-NLS +++ b/ABOUT-NLS @@ -1,592 +1,1348 @@ -Notes on the Free Translation Project -************************************* +1 Notes on the Free Translation Project +*************************************** - Free software is going international! The Free Translation Project -is a way to get maintainers of free software, translators, and users all -together, so that will gradually become able to speak many languages. -A few packages already provide translations for their messages. +Free software is going international! The Free Translation Project is a +way to get maintainers of free software, translators, and users all +together, so that free software will gradually become able to speak many +languages. A few packages already provide translations for their +messages. - If you found this `ABOUT-NLS' file inside a distribution, you may -assume that the distributed package does use GNU `gettext' internally, + If you found this 'ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU 'gettext' internally, itself available at your nearest GNU archive site. But you do _not_ -need to install GNU `gettext' prior to configuring, installing or using +need to install GNU 'gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and -work at translations should contact the appropriate team. +work on translations can contact the appropriate team. - When reporting bugs in the `intl/' directory or bugs which may be -related to internationalization, you should tell about the version of -`gettext' which is used. The information can be found in the -`intl/VERSION' file, in internationalized packages. +1.1 INSTALL Matters +=================== -Quick configuration advice -========================== - - If you want to exploit the full power of internationalization, you -should configure it using - - ./configure --with-included-gettext - -to force usage of internationalizing routines provided within this -package, despite the existence of internationalizing capabilities in the -operating system where this package is being installed. So far, only -the `gettext' implementation in the GNU C library version 2 provides as -many features (such as locale alias, message inheritance, automatic -charset conversion or plural form handling) as the implementation here. -It is also not possible to offer this additional functionality on top -of a `catgets' implementation. Future versions of GNU `gettext' will -very likely convey even more functionality. So it might be a good idea -to change to GNU `gettext' as soon as possible. - - So you need _not_ provide this option if you are using GNU libc 2 or -you have installed a recent copy of the GNU gettext package with the -included `libintl'. - -INSTALL Matters -=============== - - Some packages are "localizable" when properly installed; the -programs they contain can be made to speak your own native language. -Most such packages use GNU `gettext'. Other packages have their own -ways to internationalization, predating GNU `gettext'. +Some packages are "localizable" when properly installed; the programs +they contain can be made to speak your own native language. Most such +packages use GNU 'gettext'. Other packages have their own ways to +internationalization, predating GNU 'gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already -provides the GNU `gettext' functions. If not, the GNU `gettext' own -library will be used. This library is wholly contained within this -package, usually in the `intl/' subdirectory, so prior installation of -the GNU `gettext' package is _not_ required. Installers may use -special options at configuration time for changing the default -behaviour. The commands: - - ./configure --with-included-gettext - ./configure --disable-nls - -will respectively bypass any pre-existing `gettext' to use the -internationalizing routines provided within this package, or else, -_totally_ disable translation of messages. - - When you already have GNU `gettext' installed on your system and run -configure without an option for your new package, `configure' will -probably detect the previously built and installed `libintl.a' file and -will decide to use this. This might be not what is desirable. You -should use the more recent version of the GNU `gettext' library. I.e. -if the file `intl/VERSION' shows that the library which comes with this -package is more recent, you should use +provides the GNU 'gettext' functions. Installers may use special +options at configuration time for changing the default behaviour. The +command: - ./configure --with-included-gettext + ./configure --disable-nls -to prevent auto-detection. +will _totally_ disable translation of messages. - The configuration process will not test for the `catgets' function -and therefore it will not be used. The reason is that even an -emulation of `gettext' on top of `catgets' could not provide all the -extensions of the GNU `gettext' library. + When you already have GNU 'gettext' installed on your system and run +configure without an option for your new package, 'configure' will +probably detect the previously built and installed 'libintl' library and +will decide to use it. If not, you may have to to use the +'--with-libintl-prefix' option to tell 'configure' where to look for it. - Internationalized packages have usually many `po/LL.po' files, where + Internationalized packages usually have many 'po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless -translations have been forbidden at `configure' time by using the -`--disable-nls' switch, all available translations are installed -together with the package. However, the environment variable `LINGUAS' +translations have been forbidden at 'configure' time by using the +'--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable 'LINGUAS' may be set, prior to configuration, to limit the installed set. -`LINGUAS' should then contain a space separated list of two-letter +'LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. -Using This Package -================== +1.2 Using This Package +====================== - As a user, if your language has been installed for this package, you -only have to set the `LANG' environment variable to the appropriate -`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, -and `CC' is an ISO 3166 two-letter country code. For example, let's -suppose that you speak German and live in Germany. At the shell -prompt, merely execute `setenv LANG de_DE' (in `csh'), -`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). -This can be done from your `.login' or `.profile' file, once and for -all. +As a user, if your language has been installed for this package, you +only have to set the 'LANG' environment variable to the appropriate +'LL_CC' combination. If you happen to have the 'LC_ALL' or some other +'LC_xxx' environment variables set, you should unset them before setting +'LANG', otherwise the setting of 'LANG' will not have the desired +effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is +an ISO 3166 two-letter country code. For example, let's suppose that +you speak German and live in Germany. At the shell prompt, merely +execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in +'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your +'.login' or '.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For -example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The country code serves to distinguish the dialects. - The locale naming convention of `LL_CC', with `LL' denoting the -language and `CC' denoting the country, is the one use on systems based -on GNU libc. On other systems, some variations of this scheme are -used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -locales supported by your system for your country by running the command -`locale -a | grep '^LL''. + The locale naming convention of 'LL_CC', with 'LL' denoting the +language and 'CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are used, +such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales +supported by your system for your language by running the command +'locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called -`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' -for the purpose of message handling, but you still need to have `LANG' +'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG' +for the purpose of message handling, but you still need to have 'LANG' set to the primary language; this is required by other parts of the -system libraries. For example, some Swedish users who would rather -read translations in German than English for when Swedish is not -available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. +system libraries. For example, some Swedish users who would rather read +translations in German than English for when Swedish is not available, +set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from 'no' to 'nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under 'nb' and some older ones under 'no', it's recommended +for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and +older translations are used. - In the `LANGUAGE' environment variable, but not in the `LANG' -environment variable, `LL_CC' combinations can be abbreviated as `LL' -to denote the language's main dialect. For example, `de' is equivalent -to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -(Portuguese as spoken in Portugal) in this context. + In the 'LANGUAGE' environment variable, but not in the 'LANG' +environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to +denote the language's main dialect. For example, 'de' is equivalent to +'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese +as spoken in Portugal) in this context. -Translating Teams -================= +1.3 Translating Teams +===================== - For the Free Translation Project to be a success, we need interested +For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, -`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" -area. +'http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has -`-request' appended. For example, speakers of Swedish can send a -message to `sv-request@li.org', having this message body: +'-request' appended. For example, speakers of Swedish can send a +message to 'sv-request@li.org', having this message body: subscribe - Keep in mind that team members are expected to participate -_actively_ in translations, or at solving translational difficulties, -rather than merely lurking around. If your team does not exist yet and -you want to start one, or if you are unsure about what to do or how to -get started, please write to `translation@iro.umontreal.ca' to reach the + Keep in mind that team members are expected to participate _actively_ +in translations, or at solving translational difficulties, rather than +merely lurking around. If your team does not exist yet and you want to +start one, or if you are unsure about what to do or how to get started, +please write to 'coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing -the terminology in use. Proven linguistic skill are praised more than -programming skill, here. +the terminology in use. Proven linguistic skills are praised more than +programming skills, here. -Available Packages -================== +1.4 Available Packages +====================== - Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of May 2003. +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of Jun 2014. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. - Ready PO files am az be bg ca cs da de el en en_GB eo es - +-------------------------------------------+ - a2ps | [] [] [] [] | - aegis | () | - anubis | | - ap-utils | | - bash | [] [] [] | - batchelor | | - bfd | [] [] | - binutils | [] [] | - bison | [] [] [] | - bluez-pin | [] [] | - clisp | | - clisp | [] [] [] | - coreutils | [] [] [] [] | - cpio | [] [] [] | - darkstat | () [] | - diffutils | [] [] [] [] [] [] [] | - e2fsprogs | [] [] | - enscript | [] [] [] [] | - error | [] [] [] [] [] | - fetchmail | [] () [] [] [] [] | - fileutils | [] [] [] | - findutils | [] [] [] [] [] [] | - flex | [] [] [] [] | - gas | [] | - gawk | [] [] [] [] | - gcal | [] | - gcc | [] [] | - gettext | [] [] [] [] [] | - gettext-runtime | [] [] [] [] [] | - gettext-tools | [] [] | - gimp-print | [] [] [] [] [] | - gliv | | - glunarclock | [] [] [] | - gnucash | () [] | - gnucash-glossary | [] () [] | - gnupg | [] () [] [] [] [] | - gpe-calendar | [] | - gpe-conf | [] | - gpe-contacts | [] | - gpe-edit | | - gpe-login | [] | - gpe-ownerinfo | [] | - gpe-sketchbook | [] | - gpe-timesheet | | - gpe-today | [] | - gpe-todo | [] | - gphoto2 | [] [] [] [] | - gprof | [] [] | - gpsdrive | () () () | - grep | [] [] [] [] [] | - gretl | [] | - hello | [] [] [] [] [] [] | - id-utils | [] [] | - indent | [] [] [] [] | - jpilot | [] [] [] [] | - jwhois | [] | - kbd | [] [] [] [] [] | - ld | [] [] | - libc | [] [] [] [] [] [] | - libgpewidget | [] | - libiconv | [] [] [] [] [] | - lifelines | [] () | - lilypond | [] | - lingoteach | | - lingoteach_lessons | () () | - lynx | [] [] [] [] | - m4 | [] [] [] [] | - mailutils | [] [] | - make | [] [] [] | - man-db | [] () [] [] () | - mysecretdiary | [] [] [] | - nano | [] () [] [] [] | - nano_1_0 | [] () [] [] [] | - opcodes | [] [] | - parted | [] [] [] [] [] | - ptx | [] [] [] [] [] | - python | | - radius | | - recode | [] [] [] [] [] [] | - screem | | - sed | [] [] [] [] [] | - sh-utils | [] [] [] | - sharutils | [] [] [] [] [] [] | - sketch | [] () [] | - soundtracker | [] [] [] | - sp | [] | - tar | [] [] [] [] | - texinfo | [] [] [] [] | - textutils | [] [] [] [] | - tin | () () | - util-linux | [] [] [] [] [] | - vorbis-tools | [] [] [] | - wastesedge | () | - wdiff | [] [] [] [] | - wget | [] [] [] [] [] [] [] | - xchat | [] [] [] | - xpad | | - +-------------------------------------------+ - am az be bg ca cs da de el en en_GB eo es - 0 1 4 2 31 17 54 60 14 1 4 12 56 - - et fa fi fr ga gl he hr hu id it ja ko - +----------------------------------------+ - a2ps | [] [] [] () () | - aegis | | - anubis | [] | - ap-utils | [] | - bash | [] [] | - batchelor | [] | - bfd | [] [] | - binutils | [] [] | - bison | [] [] [] [] | - bluez-pin | [] [] [] [] | - clisp | | - clisp | [] | - coreutils | [] [] [] [] | - cpio | [] [] [] [] | - darkstat | () [] [] [] | - diffutils | [] [] [] [] [] [] [] | - e2fsprogs | | - enscript | [] [] | - error | [] [] [] [] | - fetchmail | [] | - fileutils | [] [] [] [] [] | - findutils | [] [] [] [] [] [] [] [] [] [] [] | - flex | [] [] | - gas | [] | - gawk | [] [] | - gcal | [] | - gcc | [] | - gettext | [] [] [] | - gettext-runtime | [] [] [] [] | - gettext-tools | [] | - gimp-print | [] [] | - gliv | () | - glunarclock | [] [] [] [] | - gnucash | [] | - gnucash-glossary | [] | - gnupg | [] [] [] [] [] [] [] | - gpe-calendar | [] | - gpe-conf | | - gpe-contacts | [] | - gpe-edit | [] [] | - gpe-login | [] | - gpe-ownerinfo | [] [] [] | - gpe-sketchbook | [] | - gpe-timesheet | [] [] [] | - gpe-today | [] [] | - gpe-todo | [] [] | - gphoto2 | [] [] [] | - gprof | [] [] | - gpsdrive | () [] () () | - grep | [] [] [] [] [] [] [] [] [] [] [] | - gretl | [] | - hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | - id-utils | [] [] [] | - indent | [] [] [] [] [] [] [] [] | - jpilot | [] () | - jwhois | [] [] [] [] | - kbd | [] | - ld | [] | - libc | [] [] [] [] [] [] | - libgpewidget | [] [] [] | - libiconv | [] [] [] [] [] [] [] [] | - lifelines | () | - lilypond | [] | - lingoteach | [] [] | - lingoteach_lessons | | - lynx | [] [] [] [] | - m4 | [] [] [] [] | - mailutils | | - make | [] [] [] [] [] [] | - man-db | [] () () | - mysecretdiary | [] [] | - nano | [] [] [] [] | - nano_1_0 | [] [] [] [] | - opcodes | [] [] | - parted | [] [] [] | - ptx | [] [] [] [] [] [] [] | - python | | - radius | | - recode | [] [] [] [] [] [] | - screem | | - sed | [] [] [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] [] | - sharutils | [] [] [] [] [] | - sketch | [] | - soundtracker | [] [] [] | - sp | [] () | - tar | [] [] [] [] [] [] [] [] [] | - texinfo | [] [] [] [] | - textutils | [] [] [] [] [] | - tin | [] () | - util-linux | [] [] [] [] () [] | - vorbis-tools | [] | - wastesedge | () | - wdiff | [] [] [] [] [] | - wget | [] [] [] [] [] [] [] [] | - xchat | [] [] [] | - xpad | | - +----------------------------------------+ - et fa fi fr ga gl he hr hu id it ja ko - 20 1 15 73 14 24 8 10 30 31 19 31 9 - - lg lt lv ms nb nl nn no pl pt pt_BR ro - +----------------------------------------+ - a2ps | [] [] () () () [] [] | - aegis | () | - anubis | [] [] | - ap-utils | () | - bash | [] | - batchelor | | - bfd | | - binutils | | - bison | [] [] [] [] | - bluez-pin | [] | - clisp | | - clisp | [] | - coreutils | [] | - cpio | [] [] [] | - darkstat | [] [] [] [] | - diffutils | [] [] [] | - e2fsprogs | | - enscript | [] [] | - error | [] [] | - fetchmail | () () | - fileutils | [] | - findutils | [] [] [] [] | - flex | [] | - gas | | - gawk | [] | - gcal | | - gcc | | - gettext | [] | - gettext-runtime | [] | - gettext-tools | | - gimp-print | [] | - gliv | [] | - glunarclock | [] | - gnucash | | - gnucash-glossary | [] [] | - gnupg | | - gpe-calendar | [] [] | - gpe-conf | [] [] | - gpe-contacts | [] | - gpe-edit | [] [] | - gpe-login | [] [] | - gpe-ownerinfo | [] [] | - gpe-sketchbook | [] [] | - gpe-timesheet | [] [] | - gpe-today | [] [] | - gpe-todo | [] [] | - gphoto2 | | - gprof | [] | - gpsdrive | () () () | - grep | [] [] [] [] | - gretl | | - hello | [] [] [] [] [] [] [] [] [] | - id-utils | [] [] [] | - indent | [] [] [] | - jpilot | () () | - jwhois | [] [] [] | - kbd | | - ld | | - libc | [] [] [] [] | - libgpewidget | [] [] | - libiconv | [] [] | - lifelines | | - lilypond | [] | - lingoteach | | - lingoteach_lessons | | - lynx | [] [] | - m4 | [] [] [] [] | - mailutils | | - make | [] [] | - man-db | [] | - mysecretdiary | [] | - nano | [] [] [] [] | - nano_1_0 | [] [] [] [] | - opcodes | [] [] [] | - parted | [] [] [] | - ptx | [] [] [] [] [] [] [] | - python | | - radius | | - recode | [] [] [] | - screem | | - sed | [] [] | - sh-utils | [] | - sharutils | [] | - sketch | [] | - soundtracker | | - sp | | - tar | [] [] [] [] [] [] | - texinfo | [] | - textutils | [] | - tin | | - util-linux | [] [] | - vorbis-tools | [] [] | - wastesedge | | - wdiff | [] [] [] [] | - wget | [] [] [] | - xchat | [] [] | - xpad | [] | - +----------------------------------------+ - lg lt lv ms nb nl nn no pl pt pt_BR ro - 0 0 2 11 7 26 3 4 18 15 34 34 - - ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW - +-------------------------------------------+ - a2ps | [] [] [] [] [] | 16 - aegis | () | 0 - anubis | [] [] | 5 - ap-utils | () | 1 - bash | [] | 7 - batchelor | | 1 - bfd | [] [] [] | 7 - binutils | [] [] [] | 7 - bison | [] [] | 13 - bluez-pin | | 7 - clisp | | 0 - clisp | | 5 - coreutils | [] [] [] [] [] | 14 - cpio | [] [] [] | 13 - darkstat | [] () () | 9 - diffutils | [] [] [] [] | 21 - e2fsprogs | [] | 3 - enscript | [] [] [] | 11 - error | [] [] [] | 14 - fetchmail | [] | 7 - fileutils | [] [] [] [] [] [] | 15 - findutils | [] [] [] [] [] [] | 27 - flex | [] [] [] | 10 - gas | [] | 3 - gawk | [] [] | 9 - gcal | [] [] | 4 - gcc | [] | 4 - gettext | [] [] [] [] [] [] | 15 - gettext-runtime | [] [] [] [] [] [] | 16 - gettext-tools | [] [] | 5 - gimp-print | [] [] | 10 - gliv | | 1 - glunarclock | [] [] [] | 11 - gnucash | [] [] | 4 - gnucash-glossary | [] [] [] | 8 - gnupg | [] [] [] [] | 16 - gpe-calendar | [] | 5 - gpe-conf | | 3 - gpe-contacts | [] | 4 - gpe-edit | [] | 5 - gpe-login | [] | 5 - gpe-ownerinfo | [] | 7 - gpe-sketchbook | [] | 5 - gpe-timesheet | [] | 6 - gpe-today | [] | 6 - gpe-todo | [] | 6 - gphoto2 | [] [] | 9 - gprof | [] [] | 7 - gpsdrive | [] [] | 3 - grep | [] [] [] [] | 24 - gretl | | 2 - hello | [] [] [] [] [] | 33 - id-utils | [] [] [] | 11 - indent | [] [] [] [] | 19 - jpilot | [] [] [] [] [] | 10 - jwhois | () () [] [] | 10 - kbd | [] [] | 8 - ld | [] [] | 5 - libc | [] [] [] [] | 20 - libgpewidget | | 6 - libiconv | [] [] [] [] [] [] | 21 - lifelines | [] | 2 - lilypond | [] | 4 - lingoteach | | 2 - lingoteach_lessons | () | 0 - lynx | [] [] [] [] | 14 - m4 | [] [] [] | 15 - mailutils | | 2 - make | [] [] [] [] | 15 - man-db | [] | 6 - mysecretdiary | [] [] | 8 - nano | [] [] [] | 15 - nano_1_0 | [] [] [] | 15 - opcodes | [] [] | 9 - parted | [] [] | 13 - ptx | [] [] [] | 22 - python | | 0 - radius | | 0 - recode | [] [] [] [] | 19 - screem | [] | 1 - sed | [] [] [] [] [] | 20 - sh-utils | [] [] [] | 13 - sharutils | [] [] [] [] | 16 - sketch | [] | 5 - soundtracker | [] | 7 - sp | [] | 3 - tar | [] [] [] [] [] | 24 - texinfo | [] [] [] [] | 13 - textutils | [] [] [] [] [] | 15 - tin | | 1 - util-linux | [] [] | 14 - vorbis-tools | [] | 7 - wastesedge | | 0 - wdiff | [] [] [] [] | 17 - wget | [] [] [] [] [] [] [] | 25 - xchat | [] [] [] | 11 - xpad | | 1 - +-------------------------------------------+ - 50 teams ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW - 97 domains 32 19 16 0 56 0 48 10 1 1 12 23 913 + Ready PO files af am an ar as ast az be bg bn bn_IN bs ca crh cs + +---------------------------------------------------+ + a2ps | [] [] [] | + aegis | | + anubis | | + aspell | [] [] [] | + bash | [] [] [] | + bfd | | + binutils | [] | + bison | | + bison-runtime | [] | + buzztrax | [] | + ccd2cue | | + ccide | | + cflow | | + clisp | | + coreutils | [] [] | + cpio | | + cppi | | + cpplib | [] | + cryptsetup | [] | + datamash | | + denemo | [] [] | + dfarc | [] | + dialog | [] [] [] | + dico | | + diffutils | [] | + dink | [] | + direvent | | + doodle | [] | + dos2unix | | + dos2unix-man | | + e2fsprogs | [] [] | + enscript | [] | + exif | [] | + fetchmail | [] [] | + findutils | [] | + flex | [] | + freedink | [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | [] | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] [] | + gjay | | + glunarclock | [] [] [] | + gnubiff | [] | + gnubik | [] | + gnucash | () () [] | + gnuchess | | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] | + gprof | [] | + gramadoir | | + grep | [] [] [] | + grub | [] | + gsasl | | + gss | | + gst-plugins-bad | [] [] | + gst-plugins-base | [] [] [] | + gst-plugins-good | [] [] [] | + gst-plugins-ugly | [] [] [] | + gstreamer | [] [] [] [] | + gtick | [] | + gtkam | [] [] | + gtkspell | [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] | + hello | [] | + help2man | | + help2man-texi | | + hylafax | | + idutils | | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + iso_639_5 | | + jwhois | | + kbd | [] | + klavaro | [] [] [] [] [] | + ld | [] | + leafpad | [] [] [] [] | + libc | [] [] [] | + libexif | () | + libextractor | | + libgnutls | [] | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | | + libiconv | [] [] | + libidn | [] | + liferea | [] [] [] [] | + lilypond | [] [] | + lordsawar | [] | + lprng | | + lynx | [] [] | + m4 | [] | + mailfromd | | + mailutils | | + make | [] | + man-db | [] [] | + man-db-manpages | | + midi-instruments | [] [] [] | + minicom | [] | + mkisofs | [] | + myserver | [] | + nano | [] [] [] | + opcodes | | + parted | [] | + pies | | + pnmixer | | + popt | [] | + procps-ng | | + procps-ng-man | | + psmisc | [] | + pspp | [] | + pushover | [] | + pwdutils | | + pyspread | | + radius | [] | + recode | [] [] [] | + recutils | | + rpm | | + rush | | + sarg | | + sed | [] [] [] [] | + sharutils | [] | + shishi | | + skribilo | | + solfege | [] [] | + solfege-manual | | + spotmachine | | + sudo | [] [] | + sudoers | [] [] | + sysstat | [] | + tar | [] [] [] | + texinfo | [] [] | + texinfo_document | [] [] | + tigervnc | [] | + tin | | + tin-man | | + tracgoogleappsa... | | + trader | | + util-linux | [] | + ve | | + vice | | + vmm | | + vorbis-tools | [] | + wastesedge | | + wcd | | + wcd-man | | + wdiff | [] [] | + wget | [] | + wyslij-po | | + xboard | | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +---------------------------------------------------+ + af am an ar as ast az be bg bn bn_IN bs ca crh cs + 4 0 2 5 3 11 0 8 25 3 3 1 55 4 74 + + da de el en en_GB en_ZA eo es et eu fa fi fr + +--------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] [] [] | + aegis | [] [] [] [] | + anubis | [] [] [] [] [] | + aspell | [] [] [] [] [] [] [] | + bash | [] [] [] | + bfd | [] [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] [] [] [] [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | [] [] [] [] | + ccd2cue | [] [] [] [] | + ccide | [] [] [] [] [] [] | + cflow | [] [] [] [] [] | + clisp | [] [] [] [] [] | + coreutils | [] [] [] [] [] | + cpio | [] [] [] [] [] | + cppi | [] [] [] [] [] | + cpplib | [] [] [] [] [] [] | + cryptsetup | [] [] [] [] [] | + datamash | [] [] [] [] | + denemo | [] | + dfarc | [] [] [] [] [] [] | + dialog | [] [] [] [] [] [] [] [] [] | + dico | [] [] [] [] | + diffutils | [] [] [] [] [] [] | + dink | [] [] [] [] [] [] | + direvent | [] [] [] [] | + doodle | [] [] [] [] | + dos2unix | [] [] [] [] [] | + dos2unix-man | [] [] [] | + e2fsprogs | [] [] [] [] [] | + enscript | [] [] [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] () [] [] [] [] [] | + findutils | [] [] [] [] [] [] [] [] | + flex | [] [] [] [] [] [] | + freedink | [] [] [] [] [] [] [] [] | + fusionforge | [] [] [] | + gas | [] [] [] | + gawk | [] [] [] [] [] | + gcal | [] [] [] [] | + gcc | [] | + gdbm | [] [] [] [] [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] | + gjay | [] [] [] [] | + glunarclock | [] [] [] [] [] | + gnubiff | () [] [] () | + gnubik | [] [] [] [] [] | + gnucash | [] () () () () () () | + gnuchess | [] [] [] [] | + gnulib | [] [] [] [] [] [] [] | + gnunet | [] | + gnunet-gtk | [] | + gold | [] [] [] | + gphoto2 | [] () [] [] | + gprof | [] [] [] [] [] [] | + gramadoir | [] [] [] [] [] | + grep | [] [] [] [] [] [] [] | + grub | [] [] [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | [] () [] [] [] | + gtkam | [] () [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] | + guix | [] [] | + guix-packages | | + gutenprint | [] [] [] [] | + hello | [] [] [] [] [] [] [] [] | + help2man | [] [] [] [] [] [] [] | + help2man-texi | [] [] [] | + hylafax | [] [] | + idutils | [] [] [] [] [] | + iso_15924 | [] () [] [] () [] () | + iso_3166 | [] () [] [] [] [] () [] () | + iso_3166_2 | [] () () () | + iso_4217 | [] () [] [] [] () [] () | + iso_639 | [] () [] [] () [] () | + iso_639_3 | () () () | + iso_639_5 | () () () | + jwhois | [] [] [] [] [] | + kbd | [] [] [] [] [] [] | + klavaro | [] [] [] [] [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] [] () [] [] | + libextractor | [] | + libgnutls | [] [] [] [] | + libgphoto2 | [] () [] | + libgphoto2_port | [] () [] [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] [] [] | + libidn | [] [] [] [] [] | + liferea | [] () [] [] [] [] [] | + lilypond | [] [] [] [] [] [] | + lordsawar | [] [] | + lprng | | + lynx | [] [] [] [] [] [] | + m4 | [] [] [] [] [] [] | + mailfromd | [] | + mailutils | [] [] [] [] | + make | [] [] [] [] [] | + man-db | [] [] [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] [] [] [] | + minicom | [] [] [] [] [] | + mkisofs | [] [] [] | + myserver | [] [] [] [] | + nano | [] [] [] [] [] [] [] | + opcodes | [] [] [] [] [] | + parted | [] [] [] | + pies | [] | + pnmixer | [] [] | + popt | [] [] [] [] [] [] | + procps-ng | [] [] | + procps-ng-man | [] [] | + psmisc | [] [] [] [] [] [] [] | + pspp | [] [] [] | + pushover | () [] [] [] | + pwdutils | [] [] [] | + pyspread | [] [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] | + recutils | [] [] [] [] | + rpm | [] [] [] [] [] | + rush | [] [] [] | + sarg | [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] [] [] | + skribilo | [] [] [] | + solfege | [] [] [] [] [] [] [] [] | + solfege-manual | [] [] [] [] [] | + spotmachine | [] [] [] [] [] | + sudo | [] [] [] [] [] [] | + sudoers | [] [] [] [] [] [] | + sysstat | [] [] [] [] [] [] | + tar | [] [] [] [] [] [] [] | + texinfo | [] [] [] [] [] | + texinfo_document | [] [] [] [] | + tigervnc | [] [] [] [] [] [] | + tin | [] [] [] [] | + tin-man | [] | + tracgoogleappsa... | [] [] [] [] [] | + trader | [] [] [] [] [] [] | + util-linux | [] [] [] [] | + ve | [] [] [] [] [] | + vice | () () () | + vmm | [] [] | + vorbis-tools | [] [] [] [] | + wastesedge | [] | + wcd | [] [] [] [] | + wcd-man | [] | + wdiff | [] [] [] [] [] [] [] | + wget | [] [] [] [] [] [] | + wyslij-po | [] [] [] [] | + xboard | [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] [] | + +--------------------------------------------------+ + da de el en en_GB en_ZA eo es et eu fa fi fr + 119 131 32 1 6 0 94 95 22 13 4 102 139 + + ga gd gl gu he hi hr hu hy ia id is it ja ka kk + +-------------------------------------------------+ + a2ps | [] [] [] [] | + aegis | [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] | + binutils | [] [] [] | + bison | [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | | + ccd2cue | [] | + ccide | [] [] | + cflow | [] [] [] | + clisp | | + coreutils | [] [] | + cpio | [] [] [] [] [] [] | + cppi | [] [] [] [] [] | + cpplib | [] [] | + cryptsetup | [] | + datamash | | + denemo | [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] | + dink | [] | + direvent | [] | + doodle | [] [] | + dos2unix | [] [] | + dos2unix-man | | + e2fsprogs | [] [] | + enscript | [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] [] [] [] [] | + flex | [] | + freedink | [] [] [] [] | + fusionforge | | + gas | [] | + gawk | [] () [] | + gcal | | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] | + gettext-tools | [] [] [] | + gjay | [] | + glunarclock | [] [] [] [] [] [] | + gnubiff | [] [] () | + gnubik | [] [] [] | + gnucash | () () () () () | + gnuchess | | + gnulib | [] [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] [] | + grep | [] [] [] [] [] [] [] | + grub | [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] [] | + hello | [] [] [] [] [] | + help2man | [] [] [] | + help2man-texi | | + hylafax | [] | + idutils | [] [] | + iso_15924 | [] [] [] [] [] [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | [] [] | + iso_4217 | [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + iso_639_5 | | + jwhois | [] [] [] [] | + kbd | [] [] [] | + klavaro | [] [] [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] () | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | | + libgnutls | [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] [] [] | + libidn | [] [] [] [] | + liferea | [] [] [] [] [] | + lilypond | [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | | + mailutils | | + make | [] [] [] [] | + man-db | [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] [] [] [] | + minicom | [] [] [] | + mkisofs | [] [] | + myserver | [] | + nano | [] [] [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] [] [] | + pies | | + pnmixer | [] [] | + popt | [] [] [] [] [] [] [] [] [] [] | + procps-ng | | + procps-ng-man | | + psmisc | [] [] [] [] | + pspp | [] [] | + pushover | [] | + pwdutils | [] | + pyspread | | + radius | [] | + recode | [] [] [] [] [] [] [] | + recutils | | + rpm | [] | + rush | [] | + sarg | | + sed | [] [] [] [] [] [] [] | + sharutils | | + shishi | | + skribilo | [] | + solfege | [] [] | + solfege-manual | | + spotmachine | | + sudo | [] [] [] [] | + sudoers | [] [] [] | + sysstat | [] [] [] [] | + tar | [] [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] [] [] | + tigervnc | | + tin | | + tin-man | | + tracgoogleappsa... | [] [] [] [] | + trader | [] [] | + util-linux | [] | + ve | [] | + vice | () () | + vmm | | + vorbis-tools | [] [] | + wastesedge | [] | + wcd | | + wcd-man | | + wdiff | [] [] [] | + wget | [] [] [] [] | + wyslij-po | [] [] [] | + xboard | | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] | + +-------------------------------------------------+ + ga gd gl gu he hi hr hu hy ia id is it ja ka kk + 35 2 47 4 8 2 60 71 2 6 81 11 87 57 0 3 + + kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl + +--------------------------------------------------+ + a2ps | [] [] | + aegis | [] | + anubis | [] [] [] | + aspell | [] [] | + bash | [] [] | + bfd | | + binutils | | + bison | [] | + bison-runtime | [] [] [] [] [] [] | + buzztrax | | + ccd2cue | | + ccide | [] [] | + cflow | [] | + clisp | [] | + coreutils | [] [] | + cpio | [] | + cppi | | + cpplib | [] | + cryptsetup | [] | + datamash | [] [] | + denemo | | + dfarc | [] [] | + dialog | [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] | + dink | [] | + direvent | [] | + doodle | [] | + dos2unix | [] [] | + dos2unix-man | [] | + e2fsprogs | [] | + enscript | [] | + exif | [] [] [] | + fetchmail | [] | + findutils | [] [] | + flex | [] | + freedink | [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] | + gjay | | + glunarclock | [] [] | + gnubiff | [] | + gnubik | [] [] | + gnucash | () () () () () () () [] | + gnuchess | [] [] | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] | + gprof | [] [] | + gramadoir | [] | + grep | [] [] | + grub | [] [] [] | + gsasl | [] | + gss | | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] | + gst-plugins-good | [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | [] [] [] | + gtick | [] | + gtkam | [] [] | + gtkspell | [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] | + hello | [] [] [] | + help2man | [] | + help2man-texi | | + hylafax | [] | + idutils | [] | + iso_15924 | () [] [] | + iso_3166 | [] [] [] () [] [] [] [] [] [] | + iso_3166_2 | () [] | + iso_4217 | () [] [] [] | + iso_639 | [] [] () [] [] [] [] | + iso_639_3 | [] () [] | + iso_639_5 | () | + jwhois | [] [] | + kbd | [] | + klavaro | [] [] | + ld | | + leafpad | [] [] [] [] [] | + libc | [] [] | + libexif | [] | + libextractor | [] | + libgnutls | [] [] | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | [] | + libiconv | [] [] | + libidn | [] | + liferea | [] [] [] | + lilypond | [] | + lordsawar | | + lprng | | + lynx | [] | + m4 | [] | + mailfromd | | + mailutils | | + make | [] [] | + man-db | [] | + man-db-manpages | [] | + midi-instruments | [] [] [] [] [] [] [] | + minicom | [] | + mkisofs | [] | + myserver | | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pies | | + pnmixer | [] | + popt | [] [] [] [] [] | + procps-ng | | + procps-ng-man | | + psmisc | [] | + pspp | [] [] | + pushover | | + pwdutils | [] | + pyspread | | + radius | [] | + recode | [] [] | + recutils | [] | + rpm | [] | + rush | [] | + sarg | | + sed | [] [] | + sharutils | [] | + shishi | | + skribilo | | + solfege | [] [] | + solfege-manual | [] | + spotmachine | [] | + sudo | [] [] [] | + sudoers | [] [] [] | + sysstat | [] [] | + tar | [] [] [] | + texinfo | [] | + texinfo_document | [] | + tigervnc | [] | + tin | | + tin-man | | + tracgoogleappsa... | [] [] [] | + trader | [] | + util-linux | [] | + ve | [] | + vice | [] | + vmm | [] | + vorbis-tools | [] | + wastesedge | [] | + wcd | [] | + wcd-man | [] | + wdiff | [] | + wget | [] [] | + wyslij-po | [] | + xboard | [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +--------------------------------------------------+ + kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl + 5 15 4 6 0 13 23 3 3 3 4 11 2 42 1 125 + + nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + +------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] | + aegis | [] [] | + anubis | [] [] [] | + aspell | [] [] [] [] [] [] [] | + bash | [] [] [] [] [] [] | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | [] | + ccd2cue | [] [] | + ccide | [] [] [] | + cflow | [] [] [] | + clisp | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + cppi | [] [] [] | + cpplib | [] [] [] | + cryptsetup | [] [] [] | + datamash | [] [] | + denemo | | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] | + dico | [] | + diffutils | [] [] [] | + dink | | + direvent | [] [] [] | + doodle | [] [] | + dos2unix | [] [] [] [] | + dos2unix-man | [] [] | + e2fsprogs | [] | + enscript | [] [] [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] [] [] | + freedink | [] [] [] [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | | + gcc | | + gdbm | [] [] [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] [] | + gjay | [] | + glunarclock | [] [] [] [] [] [] | + gnubiff | [] | + gnubik | [] [] [] [] | + gnucash | () () () () () [] | + gnuchess | [] [] | + gnulib | [] [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] | + grep | [] [] [] [] [] [] | + grub | [] [] [] [] [] | + gsasl | [] [] [] | + gss | [] [] [] [] | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] | + hello | [] [] [] [] [] [] | + help2man | [] [] [] [] | + help2man-texi | [] | + hylafax | | + idutils | [] [] [] | + iso_15924 | [] () [] [] [] [] | + iso_3166 | [] [] [] [] () [] [] [] [] [] [] [] [] | + iso_3166_2 | [] () [] | + iso_4217 | [] [] () [] [] [] [] [] | + iso_639 | [] [] [] () [] [] [] [] [] [] | + iso_639_3 | [] () | + iso_639_5 | () [] | + jwhois | [] [] [] [] | + kbd | [] [] | + klavaro | [] [] [] [] [] | + ld | | + leafpad | [] [] [] [] [] [] [] [] | + libc | [] [] [] | + libexif | [] () [] | + libextractor | [] | + libgnutls | [] | + libgphoto2 | [] | + libgphoto2_port | [] [] [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | [] [] [] | + liferea | [] [] [] [] () [] [] | + lilypond | | + lordsawar | | + lprng | [] | + lynx | [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] | + make | [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] [] | + midi-instruments | [] [] [] [] [] [] [] [] | + minicom | [] [] [] [] | + mkisofs | [] [] [] | + myserver | [] [] | + nano | [] [] [] [] [] [] | + opcodes | | + parted | [] [] [] [] [] [] | + pies | [] | + pnmixer | [] | + popt | [] [] [] [] [] [] | + procps-ng | [] | + procps-ng-man | [] | + psmisc | [] [] [] [] | + pspp | [] [] | + pushover | | + pwdutils | [] | + pyspread | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + recutils | [] [] | + rpm | [] | + rush | [] [] [] | + sarg | [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] | + shishi | [] [] | + skribilo | [] | + solfege | [] [] [] | + solfege-manual | [] [] | + spotmachine | [] [] | + sudo | [] [] [] [] [] [] | + sudoers | [] [] [] [] | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] [] | + tigervnc | [] [] [] | + tin | [] | + tin-man | | + tracgoogleappsa... | [] [] [] [] | + trader | [] [] | + util-linux | [] [] | + ve | [] [] [] | + vice | | + vmm | | + vorbis-tools | [] [] [] | + wastesedge | | + wcd | | + wcd-man | | + wdiff | [] [] [] [] [] | + wget | [] [] [] [] [] | + wyslij-po | [] [] [] [] | + xboard | [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + +------------------------------------------------+ + nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + 7 3 6 114 1 12 88 32 82 3 40 45 7 101 + + sv sw ta te tg th tr uk ur vi wa wo zh_CN + +----------------------------------------------+ + a2ps | [] [] [] [] [] | + aegis | [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] | + bison-runtime | [] [] [] [] [] [] | + buzztrax | [] [] [] | + ccd2cue | [] [] [] | + ccide | [] [] [] [] | + cflow | [] [] [] [] | + clisp | | + coreutils | [] [] [] | + cpio | [] [] [] [] [] | + cppi | [] [] [] [] | + cpplib | [] [] [] [] [] | + cryptsetup | [] [] [] | + datamash | [] [] [] | + denemo | [] | + dfarc | [] [] | + dialog | [] [] [] [] [] [] | + dico | [] | + diffutils | [] [] [] [] [] | + dink | [] | + direvent | [] [] | + doodle | [] [] | + dos2unix | [] [] [] [] | + dos2unix-man | [] [] [] | + e2fsprogs | [] [] [] [] | + enscript | [] [] [] [] | + exif | [] [] [] [] [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] | + freedink | [] [] [] | + fusionforge | | + gas | [] | + gawk | [] [] [] | + gcal | [] [] [] | + gcc | [] | + gdbm | [] [] | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] [] [] [] | + gjay | [] [] [] | + glunarclock | [] [] [] [] | + gnubiff | [] [] | + gnubik | [] [] [] [] | + gnucash | () () () () [] | + gnuchess | [] [] [] | + gnulib | [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] [] | + grep | [] [] [] [] [] | + grub | [] [] [] [] | + gsasl | [] [] [] [] | + gss | [] [] [] | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] [] [] | + hello | [] [] [] [] [] [] | + help2man | [] [] [] | + help2man-texi | [] | + hylafax | [] | + idutils | [] [] [] | + iso_15924 | [] () [] [] () [] | + iso_3166 | [] [] () [] [] () [] [] | + iso_3166_2 | () [] [] () [] | + iso_4217 | [] () [] [] () [] | + iso_639 | [] [] [] () [] [] () [] [] | + iso_639_3 | [] () [] [] () | + iso_639_5 | () [] () | + jwhois | [] [] [] [] | + kbd | [] [] [] [] | + klavaro | [] [] [] [] [] [] | + ld | [] [] [] [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] [] () | + libextractor | [] [] | + libgnutls | [] [] [] [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | () [] [] [] | + liferea | [] [] [] [] [] | + lilypond | [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] | + m4 | [] [] [] | + mailfromd | [] [] | + mailutils | [] | + make | [] [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] | + minicom | [] [] | + mkisofs | [] [] [] | + myserver | [] | + nano | [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] [] [] | + pies | [] [] | + pnmixer | [] [] [] | + popt | [] [] [] [] [] [] [] | + procps-ng | [] [] | + procps-ng-man | [] | + psmisc | [] [] [] [] | + pspp | [] [] [] | + pushover | [] | + pwdutils | [] [] | + pyspread | [] | + radius | [] [] | + recode | [] [] [] [] | + recutils | [] [] [] | + rpm | [] [] [] [] | + rush | [] [] | + sarg | | + sed | [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] [] | + skribilo | [] [] | + solfege | [] [] [] [] | + solfege-manual | [] | + spotmachine | [] [] [] | + sudo | [] [] [] [] [] | + sudoers | [] [] [] [] | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] | + tigervnc | [] [] [] | + tin | [] | + tin-man | | + tracgoogleappsa... | [] [] [] [] [] | + trader | [] | + util-linux | [] [] [] [] | + ve | [] [] [] [] | + vice | () () | + vmm | | + vorbis-tools | [] [] | + wastesedge | | + wcd | [] [] [] | + wcd-man | [] | + wdiff | [] [] [] [] | + wget | [] [] [] | + wyslij-po | [] [] | + xboard | [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + +----------------------------------------------+ + sv sw ta te tg th tr uk ur vi wa wo zh_CN + 106 1 4 3 0 13 51 115 1 125 7 1 100 + + zh_HK zh_TW + +-------------+ + a2ps | | 30 + aegis | | 9 + anubis | | 19 + aspell | | 29 + bash | [] | 23 + bfd | | 11 + binutils | | 12 + bison | [] | 18 + bison-runtime | [] | 38 + buzztrax | | 9 + ccd2cue | | 10 + ccide | | 17 + cflow | | 16 + clisp | | 10 + coreutils | | 18 + cpio | | 20 + cppi | | 17 + cpplib | [] | 19 + cryptsetup | | 14 + datamash | | 11 + denemo | | 5 + dfarc | | 17 + dialog | [] | 42 + dico | | 6 + diffutils | | 22 + dink | | 10 + direvent | | 11 + doodle | | 12 + dos2unix | [] | 18 + dos2unix-man | | 9 + e2fsprogs | | 15 + enscript | | 21 + exif | | 27 + fetchmail | | 19 + findutils | | 29 + flex | [] | 19 + freedink | | 24 + fusionforge | | 3 + gas | | 5 + gawk | | 13 + gcal | | 8 + gcc | | 2 + gdbm | | 10 + gettext-examples | [] [] | 40 + gettext-runtime | [] [] | 35 + gettext-tools | [] | 24 + gjay | | 9 + glunarclock | [] | 27 + gnubiff | | 9 + gnubik | | 19 + gnucash | () | 6 + gnuchess | | 11 + gnulib | | 23 + gnunet | | 1 + gnunet-gtk | | 1 + gold | | 7 + gphoto2 | [] | 19 + gprof | | 21 + gramadoir | | 14 + grep | [] | 31 + grub | | 21 + gsasl | [] | 19 + gss | | 17 + gst-plugins-bad | | 21 + gst-plugins-base | | 27 + gst-plugins-good | | 32 + gst-plugins-ugly | | 34 + gstreamer | [] | 32 + gtick | | 19 + gtkam | | 24 + gtkspell | [] [] | 48 + guix | | 2 + guix-packages | | 0 + gutenprint | | 15 + hello | [] | 30 + help2man | | 18 + help2man-texi | | 5 + hylafax | | 5 + idutils | | 14 + iso_15924 | [] | 23 + iso_3166 | [] [] | 58 + iso_3166_2 | | 9 + iso_4217 | [] [] | 28 + iso_639 | [] [] | 46 + iso_639_3 | | 10 + iso_639_5 | | 2 + jwhois | [] | 20 + kbd | | 17 + klavaro | | 30 + ld | [] | 15 + leafpad | [] | 39 + libc | [] | 24 + libexif | | 10 + libextractor | | 5 + libgnutls | | 13 + libgphoto2 | | 10 + libgphoto2_port | [] | 19 + libgsasl | | 18 + libiconv | [] | 29 + libidn | | 17 + liferea | | 29 + lilypond | | 11 + lordsawar | | 3 + lprng | | 3 + lynx | | 19 + m4 | [] | 22 + mailfromd | | 4 + mailutils | | 6 + make | | 19 + man-db | | 15 + man-db-manpages | | 10 + midi-instruments | [] | 43 + minicom | [] | 17 + mkisofs | | 13 + myserver | | 9 + nano | [] | 30 + opcodes | | 12 + parted | [] | 23 + pies | | 4 + pnmixer | | 9 + popt | [] | 36 + procps-ng | | 5 + procps-ng-man | | 4 + psmisc | [] | 22 + pspp | | 13 + pushover | | 6 + pwdutils | | 8 + pyspread | | 6 + radius | | 9 + recode | | 31 + recutils | | 10 + rpm | [] | 13 + rush | | 10 + sarg | | 4 + sed | [] | 35 + sharutils | | 13 + shishi | | 7 + skribilo | | 7 + solfege | | 21 + solfege-manual | | 9 + spotmachine | | 11 + sudo | | 26 + sudoers | | 22 + sysstat | | 23 + tar | [] | 30 + texinfo | | 17 + texinfo_document | | 13 + tigervnc | | 14 + tin | [] | 7 + tin-man | | 1 + tracgoogleappsa... | [] | 22 + trader | | 12 + util-linux | | 13 + ve | | 14 + vice | | 1 + vmm | | 3 + vorbis-tools | | 13 + wastesedge | | 3 + wcd | | 8 + wcd-man | | 3 + wdiff | [] | 23 + wget | | 21 + wyslij-po | | 14 + xboard | | 10 + xdg-user-dirs | [] [] | 68 + xkeyboard-config | [] | 28 + +-------------+ + 89 teams zh_HK zh_TW + 166 domains 7 42 2809 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are @@ -594,32 +1350,30 @@ used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to -which it applies should also have been internationalized and -distributed as such by its maintainer. There might be an observable -lag between the mere existence a PO file and its wide availability in a -distribution. - - If May 2003 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at -`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. - -Using `gettext' in new packages -=============================== - - If you are writing a freely available program and want to -internationalize it you are welcome to use GNU `gettext' in your -package. Of course you have to respect the GNU Library General Public -License which covers the use of the GNU `gettext' library. This means -in particular that even non-free programs can use `libintl' as a shared -library, whereas only free software can use `libintl' as a static -library or use modified versions of `libintl'. +which it applies should also have been internationalized and distributed +as such by its maintainer. There might be an observable lag between the +mere existence a PO file and its wide availability in a distribution. + + If Jun 2014 seems to be old, you may fetch a more recent copy of this +'ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix +with full percentage details can be found at +'http://translationproject.org/extra/matrix.html'. + +1.5 Using 'gettext' in new packages +=================================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU 'gettext' in your +package. Of course you have to respect the GNU Lesser General Public +License which covers the use of the GNU 'gettext' library. This means +in particular that even non-free programs can use 'libintl' as a shared +library, whereas only free software can use 'libintl' as a static +library or use modified versions of 'libintl'. Once the sources are changed appropriately and the setup can handle -the use of `gettext' the only thing missing are the translations. The +the use of 'gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact -`translation@iro.umontreal.ca' to make the `.pot' files available to -the translation teams. - +'coordinator@translationproject.org' to make the '.pot' files available +to the translation teams. diff --git a/CHANGES b/CHANGES index 4eb96c0e9..bce097c40 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,124 @@ +This document details the changes between this version, bash-5.0-beta, and +the previous version, bash-5.0-alpha. + +1. Changes to Bash + +a. Fixed a bug that allowed subshells to "inherit" enclosing loops -- this + is where POSIX says the subshell is not "enclosed" by the loop. + +b. Added more UTF-8-specific versions of multibyte functions, and optimized + existing functions if the current locale uses UTF-8 encoding. + +c. In POSIX mode, assignments preceding regular builtins should not persist + when the builtin completes. + +d. Added additional checks to special array assignment (e.g., BASH_ALIASES) + so it can't be used to bypass validity checks performed in other places. + +e. The `!!' history expansion now refers to the previous history entry as + expected, even if used on the second or subsequent line of a multi-line + history entry. + +f. Fixed a bug that could cause the shell to dereference a NULL pointer if + the environment (`environ') is set to NULL. + +g. Bash uses slightly better integer overflow handling for brace sequence + expansion on systems where ints are 32 bits and intmax_t is 64 bits. + +h. Fixed a bug setting attributes for a variable named as an argument to + `declare' that also appears as a nameref in the temporary environment. + +i. Fixed several bugs that could cause assignments to namerefs to create + variables with invalid names. + +j. Fixed a bug that could result in the SIGINT handler being set incorrectly + in asynchronous subshells. + +k. Fixed a bug that could cause `bash -t' to not execute the specified command. + +l. Fixed several bugs that caused the shell to operate on the wrong variable + when using namerefs with the same name as a global variable in shell + functions. + +m. Internal changes to how the shell handles variables with invalid names in + the initial environment and to prevent variables with invalid names from + being added to the environment instead of passing them on to children. + +n. Changes to make sure that an expansion that results in a quoted null string + is reflected in the expansion, even if the word expands to nothing. + +o. Changes to make sure that $* and ${array[*]} (and $@/${array[@]}) expand + the same way after the recent changes for POSIX interpretation 888. + +p. Saving and restoring the positional parameters at function entry and exit + is considerably more efficient; noticeably so when there are large numbers + of positional parameters. + +q. Fixed a bug that caused `lastpipe' and `pipefail' to return an incorrect + status for the pipeline if there was more than one external command in a + loop body appearing in the last pipeline element. + +r. Fixed a bug that caused value conversion errors with the printf builtin's + %u and %f conversion specifications and invalid constants. + +2. Changes to Readline + +a. Added more UTF-8-specific versions of multibyte functions, and optimized + existing functions if the current locale uses UTF-8 encoding. + +b. Fixed a problem with bracketed-paste inserting more than one character and + interacting with other readline functions. + +c. Fixed a bug that caused the history library to attempt to append a history + line to a non-existent history entry. + +d. If using bracketed paste mode, output a newline after the \r that is the + last character of the mode disable string to avoid overwriting output. + +e. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better + handle multibyte characters. + +f. Fixed a redisplay problem that caused an extra newline to be generated on + accept-line when the line length is exactly the screenwidth. + +3. New Features in Bash + +a. Bash no longer allows variable assignments preceding a special builtin that + changes variable attributes to propagate back to the calling environment + unless the compatibility level is 44 or lower. + +b. You can set the default value for $HISTSIZE at build time in config-top.h. + +c. The `complete' builtin now accepts a -I option that applies the completion + to the initial word on the line. + +d. The internal bash malloc now uses mmap (if available) to satisfy requests + greater than 128K bytes, so free can use mfree to return the pages to the + kernel. + +e. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup + unless it's in debugging mode, as the documentation has always said, but + will dynamically create them if a script references them at the top level + without having enabled debugging mode. + +f. The localvar_inherit option will not attempt to inherit a value from a + variable of an incompatible type (indexed vs. associative arrays, for + example). + +g. The `globasciiranges' option is now enabled by default; it can be set to + off by default at configuration time. + +4. New Features in Readline + +a. The history expansion library now understands command and process + substitution and extended globbing and allows them to appear anywhere in a + word. + +b. The history library has a new variable that allows applications to set the + initial quoting state, so quoting state can be inherited from a previous + line. + +------------------------------------------------------------------------------ This document details the changes between this version, bash-5.0-alpha, and the previous version, bash-4.4-release. @@ -195,11 +316,11 @@ kkk. Fixed a problem with arithmetic expressions containing array references lll. The `select' command and help builtin will use $COLUMNS before the window size returned from the kernel as the terminal width. -mmm. `read -n 0' and `read -N 0' now try a zero-length read to attempt to +mmm. `read -n 0' and `read -N 0' now try a zero-length read in an attempt to detect file descriptor errors. nnn. The `read' builtin now does a better job of acting on signals that don't - interrrupt read(2). + interrupt read(2). ooo. Fixed some cases where `printf -v' did not return failure status on a variable assignment error. @@ -208,7 +329,7 @@ ppp. Fixed temporary environment propagation back to the current environment so that it doesn't happen for special builtins run by the `command' builtin. -qqq. Fixed a bug when searhing for the end of a here-document delimiter in a +qqq. Fixed a bug when searching for the end of a here-document delimiter in a command substitution. rrr. Fixed a bug that could cause `cd ${DIRSTACK[0]}' to fail. @@ -359,7 +480,7 @@ d. Added support for keyboard timeouts when an ESC character is the last e. There are several performance improvements when in a UTF-8 locale. -f. Readline does a better job of preserving the original set of blocked = +f. Readline does a better job of preserving the original set of blocked signals when using pselect() to wait for input. g. Fixed a bug that caused multibyte characters in macros to be mishandled. diff --git a/COMPAT b/COMPAT index aa0019fa7..ce6a791cb 100644 --- a/COMPAT +++ b/COMPAT @@ -396,6 +396,15 @@ above. BASH_ARGC and BASH_ARGV is available at compatibility levels less than or equal to 44. +61. Bash-5.0 doesn't allow a `break' or `continue' in a subshell to attempt + to break or continue loop execution inherited from the calling context. + +62. Bash-5.0 doesn't allow variable assignments preceding builtins like + export and readonly to modify variables with the same name in preceding + contexts (including the global context) unless the shell is in posix + mode, since export and readonly are special builtins. + + Shell Compatibility Level ========================= @@ -451,15 +460,22 @@ compat43 set (declare -a foo='(1 2)') - word expansion errors are considered non-fatal errors that cause the current command to fail, even in Posix mode - - when executing a shell function, the loop state (while/until/etc.) is - not reset, so `break' or `continue' in a shell function will break or - continue loops in the calling context. Bash-4.4 and later reset the - loop state to prevent this. + - when executing a shell function, the loop state (while/until/etc.) + is not reset, so `break' or `continue' in that function will break + or continue loops in the calling context. Bash-4.4 and later reset + the loop state to prevent this. compat44 set - the shell sets up the values used by BASH_ARGV and BASH_ARGC so they can expand to the shell's positional parameters even if extended debug mode is not enabled + - a subshell inherits loops from its parent contenxt, so `break' + or `continue' will cause the subshell to exit + - variable assignments preceding builtins like export and readonly + that set attributes continue to affect variables with the same + name in the calling environment even if the shell is not in posix + mode + ------------------------------------------------------------------------------- diff --git a/CWRU/changelog b/CWRU/changelog index 61e07c0dc..9f00b946e 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -1,15391 +1,4305 @@ - 2/14/2011 + 9/15/2016 --------- -[bash-4.2 released] +[bash-4.4 released] - 2/15 + 9/17 ---- -lib/glob/gmisc.c - - fix wmatchlen and umatchlen to avoid going past the end of the - string on an incomplete bracket expression that ends with a - NUL. Partial fix for bug reported by Clark Wang +builtins/common.c + - display_signal_list: if 0 is supplied as an argument to kill -l, + display a signal-out-of-range error. Fixes bug reported by + Martijn Dekker - 2/16 + 9/18 ---- -subst.h - - new string extract flag value: SX_WORD. Used when calling - extract_dollar_brace_string to skip over the word in - ${param op word} from parameter_brace_expand - -subst.c - - change parameter_brace_expand to add SX_WORD to flags passed to - extract_dollar_brace_string - - change parameter_brace_expand to use SX_POSIXEXP for all non-posix - word expansion operators that treat single quotes as special, not - just % and # - - change extract_dollar_brace_string to initialize dolbrace_state to - DOLBRACE_WORD if SX_WORD flag supplied and we shouldn't use - DOLBRACE_QUOTE. Fixes bug reported by Juergen Daubert - -doc/{bash.1,bashref.texi} - - document the exact expansions here strings undergo +print_cmd.c + - print_heredoc_bodies: take a list of redirections, all here documents, + and print the here-document bodies including the ending delimiter, + followed by a newline + - print_redirection_list: print the heredoc headers the first time + through the list of redirections so we print them in the same left- + to-right order they're supplied; print the bodies and delimiters with + print_heredoc_bodies after we print all the redirections if we're + not printing a list of commands (printing_connection == 0). Fix for + problem reported by Isabella Parakiss + - print_deferred_heredocs: don't print heredoc headers, since they're + now printed in print_redirection_list + - print_deferred_heredocs: use print_heredoc_bodies - 2/17 + 9/20 ---- -lib/readline/vi_mode.c - - make sure that `dd', `cc', and `yy' call vidomove_dispatch from - rl_domove_read_callback. Fixes bug reported by Clark Wang - +builtins/mapfile.def + - readarray: update usage synopsis to include -d delim. Report and + fix from jhankins@homewood.k12.al.us -lib/readline/callback.c - - make sure _rl_internal_char_cleanup is called after the - vi-motion callbacks (rl_vi_domove_callback) in rl_callback_read_char. - Companion to above fix +test.c + - test_binop: if op[0] == '-', make sure op[1] != 0 before checking + op[2] or op[3]. Fixes out-of-bounds read reported by Franco + Costantini -doc/{bash.1,bashref.texi} - - make sure that the text describing the rhs of the == and =~ - operators to [[ states that only the quoted portion of the pattern - is matched as a string +parse.y + - cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0 + before checking word[2] and calling test_unop. Fixes out-of-bounds + read reported by Franco Costantini + - make sure to check all instances of the return value of the + simple_command production before trying to hook redirections onto it, + since it can potentially return NULL. + Reported by Franco Costantini - 2/18 + 9/21 ---- -lib/glob/gmisc.c - - better fix for umatchlen/wmatchlen: keep track of the number of - characters in a bracket expression as the value to increase - matchlen by if the bracket expression is not well-formed. Fixes - bug reported by Clark Wang +parse.y + - token_is_assignment: make sure to check that the return value from + assignment() finds the `=' we just added at index I to avoid false + positives from g=g=g=g=g=g=(). Reported by Franco Costantini + -subst.c - - change expand_string_for_rhs so that it sets the W_NOSPLIT2 flag - in the word flags. We will not perform word splitting or quote - removal on the result, so we do not want to add quoted nulls if - we see "" or ''. Fixes bug reported by Mike Frysinger - + 9/22 + ---- +parse.y + - token_is_assignment: if we're not using the bash malloc (which has + guard bytes after the requested allocation size), use a new + buffer so we can make sure it's big enough to hold the current + token and at least two additional characters. Reported by + Franco Costantini - 2/19 + 9/23 ---- -variables.c - - new function, int chkexport(name), checks whether variable NAME is - exported and remakes the export environment if necessary. Returns - 1 if NAME is exported and 0 if not - - call chkexport(name) to get tzset to look at the right variable in - the environment when modifying TZ in sv_tz. Don't call tzset if - chkexport doesn't indicate that the variable is exported +execute_command.c + - execute_in_subshell: call without_job_control for both job control + and non-job-control builds to avoid waiting for last_made_pid + inherited from parent shell. Related to fix from 8/4 to + initialize_subshell. Fixes bug reported by Martijn Dekker + -variables.h - - new extern declaration for chkexport +builtins/declare.def + - local_builtin: allow `local --help' to work even when not executing + a function. Suggestion from Norm Abramovitz + 9/25 + ---- +builtins/printf.def + - bexpand: if passed a null or empty string, return a newly-allocated + empty string (so the return value can always be freed) instead of + NULL. + - printstr: if passed a null string, treat it as if it were an empty + string so any precision or fieldwidth arguments are handled + correctly. Report from isabella parakiss -{parse.y,builtins/printf.def} - - call sv_tz before calling localtime() when formatting time strings - in prompt strings or using printf. Fixes bug reported by - Dennis Williamson +subst.c + - skip_matched_pair: make the flags argument of 1 affect whether or + not backslash can quote characters in the string, so it affects + all quoting mechanisms -execute_cmd.c - - modify fix of 2/9 to add casts when those variables are passed to - functions; some compilers throw errors instead of warnings. Report - and fix from Joachim Schmitz +arrayfunc.c + - unbind_array_element: now takes a third (flags) argument; flags&1 + means to not expand an associative array index. This is only called + from a shell builtin context, which means the argument should have + already undergone word expansion, so it should be ok. Will still + be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid + globbing + - valid_array_reference: pass second flags argument to skipsubscript; + still set to 0 by all callers -support/shobj-conf - - add a stanza for nsk on the Tandem from Joachim Schmitz - +arrayfunc.h + - unbind_array_element: updated prototype -{shell,lib/readline/shell}.c - - Tandem systems should use getpwnam (getlogin()); for some reason - they don't do well with using getuid(). Fix from Joachim Schmitz - +builtins/set.def + - unset_builtin: add third argument of 1 to unbind_array_element calls + [TEMPORARILY DISABLED] + - unset_builtin: call valid_array_reference with second arg of 1 to + handle unmatched pairs of quotes and [/] - 3/1 - --- -variables.c - - make sure that the return value from find_variable is non-null - before trying to use it in chkexport. Fixes bug reported by - Evangelos Foutras +array.c + - array_reference: optimize access locality as well as sequential + access by adding ability to start from last-accessed element and move + backwards or forwards depending on the desired index. Inspired by + report from Tom McCurdy and followup from + Christian Franke - 3/3 - --- -parse.y - - when adding $$ to the current token buffer in read_token_word(), - don't xmalloc a buffer for two characters and then strcpy it, just - copy the characters directly into the token buffer. Fix from - Michael Whitten +variables.c + - all_array_variables: include associative arrays, not just indexed + arrays. Reported by Grisha Levit execute_cmd.c - - fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to - be expanded, so "" doesn't add CTLNUL. Similar to fix of 2/18 to - expand_string_for_rhs. Fixes bug reported by Nathanael D. Noblet - and Matthias Klose - -parse.y - - fix extended_glob case of read_token_word to allocate an extra - space in the buffer for the next character read after the extended - glob specification if it's a CTLESC or CTLNUL. Report and fix from - Michael Witten - - fix shell expansions case of read_token_word to allocate an extra - space in the buffer for the next character read after the shell - expansion if it's a CTLESC or CTLNUL. Report and fix from - Michael Witten - - TENTATIVE: fix read_token_word to reduce the amount of buffer space - required to hold the translated and double-quoted value of $"..." - strings. Report and fix from Michael Witten - - change code around got_character and got_escaped_character labels to - make sure that we call RESIZE_MALLOCED_BUFFER before adding the - CTLESC before a CTLESC or CTLNUL, and before adding the character if - we're not adding a CTLESC. Report and fix from - Michael Witten - -subst.c - - new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that - parameter expansion is on rhs of assignment statement. That inhibits - word splitting - - change param_expand to call string_list_dollar_at with quoted == 1 - if PF_ASSIGNRHS is set, so it will quote IFS characters in the - positional parameter before separating them with the first char of - $IFS. This keeps the rhs from being split inappropriately. Fixes - bug reported by Andres Perera + - execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK), + decrement the shell level so we don't end up incrementing it twice. + We should decrement the shell level for an implicit exec like an + explicit one. Reported by Stephane Chazelas + - 3/4 - --- -lib/readline/bind.c - - add a missing free of `names' in rl_function_dumper. Bug report - and fix from Michael Snyder +builtins/exec.def + - exec_builtin: don't bother to decrement the shell level if we are + already in a `(command)' subshell. Reported by Stephane Chazelas + - 3/5 - --- -lib/readline/rltty.c - - change rl_deprep_terminal so it uses fileno (stdin) for the tty fd - if rl_instream is not set, like rl_prep_terminal +lib/readline/macro.c + - macro_level: count of macro nesting level, maintained by + _rl_push_executing_macro and _rl_pop_executing macro + - _rl_with_macro_input: if current nesting level exceeds + MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal + and return to the top level. Reported by Christian Klomp + - 3/6 - --- -lib/readline/display.c - - fix rl_message to use a dynamically-allocated buffer instead of a - fixed-size buffer of 128 chars for the `local message prompt'. Bug - report and fix from Micah Cowan +lib/readine/history.c + - add_history: if allocating the history list for the first time, + make sure the max history list size isn't so large that it will + cause allocation errors. Cap it at MAX_HISTORY_INITIAL_SIZE + (8192). Reported by Sean Zha - 3/7 - --- jobs.c - - add sentinel to wait_sigint_handler so it only sets wait_sigint_received - if waiting_for_child is non-zero; otherwise, it restores the old - SIGINT handler and sends itself the SIGINT - - set waiting_for_child around the calls to waitchld that use it to - synchronously wait for a process - - change logic that decides whether or not the child process blocked - or handled SIGINT based on whether or not waitpid returns -1/EINTR - and the shell receives a SIGINT and the child does not exit. If - the child later exits due to SIGINT, cancel the assumoption that it - was handled - - instead of testing whether or not the child exited due to SIGINT - when deciding whether the shell should act on a SIGINT it received - while waiting, test whether or not we think the child caught - SIGINT. If it did, we let it go (unless the shell has it trapped); - if it did not catch it, the shell acts on the SIGINT. Fix from - Linus Torvalds , bug report originally - from Oleg Nesterov - - 3/8 - --- -shell.c - - initialize no_line_editing to 1 if READLINE is not defined -- we - can't have line editing without readline + - wait_for: if a foreground job with job control enabled is killed by a + SIGINT and sourcelevel != 0, act as if we received the SIGINT so the + file sourcing can be terminated. Reported by PePa + - 3/12 + 9/26 ---- -lib/readline/signals.c - - add SIGHUP to the set of signals readline handles - -lib/readline/doc/rltech.texi - - document that SIGHUP is now part of the set of signals readline - handles - -lib/readline/input.c - - if _rl_caught_signal indicates that read() was interrupted by a - SIGHUP or SIGTERM, return READERR or EOF as appropriate - - call rl_event_hook, if it's set, if call to read in rl_getc - returns -1/EINTR. If rl_event_hook doesn't do anything, this - continues the loop as before. This handles the other fatal - signals - -execute_cmd.c - - add a couple of QUIT; calls to execute_disk_command and - execute_simple_command to improve responsiveness to interrupts - and fatal signals - -input.c - - rearrange getc_with_restart so that the return values from read() - are handled right - -parse.y - - don't need to set terminate_immediately in yy_stream_get, since - getc_with_restart checks for terminating signals itself - - since readline returns READERR on SIGHUP or SIGTERM, don't need - to set terminate_immediately. Still doesn't handle other - signals well -- will have to check that some more - -bashline.c - - new function, bash_event_hook, for rl_event_hook. Just checks for - terminating signals and acts on them using CHECK_TERMSIG. - - set rl_event_hook to bash_event_hook - -builtins/read.def - - take out setting terminate_immediately; add calls to CHECK_TERMSIG - after read calls +subst.c + - read_comsub: only warn once for null bytes in command substitution + output, instead of once for every null byte -doc/{bash.1,bashref.texi} - - move the text describing the effect of negative subscripts used to - reference indexed array elements to the paragraphs describing - ${parameter[subscript]}, since that's where they are implemented. - Pointed out by Christopher F. A. Johnson +arrayfunc.c + - array_variable_part: now takes a `flags' argument; changed all callers + to initially pass 0 + - array_variable_name: now takes a `flags' argument; changed all callers + to initially pass 0 + - array_variable_name: pass `flags' argument to skipsubscript instead + of just passing 0 -arrayfunc.[ch],subst.c - - array_expand_index now takes a new first argument: a SHELL_VAR * - of the array variable being subscripted. Can be used later to fully - implement negative subscripts +arrayfunc.h + - array_variable_{name,part}: added new argument to prototypes - 3/14 + 9/29 ---- -lib/glob/glob.c - - fix mbskipname to not turn the directory entry name into a wide char - string if the conversion of the pattern to a wide char string fails - - fix mbskipname to call skipname if either the pattern or the filename - can't be converted into a wide-char string +bashline.c + - bash_directory_completion_hook: don't bother to try and expand a + ${ or $( that isn't complete; expand_prompt_string will complain. + Fixes reports from John Passaro and + Valentin Bajrami -lib/glob/xmbsrtowcs.c - - fix xdupmbstowcs2 to handle return value of 0 from mbsnrtowcs and - short-circuit with failure in that case. Fixes bug reported by - Roman Rakus +lib/readline/history.c + - _hs_append_history_line: use a strategy that attempts to avoid + realloc copying memory to a newly-allocated block if the history + line we're appending to gets `too long' (currently 256 bytes). + We reallocate in powers of 2 starting at 512, and rely on realloc + not allocating a new block and copying into it if the size is the + same as the last call to realloc. Addresses issue raised by + Hubert Schmid - 3/15 - ---- -bashline.c - - new variable, bash_filename_quote_characters to store the value - assigned to rl_filename_quote_characters so it can be restored - if changed. - - change bashline_reset and attempt_shell_completion to restore - rl_filename_quote_characters if not set to default +trap.h + - check_signals: new extern declaration + - trapped_signal_received: new extern declaration - 3/22 - ---- -lib/glob/glob.c - - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs - fails to convert the pathname to a wide-character string +builtins/read.def + - read_builtin: if one of the zread* functions returns < 0 (which + usually only happens in Posix mode), make sure we call check_signals() + before eventually calling run_pending_traps() because zread() isn't + going to call it + - include trap.h for correct extern functions and variable declarations -lib/glob/xmbsrtowcs.c - - xdupmbstowcs2: change to fix problem with leading '\\' (results in - nms == 0, which causes it to short-circuit with failure right - away). Fixes bug pointed out by Werner Fink - - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the - next single-byte character and going on - - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC - bytes; try to avoid calls to realloc (even if they don't actually - result in more memory being allocated) +lib/sh/zread.c + - zread: if executing a builtin, call check_signals_and_traps() for + backwards compatibility. If not, call check_signals() only, because + we don't want to run traps during, for instance, reading command + substitution output. Fixes race condition bug reported by Luiz Angelo + Daros de Luca - 3/24 + 9/30 ---- -doc/{bash.1,bashref.texi} - - slightly modify BASH_SUBSHELL description based on complaint from - Sam Liddicott +subst.c + - command_substitute: reset parse_and_execute_level to 0 in the child + process, since it's independent of the other parse_and_execute + calls. Adds command substitution inside other parse_and_execute + calls optimizations to suppress forks, as suggested by + Martijn Dekker - 3/25 + 10/3 ---- -trap.c - - change free_trap_strings to not call free_trap_string for signals - that are being ignored, like reset_or_restore_signal_handlers. - Fixes bug reported by Satoshi Takahashi +configure.ac + - SHOBJ_STATUS: make sure it defaults to unsupported and is substituted + if the shobj-conf script isn't run. Fixes `make install' bug with + a minimal config reported by Andrew Tomazos - 3/26 + 10/5 ---- -lib/readline/rltypedefs.h - - remove old Function/VFunction/CPFunction/CPPFunction typedefs as - suggested by Tom Tromey - -lib/readline/rlstdc.h - - move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from - config.h.in to here because declaration of rl_message in - readline.h uses the defines. This makes it hard for another packages - to use after the header files are installed, since config.h is not - one of the installed files. Suggested by Tom Tromey - +support/shobj-conf + - darwin: set compatibility_version for a shared build of the readline + library (the standalone readline distribution shares this file) to + $(SHLIB_MAJOR)$(SHLIB_MINOR). Recommendation from Max Horn + - 3/27 + 10/6 ---- -print_cmd.c - - change indirection_string from a static buffer to a dynamic one - managed by indirection_level_string(), so we don't end up truncating - PS4. Suggested by Dennis Williamson - -lib/readline/shell.c - - change sh_set_lines_and_columns to use static buffers instead of - allocating the buffers to pass to setenv/putenv - -lib/readline/terminal.c - - change _rl_get_screen_size to not call sh_set_lines_and_columns if - ignore_env == 0 - - _rl_sigwinch_resize_terminal: new function to just retrieve terminal - size, ignoring environment +array.h + - array_first_index: new convenience define -lib/readline/rlprivate.h - - new external declaration for _rl_sigwinch_resize_terminal() (currently - unused) - -lib/readline/signals.c - - rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH - - rl_sigwinch_handler: don't immediately call rl_resize_terminal; just - leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle - - _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH. - Should fix hang when sending multiple repeated SIGWINCH reported by - Henning Bekel +array.c + - ADD_AFTER: new define, complement of ADD_BEFORE + - UNSET_LASTREF: now takes an array as an argument, prepping for move + of lastref pointer into the array struct + - array_insert: check whether we are adding at the beginning of the + array and take a fast path if so + - array_insert: use same strategy as array_reference to find the place + to insert, starting from the last-referenced element and moving + forward or back from there; use ADD_AFTER if moving backward + - array_insert: if replacing an existing element, just replace the + value with new->value instead of the entire element + - array_reference: short-circuit quickly if looking for an element + before the first assigned index + - array_reference: if we don't find the element, leave lastref pointing + to the closest element under the assumption we will be assigning or + looking for something close + - array_reference: take advantage of ordered indexes to short-circuit + when looking for element that is not set - 3/29 + 10/7 ---- -lib/sh/snprintf.c - - include math.h for any defines for isinf/isnan - - use code from gnulib documentation to implement isinf/isnan if they - are not defined +array.c + - array_remove: short-circuit if asked to remove index after max + index or before first index -configure.in - - don't check for isinf or isnan; c99 says they're macros anyway + 10/10 + ----- +lib/malloc/malloc.c + - internal_realloc: if we are requesting reallocation to the same size + as the block's current size, short-circuit and return `mem' right + after doing bounds check + - internal_realloc: if we are reducing the size of an allocation, and + the new size fits in the next lower bin, just keep the same block + and adjust the size, so we can avoid some copies -config.h.in - - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used - by snprintf.c +parse.y + - set_line_mbstate: keep track of the allocated size of + shell_input_line_property, only request reallocation if the size + increases, but don't let it get too big - 4/2 - --- -braces.c - - brace_gobbler: fix to understand double-quoted command substitution, - since the shell understands unquoted comsubs. Fixes bug reported - by Michael Whitten + 10/11 + ----- +jobs.c + - wait_for_background_pids: make sure we wait for pid in + last_procsub_child since it's not found in any job -- still needs + more work to wait for multiple process substitutions -lib/readline/display.c - - include on MDOS - - get and set screen size using DJGPP-specific calls on MSDOS - - move cursor up clear screen using DJGPP-specific calls - - don't call tputs on DJGPP; there is no good terminfo support +subst.c + - process_substitute: if make_child fails, make sure we call + restore_pipeline to undo the previous save_pipeline() -lib/readline/terminal.c - - include on MDOS - - get and set screen size using DJGPP-specific calls on MSDOS - - use DJGPP-specific initialization on MSDOS, zeroing all the - _rl_term_* variables - - don't call tputs on DJGPP; there is no good terminfo support - DJGPP support from Eli Zaretskii + 10/15 + ----- +subst.c + - process_substitute,command_substitute: leave subshell_level (reflected + as $BASH_SUBSHELL) intact for any exit trap instead of decrementing + it. Suggested by Martijn Dekker - 4/6 - --- +builtins/evalstring.c + - optimize_subshell_command: new function, framework for optimizing + out forks for command that have already forked and are executing + in a subshell. Not used yet -config-top.h - - change DEFAULT_PATH_VALUE to something more useful and modern +expr.c + - readtok: if we have a post-increment or post-decrement, and the + previous token is not a string, check whether the previous token is + a number that results from a pre-increment or pre-decrement, and + make that an error. Report from Conrad Hoffmann - 4/8 - --- -tests/printf2.sub - - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect. - Reported by Cedric Arbogast + 10/16 + ----- +aclocal.m4 + - BASH_JOB_CONTROL_MISSING: convert from AC_TRY_RUN to AC_TRY_COMPILE + with existing set of preprocessor defines, so it can work when + cross-compiling. Suggested by Felix Janda - 4/11 - ---- -include/chartypes.h - - fix a couple of dicey defines (though ones that don't cause any - compiler warnings) in IN_CTYPE_DOMAIN + 10/19 + ----- +variables.c + - get_bashpid: BASHPID is no longer readonly; assignments to it are + just ignored. -doc/{bashref.texi,bash.1} - - add note referring to duplicating file descriptors in sections - describing redirecting stdout and stderr and appending to stdout - and stderr. Suggested by Matthew Dinger +doc/{bash.1,bashref.texi} + - BASHPID: note that assignments are ignored and unsetting BASHPID + causes it to lose its special properties -pcomplete.c - - it_init_helptopics: new function to support completing on help topics, - not just builtins - - it_helptopics: new programmable completion list of help topics - - build list of helptopic completions in gen_action_completions on - demand + 10/28 + ----- +builtins/pushd.def + - popd_builtin: make sure to check the normalized stack offset + (i.e., negatives counting back from the end of the stack) is within + bounds before trying to free that stack entry. Report from + Fernando Muñoz -pcomplete.h - - new extern declaration for it_helptopics +lib/readline/histfile.c + - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from + J. Peter Mugaas -builtins/complete.def - - the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN, - since there are more help topics than just builtins. Suggested by - Clark Wang +lib/readline/colors.c + - S_ISDIR: add define if missing + - S_ISUID, S_ISGID, S_ISLNK, S_ISSOCK: don't use unless defined. + Fixes for MinGW{64,32} from J. Peter Mugaas - 4/12 - ---- -print_cmd.c - - fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS - before ending the body of the command, so heredocs get attached to - the right command instead of to the loop. From gentoo bug 363371 - http://bugs.gentoo.org/show_bug.cgi?id=363371 +bashhist.c + - current_command_line_comment: set to the most recent line in a + possibly multi-line command that contains a shell comment; set in + maybe_add_history and bash_add_history to either the current + command number or -2 + - maybe_add_history: set current_command_line_comment for first line + of command + - bash_add_history: chars_to_add set to "\n" if the current command line + is one greater than the previous line containing a comment + (current_command_line_comment). Fixes complaint from back in + January, 2016 from Dave Rutherford -execute_cmd.c - - change coproc_pidchk to unset the appropriate shell variables when - the (currently single) known coproc pid terminates - - cleanup and new functions to fully support multiple coprocesses when - and if I decide to go there +array.h + - lastref: move last-referenced pointer into each array struct, so all + arrays can have reference locality - 4/13 - ---- -print_cmd.c - - fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS - after call to make_command_string_internal before printing closing - `}' - - fix make_command_string_internal to add a call to - PRINT_DEFERRED_HEREDOCS after recursive call to - make_command_string_internal in case cm_subshell before printing - closing `)' +array.c + - array_create: set lastref element to 0 + - array_copy: if copying the lastref in array a, set the new lastref + in the copy to the same element + - IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF, + UNSET_LASTREF: change to use new array `lastref' member - 4/14 - ---- -print_cmd.c - - change overlapping strcpy in named_function_string to memmove +pathexp.c + - quote_string_for_globbing: if quoting for a regexp, make sure to + skip and copy a leading `^' in a bracket expression, and skip and + copy a subsequent `]' (after an optional `^'), so that leading + bracket doesn't close the bracket expression. Report from + Stephane Chazelas -sig.h - - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just - restores an old signal mask + 10/29 + ----- +subst.c + - extract_delimited_string: add calls to CHECK_STRING_OVERRUN for + $( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes + - skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${, + process substitution + - extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for + $( + - extract_dollar_brace_string: use skipsubscript to skip over the + array subscript in ${var[sub]} (non-quoted case uses string_extract, + which already uses skipsubscript). Tagged for bash-5.0 -trap.c - - set_signal: instead of setting the signal handler to SIG_IGN while - installing the new trap handler, block the signal and unblock it - after the new handler is installed. Fixes bug reported by Roman - Rakus + 10/30 + ----- +variables.c + - EPOCHSECONDS: new dynamic variable, time in seconds since Unix + epoch; assignments are ignored. Can be used on systems where + strftime() doesn't support '%s' + - EPOCHREALTIME: new dynamic variable, time in seconds since Unix + epoch with microsecond granularity - 4/15 - ---- doc/{bash.1,bashref.texi} - - make it clear that enabling monitor mode means that all jobs run in - separate process groups + - EPOCHSECONDS documentation + - EPOCHREALTIME documentation - 4/18 - ---- -builtins/fc.def - - update fix of 4/15/2010 to not take saved_command_line_count into - account when stepping down the history list to make sure that - last_hist indexes something that is valid. Fixes bug reported by - +execute_cmd.c + - decpoint: moved to locale.c, renamed locale_decpoint; changed callers - 4/19 - ---- -builtins/fc.def - - fc_gethnum: make sure the calculation to decide the last history - entry is exactly the same as fc_builtin. Fixes bug uncovered by - fix of 4/18 to stop seg fault +{bashintl,externs}.h + - locale_decpoint: extern declaration or #define if support for + localeconv() not there - 4/22 - ---- -lib/readline/terminal.c - - change _rl_enable_meta_key to set a flag indicating that it sent the - enable-meta sequence - - _rl_disable_meta_key: new function to turn off meta mode after we - turned it on with _rl_enable_meta_key + 10/31 + ----- +lib/malloc/malloc.c + - posix_memalign: add new posix-mandated interface -lib/readline/rlprivate.h - - extern declaration for _rl_disable_meta_key +examples/loadables/rm.c + - rm: minimal loadable builtin, removes files and directories, only + handles -r and -f options. Original from Tim Ruehsen + , heavily rewritten for inclusion as loadable -configure.in - - if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited - from the environment. Fixes HP/UX build problem reported by - "Daniel Richard G." +examples/loadables/Makefile.in + - rm: add rules to build rm as one of the `other' targets - 4/26 - ---- -config-top.h - - define MULTIPLE_COPROCS to 0 so the code is still disabled but easy - to enable via configure option or editing this file +examples/loadables/stat.c + - stat: new loadable builtin that takes a filename and loads the info + returned by stat(2) into an associative array specified by the -A + argument (default STAT) - 4/29 + 11/1 ---- -lib/sh/eaccess.c - - freebsd provides faccessat, with the same misfeature as their eaccess - and access implementations (X_OK returns true for uid==0 regardless - of the actual file permissions), so reorganize code to check the - file permissions as with eaccess. Report and fix from Johan Hattne - +variables.c + - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets + $0 on assignment. From a suggestion from Rocky Bernstein + a few years ago - 5/2 - --- doc/{bash.1,bashref.texi} - - add forward reference to `Pattern Matching' from `Pathname - Expansion', suggested by Greg Wooledge - - 5/5 - --- -pcomplib.c - - the bash_completion project now distributes over 200 completions - for various programs, with no end in sight, so increase the value - of COMPLETE_HASH_BUCKETS from 32 to 128 - -pathexp.c - - quote_string_for_globbing: make sure CTLESC quoting CTLESC is - translated into \ even if the flags include QGLOB_REGEXP. - We don't want to process the second CTLESC as a quote character. - Fixes bug reported by Shawn Bohrer + - BASH_ARGV0: document - 5/6 - --- -builtins/printf.def - - change PRETURN to not call fflush if ferror(stdout) is true - - if a call to one of the stdio functions or printstr leaves - ferror(stdout) true, and PRETURN is going to be called, let PRETURN - print the error message rather than doubling up the messages. Fixes - problem reported by Roman Rakus + 11/2 + ---- +lib/glob/sm_loop.c + - parse_collsym: make sure to not return an out-of-bounds read if a + collating symbol is unterminated. Fixes OOB read reported by + Jerzy Kramarz + - brackmatch: after incrementing p, before checking whether it's a + character range, check whether *p was NULL before the increment + and short-circuit the bracket expression if it is - 5/9 - --- -doc/{bash.1,bashref.texi} - - add note to the effect that lists inside compound command can be - terminated by newlines as well as semicolons. Suggested by - Roman Byshko +jobs.c + - discard_last_procsub_child: new function, safely discards + last_procsub_child and sets it to NULL - 5/10 - ---- subst.c - - remove_quoted_nulls: fix problem that caused it to skip over the - character after a CTLNUL, which had the effect of skipping every - other of a series of CTLNULs. Fixes bug reported by - Marten Wikstrom + - process_substitute: call discard_last_procsub_child instead of + calling discard_pipeline directly. Fixes bug reported by + Christian Weisgerber - 5/11 + 11/3 ---- -subst.c - - extract_process_subst: add SX_COMMAND flag to call to - extract_delimited_string, since we're expanding the same sort of - command as command substitution. Fixes bug reported in Ubuntu - bug 779848 +shell.h + - EX_DISKFALLBACK: new special return status available to builtins; + means to attempt to execute a disk command with the same name as + the builtin - 5/12 - ---- -configure.in - - set the prefer_shared and prefer_static variables appropriately - depending on the value of $opt_static_link +examples/loadables/rm.c + - if we see the -i option, return EX_DISKFALLBACK -aclocal.m4 - - AC_LIB_LINKFLAGS_BODY: change to not prefer shared versions of the - libraries it's searching for if the prefer_shared variable is "no". - Fixes problem reported by Cedric Arbogast +execute_cmd.c + - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK, + try running execute_disk_command instead - 5/13 - ---- -lib/readline/readline.c - - _rl_internal_teardown: add call to _rl_disable_meta_key to make the - meta key active only for the duration of the call to readline() - - _rl_internal_setup: move call to _rl_enable_meta_key here from - readline_initialize_everything so the meta key is active only for - the duration of the call to readline(). Suggestion from Miroslav - Lichvar +bashline.c + - shell_expand_line: use expand_word to expand the readline line + buffer, which allows us to pass flags with the word. If a numeric + argument is supplied, do not perform quote removal (pass + Q_HERE_DOCUMENT since here-doc quoting does the right thing) and + do not perform command or process subsitution. From a suggestion + by Dabrien 'Dabe' Murphy based on an old bug-bash + discussion -builtins/help.def - - help_builtin: change strncmp to strcmp so that `help read' no longer - matches `readonly'. Suggested by Clark Wang - -config.h.in - - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests - for libintl - -lib/malloc/malloc.c - - internal_free: don't use the cached value of memtop when deciding - whether or not to adjust the break and give memory back to the kernel - when using the GNU C library, since glibc uses sbrk for its own - internal purposes. From Debian bug 614815, reported by Samuel - Thibault - -aclocal.m4 - - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN - to avoid warning about not using AC_LANG_SOURCE +subst.c + - expand_word_internal: note that we have added a quoted IFS char to + istring by setting sentinel has_quoted_ifs. Usually we only add + one if we are not going to be performing word splitting, but we + will not perform word splitting if there's no expansion, so we need + to take care of that case + - expand_word_internal: when performing final word split, if there are + no expansions but has_quoted_ifs is non-zero, call remove_quoted_ifs() + to remove any quoted ifs characters we added while processing + - remove_quoted_ifs: new function, removes CTLESC chars preceding + (single-byte) chars in IFS. Used when we are not performing word + splitting. Fixes bug reported by Martijn Dekker - 5/14 + 11/4 ---- -bashline.[ch] - - two new functions, bashline_set_event_hook and bashline_reset_event_hook, - to set rl_event_hook to bash_event_hook and back to NULL, respectively - - don't set rl_event_hook unconditionally - -sig.c - - termsig_sighandler: if the shell is currently interactive and - readline is active, call bashline_set_event_hook to cause - termsig_handler to be called via bash_event_hook when the shell - returns from the signal handler +lib/readline/macro.c + - _rl_peek_macro_key: return the next character from the current + keyboard macro; the next character from the `next' keyboard macro, + if there is one, if at the end of the current macro; or 0 to + indicate that we are at the end of a keyboard macro sequence - 5/15 - ---- -lib/readline/display.c - - _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0 - for UTF-8 combining characters. Added workaround dependent on - MACOSX. Fixes problem pointed out by Thomas De Contes - +lib/readline/rlprivate.h + - _rl_peek_macro_key: extern declaration - 5/16 - ---- -lib/readline/rlmbutil.h - - WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining - characters on systems where wcwidth is broken (e.g., Mac OS X). +lib/readline/readline.c + - _rl_dispatch_subseq: add test for ESC at the end of a keyboard macro, + which should cause the keyboard timeout for ESC to kick in. The + previous test didn't run the timeout code if executing from a macro, + even if we had read the last character of the macro. Fixes bug + reported by Clark Wang -lib/readline/{complete,display,mbutil}.c - - use WCWIDTH instead of wcwidth +lib/glob/sm_loop.c + - GMATCH: allow trailing backslash in pattern to explicitly match a + backslash that is the last character in the string. Bug report from + Stephane Chazelas - 5/17 + 11/5 ---- -lib/readline/display.c - - update_line: after computing ofd and nfd, see whether the next - character in ofd is a zero-width combining character. If it is, - back ofd and nfd up one, so the base characters no longer compare - as equivalent. Fixes problem reported by Keith Winstein - +builtins/common.c + - display_signal_list: if displaying a signal name corresponding to an + exit status > 128, don't display the SIG prefix at all. Old code + made displaying the SIG prefix dependent on JOB_CONTROL define. + Report and fix from Martijn Dekker -lib/readline/nls.c - - _rl_utf8locale: new flag variable, set to non-zero if the current - locale is UTF-8 - - utf8locale(): new function, returns 1 if the passed lspec (or the - current locale) indicates that the locale is UTF-8. Called from - _rl_init_eightbit +execute_cmd.c + - execute_subshell_builtin_or_function: call without_job_control even + if JOB_CONTROL is not defined. Similar to fix from 9/23. + Report from Martijn Dekker -lib/readline/rlprivate.h - - extern declaration for _rl_utf8locale +execute_cmd.c + - execute_simple_command: free memory allocated and passed to + make_child in the child process if JOB_CONTROL is defined + - execute_command_internal: free memory allocated and passed to + make_child in the child process created to run a () subshell or a + compound command within a pipeline if JOB_CONTROL is defined + - execute_coproc: free memory allocated and passed to make_child in + the child process if JOB_CONTROL is defined + - execute_disk_command: free memory allocated and passed to + make_child in the child process if JOB_CONTROL is defined. This + series of fixes is the result of reports from + Eduardo A. Bustamante López -locale.c - - locale_utf8locale: new flag variable, set to non-zero if the current - locale is UTF-8 (currently unused) - - locale_isutf8(): new function, returns 1 if the passed lspec (or the - current locale) indicates that the locale is UTF-8. Should be called - whenever the locale or LC_CTYPE value is modified + 11/6 + ---- +lib/sh/unicode.c + - u32toutf16: fix to prevent outputting broken surrogate pairs for + Japanese locales (ja_JP.UTF-8) on cygwin (which uses UTF-16 natively). + Report and fix from Koichi MURASE -aclocal.m4 - - BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns - zero-width characters like unicode combining characters as having - display length 1; define WCWIDTH_BROKEN in this case +builtins/trap.def + - trap_builtin: if OP is `-' (revert), set the SIGINT signal handler + to sigint_sighandler if the shell is interactive and sourcing a + file (interactive_shell && sourcelevel) or running a trap + (interactive_shell && running_trap) even if it's not currently + interactive. Report from Martijn Dekker -config.h.in - - WCWIDTH_BROKEN: new define +builtins/read.def + - check for and read multibyte characters in all cases, not just when + we are reading a specific number of characters, as long as + mb_cur_max > 1 -lib/readline/rlmbutil.h - - change WCWIDTH macro to use _rl_utf8locale and the full range of - Unicode combining characters (U+0300-U+036F) +subst.c + - expand_word_internal: some improvements to code that converts istring + into a WORD_LIST * to avoid multiple allocations and copies of + istring, which is already malloc'ed memory -- reduce number of malloc + and free calls - 5/19 - ---- -lib/readline/rlprivate.h - - _rl_search_context: new member, prevc, will hold character read - prior to lastc +test.c + - unary_test: make sure if we test -v array[@] or array[*] that we + free the return value from array_value -lib/readline/isearch.c - - _rl_isearch_dispatch: if the character causes us to index into - another keymap, save that character in cxt->prevc - - _rl_isearch_dispatch: if we index into another keymap, but don't - find a function that's special to i-search, and the character that - caused us to index into that keymap would have terminated the - search, push back cxt->prevc and cxt->lastc to make it appear as - if `prevc' terminated the search, and execute lastc as a command. - We have to push prevc back so we index into the same keymap before - we read lastc. Fixes bug report from Davor Cubranic - - - 5/20 + 11/8 ---- expr.c - - expr_bind_variable: pay attention to the return value from - bind_variable and check whether or not we should error out due to - a readonly or noassign variable. Fixes bug reported by Eric - Blake - - 5/26 - ---- - -lib/readline/search.c - - include histlib.h for ANCHORED_SEARCH defines - - rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for - the duration of a history search - - rl_history_search_reinit: takes a new flags variable, defines whether - or not the search is anchored; assigned to rl_history_search_flags - - rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to - beginning of search string; otherwise search string is unmodified - - rl_history_search_internal: set rl_point appropriately based on - whether or not rl_history_search_flags includes ANCHORED_SEARCH - - rl_history_substr_search_forward: new function, for non-anchored - substring search forward through history for string of characters - preceding rl_point - - rl_history_substr_search_backward: new function, for non-anchored - substring search backward through history for string of characters - preceding rl_point. Original code from Niraj Kulkarni - - -lib/readline/readline.h - - extern declarations for rl_history_substr_search_{for,back}ward - -lib/readline/funmap.c - - history-substring-search-forward: new bindable command, invokes - rl_history_substr_search_forward - - history-substring-search-backward: new bindable command, invokes - rl_history_substr_search_backward + - expcond: make sure to set `noeval' before reading tokens depending on + the result of the conditional test, since readtok() can evaluate + identifiers (and recursively those containing expressions). Report + and fix from Koichi MURASE -lib/readline/doc/{rluser.texi,readline.3} - - document history-substring-search-forward and - history-substring-search-backward +builtins/evalstring.c + - should_suppress_fork: make sure to check for traps on EXIT and + ERR, since any_signals_trapped() only checks for `real' signals, + not the fake shell ones. Fixes bug reported by Werner Fink + + - optimize_subshell_command: ditto - 5/27 + 11/9 ---- -{nojobs,jobs}.c - - add support for DONT_REPORT_SIGTERM so that the shell doesn't print - a message when a job exits due to SIGTERM since that's the default - signal sent by the kill builtin. Suggested by Marc Herbert - +eval.c + - reader_loop: change so that we don't reset the SIGINT handler every + time through the command loop in an interactive shell if the signal + is trapped (as the comment noted). Reported by Report from Martijn + Dekker -config-top.h - - DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out - by default +subst.c + - parameter_brace_{patsub,remove_pattern,transform,casemod}: save and + restore this_command_name while temporarily setting it for use in + error messages. Fixes use-after-free error reported by + Jerzy Kramarz + - string_extract_verbatim: make sure when we increment i by 2 due to + a CTLESC or CTLESC-CTLNUL that we don't read past the end of the + string. This can happen if the string ends with an odd number of + CTLESC chars. Fixes oob-read error reported by + Jerzy Kramarz - 5/28 - ---- -lib/readline/bind.c - - _rl_skip_to_delim: skip to a closing double quote or other delimiter, - allowing backslash to quote any character, including the delimiter - - rl_parse_and_bind: call _rl_skip_to_delim instead of using inline - code - - rl_parse_and_bind: allow quoted strings as the values of string - variables. Variable values without double quotes have trailing - whitespace removed (which still allows embedded whitespace, for - better or worse). Fixes problem with string variables not matching - in `set' command if values happen to have trailing spaces or tabs - (debian bash bug #602762), but introduces slight incompatibility. + 11/11 + ----- +configure.ac,aclocal.m4 + - BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just + a stub function like on several Linux distributions - 5/29 - ---- -doc/{bash.1,bashref.texi} - - clarify unset description to specify that without options, a - variable, then a shell function if there is no variable by that - name, is unset. Fixes discrepancy reported by Mu Qiao - +lib/malloc/malloc.c + - malloc_usable_size: return the maximum number of bytes available for + a particular memory allocation (size of block allocated for it) - 6/4 - ---- -doc/{bash.1,bashref.texi} - - clarify description of LINES and COLUMNS (and checkwinsize shopt - option) to make it clear that only interactive shells set a - handler for SIGWINCH and update LINES and COLUMNS. Original - report submitted by Jonathan Nieder + 11/12 + ----- +configure.ac + - changes to make --enable-profiling work on Linux (-pg, no static link, + no -static in LDFLAGS) -arrayfunc.c - - expand_compound_array_assignment: defer expansion of words between - parens when performing compound assignmnt to an associative array - variable - - assign_compound_array_list: perform the same expansions when doing - a compound array assignment to an associative array variable as - when doing a straight array index assignment. The idea is that - foo=( [ind1]=bar [ind2]=quux) - is the same as - foo[ind1]=bar ; foo[ind2]=quux +Makefile.in + - changes to make --enable-profiling work on Linux (take + ${PROFILE_FLAGS} out of BASE_CCFLAGS, add to CCFLAGS instead; add + BASE_LDFLAGS define that doesn't include -pg or -static; use + BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to + LDFLAGS) - This fixes problems with double-expansion and quote removal being - performed on the array indices +tests/run-gprof + - changes to make profiling test suite with gprof work on Linux (set + GMON_OUT_PREFIX to handle multiple profiled processes per test; + change default filename to gmon.out from bash.gmon; look for + gprof output files in ${TMPDIR} instead of /tmp; handle multiple + profiling files starting with $GMON_OUT_PREFIX) - 6/13 - ---- -doc/{bash.1,bashref.texi} - - Add a little text to make it clear that the locale determines how - range expressions in glob patterns are handled. +locale.c + - locale_isutf8: use locale_charset() if it's available and nl_langinfo + isn't + - locale_isutf8: add code to parse a locale specification and determine + whether the encoding is UTF-8 (or utf8) in the absence of + nl_langinfo and locale_charset + - set_default_locale: make sure to set locale_utf8locale early on + - locale_utf8locale: set via call to locale_isutf8 wherever LANG, + LC_ALL, or LC_CTYPE is set + 11/13 + ----- +lib/readline/display.c + - rl_redisplay: handle report of potential integer overflow in + horizontal display mode from Mateusz Lenik - 6/21 - ---- -builtins/read.def - - display a message and return error status if -a is used with an - existing associative array. Fixes bug reported by Curtis Doty - +lib/sh/mbschr.c + - mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking + for an ASCII character, use (essentially) strchr as a shortcut - 6/24 - ---- -{jobs,nojobs}.c - - non-interactive shells now react to the setting of checkwinsize - and set LINES and COLUMNS after a foreground job exits. From a - suggestion by Leslie Rhorer +lib/sh/shmbchar.c + - utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement + functions (should also be able to use utf8_mblen in subst.c: + string_extract_verbatim) + - mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar + - mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not + used if earlier shortcut taken) -doc/{bash.1,bashref.texi} - - checkwinsize: remove language saying that only interactive shells - check the window size after each command +lib/sh/unicode.c + - u32cconv: don't use nl_langinfo early to call u32toutf8() + - u32cconv: use locale_utf8locale to set utf8locale + - u32cconv: when initializing (u32init == 0), use locale_charset, then + nl_langinfo, then stub_charset to determine the charset + - u32cconv: even if we don't have iconv, if locale_utf8locale is non- + zero, return u32toutf8 -lib/readline/histfile.c - - history_backupfile: new file, creates a backup history file name - given a filename (appending `-') - - history_do_write: when overwriting the history file, back it up - before writing. Restore backup file on a write error. Suggested - by chkno@chkno.net + 11/15 + ----- +lib/readline/nls.c + - _rl_init_locale: new function, split off code that determines current + locale from _rl_init_eightbit, use it to set _rl_utf8locale -bashline.c - - find_cmd_name: two new arguments, return the start and end of the - actual text string used to find the command name, without taking - whitespace into account - - attempt_shell_completion: small changes to make sure that completion - attempted at the beginning of a non-empty line does not find a - programmable completion, even if the command name starts at point - - attempt_shell_completion: small change to make sure that completion - does not find a progcomp when in whitespace before the command - name - - attempt_shell_completion: small change to make sure that completion - does not find a progcomp when point is at the first character of a - command name, even when there is leading whitespace (similar to - above). Fixes problems noted by Ville Skytta +lib/readiline/rlprivate.h + - _rl_init_locale: new extern declaration -subst.c - - brace_expand_word_list: since the individual strings in the strvec - returned by brace_expand are already allocated, don't copy them to - newly-allocated memory when building the WORD_LIST, just use them - intact +lib/readline/readline.c + - rl_initialize: if not initializing everything the first time, call + _rl_init_locale to check current locale and set _rl_utf8locale -locale.c - - locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change - the locale to avoid a function call every time we need to read it +lib/readline/text.c + - _rl_insert_char: optimize cases where we are inserting a single-byte + character in a locale with multibyte characters + - _rl_insert_char: check whether character is single byte if we know + we are in a UTF-8 locale, optimize single-byte case to avoid calls + to mbrtowc and memmove/memcpy -shell.h - - new struct to save shell_input_line and associated variables: - shell_input_line_state_t - - add members of sh_parser_state_t to save and restore token and the - size of the token buffer +lib/readline/mbutil.c + - _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the + current character does not have the eighth bit set ((c & 0x80) == 0), + return that char without bothering to call mbrtowc + - _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8 + locale and the current character is not a multibyte character + - _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that + to avoid calls to mbrtowc -parse.y - - {save,restore}_input_line_state: new functions to save and restore - shell_input_line and associated variables - - {save,restore}_parser_state: add code to save and restore the token - and token buffer size - - xparse_dolparen: call save_ and restore_input_line_state to avoid - problems with overwriting shell_input_line when we recursively - call the parser to parse a command substitution. Fixes bug - reported by Rui Santos +lib/readline/display.c + - _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid + calls to mbrlen and mbrtowc + - rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid + calls to mbrtowc -include/shmbutil.h - - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and - similar macros + 11/17 + ----- +lib/readline/histlib.h + - PATTERN_SEARCH: new flag for history search interfaces, means to + search for a pattern as Posix specifies -lib/glob/smatch.c - - rangecmp,rangecmp_wc: change to take an additional argument, which - forces the use of strcoll/wscoll when non-zero. If it's 0, a new - variable `glob_asciirange' controls whether or not we use strcoll/ - wscoll. If glob_asciirange is non-zero, we use straight - C-locale-like ordering. Suggested by Aharon Robbins - - - 6/30 - ---- -execute_cmd.c - - execute_pipeline: make sure the lastpipe code is protected by - #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort - +lib/readline/histsearch.c + - history_search_internal: now takes a `flags' argument instead of just + an `anchored' argument to accommodate PATTERN_SEARCH + - _hs_history_patsearch: new internal interface to use when flags + specify PATTERN_SEARCH - 7/2 - --- -lib/readline/complete.c - - EXPERIMENTAL: remove setting of _rl_interrupt_immediately around - completion functions that touch the file system. Idea from Jan - Kratochvil and the GDB development - team +lib/readline/rlprivate.h + - SF_PATTERN: new flag for non-incremental search contexts, means to + treat search string as a pattern (maps to PATTERN_SEARCH) -lib/readline/signals.c - - rl_signal_handler: if we're in callback mode, don't interrupt - immediately on a SIGWINCH +lib/readline/search.c + - noninc_dosearch: takes an additional `flags' argument for SF_PATTERN + - noninc_search_from_pos: takes an additional `flags' argument for + SF_PATTERN + - noninc_dosearch: pass flags argument through to noninc_search_from_pos + - _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used + to invoke the search) is `?' or `/', add SF_PATTERN to the flags + to conform to Posix spec for vi-mode editing + - _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a + pattern search, pass SF_PATTERN to noninc_search_from_pos + - rl_noninc_forward_search_again: if in vi command mode and key == `N', + make sure flags arg passed to noninc_dosearch includes SF_PATTERN + - rl_noninc_reverse_search_again: if in vi command mode and key == `n', + make sure flags arg passed to noninc_dosearch includes SF_PATTERN + - rl_history_search_internal: pass extra flags arg to noninc_search_from_pos - 7/3 - --- -bashline.c - - set_directory_hook: and its siblings are a new set of functions to - set, save, and restore the appropriate directory completion hook - - change callers to use {set,save,restore}_directory_hook instead of - manipulating rl_directory_rewrite_hook directly - - dircomplete_expand: new variable, defaults to 0, if non-zero causes - directory names to be word-expanded during word and filename - completion - - change {set,save,restore}_directory_hook to look at dircomplete_expand - and change rl_directory_completion_hook or rl_directory_rewrite_hook - appropriately - -bashline.h - - extern declaration for set_directory_hook so shopt code can use it + 11/18 + ----- +lib/readline/search.c + - noninc_search_from_pos: takes a new argument, a pointer to int where + it stores the offset of the match in the history line (if non-NULL), + modified callers + - rl_history_search_internal: pass newcol pointer to + noninc_search_from_pos to avoid having to recompute the match offset + in the matching history entry - 7/6 - --- -builtins/shopt.def - - globasciiranges: new settable shopt option, makes glob ranges act - as if in the C locale (so b no longer comes between A and B). - Suggested by Aharon Robbins +config.h.in + - define HAVE_FNMATCH if we have the fnmatch function (configure was + already checking for it) - 7/7 - --- -doc/{bash.1,bashref.texi} - - document new `globasciiranges' shopt option +lib/readline/histsearch.c + - _hs_history_patsearch: transform the pattern into one ending in a + `*' to avoid having to perform multiple match attempts from each + index in the history line + - history_search_internal: changes to handle pattern matching if + PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined. This + makes vi-mode history searching treat the user-specified search + string as an fnmatch pattern, as Posix requires. Fixes issue + reported by - 7/8 - --- + 11/19 + ----- builtins/shopt.def - - direxpand: new settable option, makes filename completion expand - variables in directory names like bash-4.1 did. - - shopt_set_complete_direxpand: new function, does the work for the - above by calling set_directory_hook - -doc/{bash.1,bashref.texi} - - document new `direxpand' shopt option - - 7/15 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: when adding character to search string, use - cxt->lastc (which we use in the switch statement) instead of c, - since lastc can be modified earlier in the function + - shopt_enable_hostname_completion: only declare this if READLINE + defined, since that's the only time it's used. Reported by + isabella parakiss - 7/18 - ---- -lib/readline/rlprivate.h - - _rl_search_context: add another member to save previous value of - (multibyte) lastc: pmb is to mb as prevc is to lastc - -lib/readline/isearch.c: - - _rl_isearch_dispatch: if a key sequence indexes into a new keymap, - but doesn't find any bound function (k[ind].function == 0) or is - bound to self-insert (k[ind].function == rl_insert), back up and - insert the previous character (the one that caused the index into a - new keymap) and arrange things so the current character is the next - one read, so both of them end up in the search string. Fixes bug - reported by Clark Wang - - _rl_isearch_dispatch: a couple of efficiency improvements when adding - characters to the isearch string - - 7/24 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb - appropriately when in a multibyte locale + 11/20 + ----- +builtins/common.c + - display_signal_list: make `kill -l 0' print `EXIT', modifying change + from 9/17 -doc/{bash.1,bashref.texi} - - correct description of {x}>file (and other redirection operators - that allocate a file descriptor) to note the the fd range is - greater than or equal to 10. Fixes problem reported by - Christian Ullrich + 11/21 + ----- +subst.c + - expand_word_internal: when the shell encounters a backslash as the + last character of the string, don't try to add a '\'0' to the end + of the string if the string is quoted, just add a <\> and + skip to the end of string processing. Fixes oob-read error + reported by Jerzy Kramarz -lib/readline/signals.c - - rl_signal_handler: don't interrupt immediately if in callback mode - -lib/readline/callback.c - - rl_callback_read_char: install signal handlers only when readline - has control in callback mode, so readline's signal handlers aren't - called when the application is active (e.g., between the calls to - rl_callback_handler_install and rl_callback_read_char). If the - readline signal handlers only set a flag, which the application - doesn't know about, the signals will effectively be ignored until - the next time the application calls into the readline callback - interface. Fixes problem of calling unsafe functions from signal - handlers when in callback mode reported by Jan Kratochvil - +test.c + - two_arguments: check argv[pos][1] before checking argv[pos][2] when + looking for a unary argument. Fixes oob-read error on single `-' + in unary operator position reported by Jerzy Kramarz + + - ANDOR: check s[1] before checking s[2] in case s[1] == end of string. + Fixes oob-read error reported by Jerzy Kramarz -execute_cmd.c - - fix_assignment_words: when in Posix mode, the `command' builtin - doesn't change whether or not the command name it protects is an - assignment builtin. One or more instances of `command' - preceding `export', for instance, doesn't make `export' treat its - assignment statement arguments differently. Posix interpretation - #351 +subst.c + - command_substitute: now takes additional flags argument, changed one + caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers + pass 0 + - command_substitute: pass through flags argument to read_comsub + - read_comsub: now takes additional new flags argument to indicate + whether or not the word is in a context where word splitting will + eventually be performed + - read_comsub: if we are running in a context where word splitting + will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is + in $IFS, add a CTLESC to make sure it gets through a round of + dequoting -doc/{bash.1,bashref.texi} - - document new Posix-mode behavior of `command' when preceding builtins - that take assignment statements as arguments + 11/23 + ----- +parse.y + - xparse_dolparen: since reset_parser frees the pushed string list, + and this is supposed to be a separate parsing context, we need to + save and restore pushed_string_list around the call to parse_string + and reset_parser. Fixes bug reported by Dan Douglas + -builtins/printf.def - - printstr: if fieldwidth or precision are < 0 or > INT_MAX when - supplied explicitly (since we take care of the `-' separately), - clamp at INT_MAX like when using getint(). Fixes issue reported - by Ralph Coredroy +bashhist.h + - HISTEXPAND_DEFAULT: default value of history_expansion, moved here + from flags.c - 7/25 - ---- -lib/readline/chardefs.h - - isxdigit: don't define if compiling with c++; declared as a c++ - template function. Fixes bug reported by Miroslav Lichvar - +flags.[ch] + - histexp_flag: new variable, this is what set -H/set -o histexpand + sets; history_expansion set to value of this variable; defaults to 0 + - history_expansion: now set to HISTEXPAND_DEFAULT -builtins/printf.def - - getint: if garglist == 0, return whatever getintmax returns (0). - Fixes bug reported by Ralph Coredroy +bashhist.c + - bash_history_reinit: if interact == 0, set history_expansion to the + value of histexp_flag, to allow -H option to enable history + expansion + - bash_history_reinit: if interact == 0, make sure + history_expansion_inhibited is set opposite of histexp_flag, so + enabling history expansion with -H invocation option turns off + inhibited expansion. If interactive shell, we turn it off so + history_expansion controls whether or not history expansion takes + place. In practice, this function is always called with interact == 0, + and -c command still doesn't perform history expansion - 7/28 - ---- -doc/{bash.1,bashref.texi} - - minor changes to the descriptions of the cd and pushd builtins +shell.c + - init_interactive: make sure histexp_flag and history_expansion are + identical in an interactive shell; allows both -H/+H option and + default compilation options (HISTEXPAND_DEFAULT) to work -lib/sh/zread.c - - zsyncfd: change variable holding return value from lseek to - off_t. Bug report and fix from Gregory Margo + 11/24 + ----- +subst.c + - get_word_from_string: take advantage of the fact that SEPARATORS is + always a (possibly local) copy of IFS, so build a local charmap of + separators and use it instead of the (cached and possibly stale) + ifs_cmap map and isifs macro. Fixes bug with -N stripping leading + whitespace reported by Clark Wang - 8/1 - --- -expr.c - - don't check for division by 0 when in a context where no evaluation - is taking place. Fixes bug reported by dnade.ext@orange-ftgroup.com + 11/25 + ----- +builtins/read.def + - read_builtin: make `i' volatile, since auto variables are technically + undefined after a longjmp, and a timeout on SIGALRM causes one. + Fix suggested by Dmitry Goncharov - 8/6 - --- -execute_cmd.c - - execute_command_internal: the parent branch of the subshell code - (where the child calls execute_in_subshell) should not close all - open FIFOs with unlink_fifo_list if it's part of a shell function - that's still executing. Fixes bug reported by Maarten Billemont - + 11/27 + ----- +parse.y + - shell_getc: if we are reading input from a string, and we get the + ending '\0', and we are not expanding an alias, return EOF right + away. It might be an eval'ed string that has a syntax error. + Fixes bug reported by Dan Douglas - 8/9 - --- -builtins/common.c - - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument + 11/28 + ----- +subst.c + - expand_word_internal: if we're expanding a quoted string containing + a tilde as the first character of a word, only expand the tilde if + we're expanding an array subscript (Q_ARRAYSUB), not if we're + expanding any arithmetic expression (Q_ARITH). This fixes a + backwards compatibility issue with expressions like ~0 reported by + Bize Ma -builtins/return.def - - return_builtin: just call get_exitstat to get the return status, - let it handle proper parsing and handling of arguments. Fixes - issue most recently raised by Linda Walsh . - Reverses change from 9/11/2008 (see above) +subst.c + - parameter_brace_expand_indir: if the variable is not special and + the indirect variable is unset (!variable where variable is unset), + report an error. This is a slight incompatibility with previous + versions, which did not differentiate between indirecting an unset + variable and an indirect expansion resulting in an unset variable. + Fixes omission reported by otenba@protonmail.com - 8/16 - ---- -doc/{bash.1,bashref.texi} - - clean up `set -e' language to make it clearer that any failure of - a compound command will cause the shell to exit, not just subshells - and brace commands + 11/30 + ----- +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - do-uppercase-version: since this doesn't actually exist, replace it + with do-lowercase-version, with the caveat that do-lowercase-version + results in undefined behavior if bound to a character that's + already lowercase. Suggested by Branden Robinson + - 8/17 - ---- -configure.in - - make the various XXX_FOR_BUILD variables `precious' to autoconf to - avoid stale data - - change how CC_FOR_BUILD is initialized when cross-compiling and not, - but do not change behavior - - initialize CFLAGS_FOR_BUILD to -g when cross-compiling - - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty - when cross-compiling - - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when - CFLAGS not inherited from environment (like effect of old - auto_cflags variable) - - substitute LIBS_FOR_BUILD into output Makefiles - [changes inspired by bug report from Nathan Phillip Brink - -- gentoo bug 378941] - -builtins/Makefile.in - - substitute LIBS_FOR_BUILD from configure, not strictly initialized - to $(LIBS) - - 8/27 - ---- -doc/{bash.1,bashref.texi} - - minor changes to the here string description to clarify the - expansions performed on the word +lib/readline/doc/rluser.texi + - history-substring-search-forward: was misspelled as "substr-search"; + ditto for search-backward -support/shobj-conf - - handle compilation on Lion (Mac OS X 10.7/darwin11) with changes - to darwin stanzas. Fixes readline bug reported by Vincent - Sheffer +doc/bash.1 + - history-substring-search-{backward,forward}: add documentation, text + straight from readline.3 -lib/sh/strtrans.c - - ansic_wshouldquote: check a string with multi-byte characters for - characters that needs to be backslash-octal escaped for $'...' - - ansic_shouldquote: if is_basic fails for one character, let - ansic_wshouldquote examine the rest of the string and return what - it returns. From a patch sent by Roman Rakus +jobs.c + - initialize_job_control: if the terminal's process group is valid, + but the shell is not the foreground process, check for terminating + signals (like SIGHUP, which the kernel would send if the process + group were orphaned) during the loop where we try to stop the shell + if it's not in the foreground. Not a perfect solution; the kernel + might not send SIGHUP - 8/30 + 12/1 ---- -lib/sh/strtrans.c - - ansic_quote: changes to quote (or not) multibyte characters. New - code converts them to wide characters and uses iswprint to check - valid wide chars. From a patch sent by Roman Rakus - - - 9/7 - --- -lib/sh/shquote.c - - sh_backslash_quote: change to be table-driven so we can use a - different table if we want to - - sh_backslash_quote: takes a second char table[256] argument; - -externs.h - - sh_backslash_quote: add second argument to function prototype +jobs.c + - initialize_job_control: only go through the SIGTTIN loop 16 times at + most before deciding we're in the background and probably a member of + an orphaned process group; set original_pgrp to the terminal's pgrp + (so the eventual give_terminal_to doesn't leave the terminal in the + wrong pgrp); and bail on job control initialization -bashline.c,braces.c,parse.y,builtins/printf.def - - change callers of sh_backslash_quote to add second argument +tests/run-all + - unset SHELLOPTS to avoid its options `polluting' the test + environment. Suggestion from Vladimir Marek + -bashline.c - - filename_bstab: table of characters to pass to sh_backslash_quote; - characters with value 1 will be backslash-quoted - - set_filename_bstab: turn on characters in filename backslash-quote - table according to passed string argument - - call set_filename_bstab every time rl_filename_quote_characters is - assigned a value - - bash_quote_filename: call sh_backslash_quote with filename_bstab - as second argument. This allows other characters in filenames to - be quoted without quoting, for instance, a dollar sign in a shell - variable reference - - 9/8 - --- -bashline.c - - complete_fullquote: new variable, controls table passed to - sh_backslash_quote. If non-zero (the default), the standard set - of shell metacharacters -- as in bash versions up to and including - bash-4.2 -- gets backslash-quoted by the completion code. If zero, - sh_backslash_quote gets the table with the characters in the - variable reference removed, which means they are removed from the - set of characters to be quoted in filenames +tests/execscript + - use $PWD/exec8.sub to protect against someone who has a cd command + in his bashrc. Report from Vladimir Marek + - 9/10 + 12/2 ---- -bashline.c - - bash_filename_stat_hook: new function, designed to expand variable - references in filenames before readline passes them to stat(2) - to determine whether or not they are a directory +shell.c + - open_shell_script: call end_job_control before exiting the shell in + case we were run as `bash -i script' and there is a problem with + executing `script'. If we don't, the terminal ends up in the wrong + process group. Fix from Clark Wang - 9/15 + 12/3 ---- -builtins/declare.def - - if assign_array_element fails due to a bad (or empty) subscript, mark - it as an assignment error and don't attempt any further processing - of that declaration. Fixes segfault bug reported by Diego Augusto - Molina - - 9/19 - ---- -expr.c - - exppower: replace the simple exponentiation algorithm with an - implementation of exponentiation by squaring. Inspired by report - from Nicolas ARGYROU +parse.y + - read_comsub: if we look for a character following a `<' and it's + not `<' (indicating that we don't have to read a here-document), + make sure we push that character back and go through the loop again + so we note the right word start location. Fixes bug reported by + parasite parasite <42parasite@gmail.com> -bashline.c - - bash_quote_filename: check for rtext being non-null before - dereferencing it - - set_saved_history: operate_and_get_next assumes that the previous - line was added to the history, even when the history is stifled and - at the max number of entries. If it wasn't, make sure the history - number is incremented properly. Partial fix for bug reported by - gregrwm - -doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi - - minor editorial changes inspired by suggestions from - Roger Zauner +subst.c + - parameter_brace_expand_indir: clean up checks for unset variables to + minimize incompatibilities with previous versions - 9/20 + 12/5 ---- -lib/intl/localealias.c - - read_alias_file: close resource leak (fp) when returning on error +lib/readline/history.c + - add_history: don't update history_length until all of the updates to + the_history are complete, so history_length is always consistent. + Report and fix from Hong Cho - 9/22 - ---- -execute_command.c - - execute_intern_function: implement Posix interpretation 383 by making - it an error to define a function with the same name as a special - builtin when in Posix mode. - http://austingroupbugs.net/view.php?id=383#c692 +bashline.c + - bash_backward_shellword: fix to work better at the end of the line, + with multiple trailing whitespace characters. Inspired by report + from Kirill Timofeev - 9/25 - ---- -doc/{bash.1,bashref.texi} - - formatting and some content changes from Benno Schulenberg - - - document new posix-mode behavior from interp 383 change of 9/22 +Makefile.in + - bashbug: use `^' as the sed delimiter instead of `%'; some compilers + use `%' in CFLAGS. Report from Vladimir Marek + - 9/30 + 12/6 ---- -execute_cmd.c - - shell_execve: add strerror to error message about executable file - that shell can't execute as a shell script. From suggestion by - daysleeper +test.c + - test_unop: make sure op[1] != 0 before testing op[2] + - term: make sure argv[pos][1] != 0 before testing argv[pos][2]. Fixes + oob-read reported by Jerzy Kramarz - 10/1 + 12/7 ---- -bashhist.c - - maybe_add_history: act as if literal_history is set when parser_state - includes PST_HEREDOC, so we save the bodies of here-documents just - as they were entered. Fixes bug reported by Jonathan Wakely - - - bash_add_history: make sure that the second and subsequent lines of - a here document don't have extra newlines or other delimiting - chars added, since they have the trailing newline preserved, when - `lithist' is set and history_delimiting_chars isn't called +lib/glob/glob.c + - glob_filename: assign the return value of realloc (results, ...) to + a temp pointer, so if realloc returns NULL, we make sure we free + results. Report from Kirill Timofeev -execute_cmd.c - - execute_command_internal: avoid fd exhaustion caused by using - process substitution in loops inside shell functions by using - copy_fifo_list and close_new_fifos (). Fixes debian bash bug - 642504 + 12/12 + ----- +lib/sh/shquote.c + - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte + characters that are in the current locale's character class -lib/readline/complete.c - - new variable, rl_filename_stat_hook, used by append_to_match. If - filename completion is desired, and rl_filename_stat_hook points - to a function, call that function to expand the filename in an - application-specific way before calling stat. +builtins/printf.def + - printf_builtin: when processing the `%q' format, make sure to + backslash quote all characters by making sure that FLAGS + passed to sh_backslash_quote includes 2. Fixes issue for certain + iso-8859-1 locales where character 160 (octal 240, hex 0xa0) is a + non-breaking space. Report from Stephane Chazelas + -bashline.c - - bash_default_completion: if variable completion returns a single - match, use bash_filename_stat_hook and file_isdir to determine - whether or not the variable name expands to a directory. If it - does, set the filename_append_character to `/'. This is not - perfect, so we will see how it works out. Adds functionality - requested by Peter Toft and Patrick Pfeifer - - - rl_filename_stat_hook: assigned bash_filename_stat_hook, so things - like $HOME/Downloads (after completion) have a slash appended. - In general, this causes the stat hook to be called whenever - filename completion is appended. Adds functionality requested by - Patrick Pfeifer +lib/sh/eaccess.c + - sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn + it into a stat on file descriptor N, as if /dev/fd were not + available. This is the case on some old versions of SunOS. Report + and patch from Dmitry Goncharov -lib/readline/readline.h - - new extern declaration for rl_filename_stat_hook +config.h.in + - DEV_FD_STAT_BROKEN: add define -lib/readline/doc/rltech.texi - - rl_directory_rewrite_hook: now documented - - rl_filename_stat_hook: document +configure.ac + - --enable-dev-fd-stat-broken: new command-line option, defines + DEV_FD_STAT_BROKEN if supplied at configure time -pcomplete.c - - gen_action_completions: in the CA_DIRECTORY case, turn off - rl_filename_completion_desired if it was off before we called - rl_filename_completion_function and we didn't get any matches. - Having it on causes readline to quote the matches as if they - were filenames. Adds functionality requested by many, - including Clark Wang - -assoc.[ch] - - assoc_replace: new function, takes the same arguments as - assoc_insert, but returns the old data instead of freeing it - - assoc_insert: if the object returned by hash_insert doesn't have - the same value for its key as the key passed as an argument, we - are overwriting an existing value. In this case, we can free the - key. Fixes bug reported by David Parks +doc/bashref.texi + - --enable-dev-fd-stat-broken: document new command-line option for + configure - 10/5 - ---- -print_cmd.c - - indirection_level_string: small change to only re-enable `x' - option after calling decode_prompt_string if it was on before. In - normal mode, it will be, but John Reiser - has a novel use for that code in conjunction with a pre-loaded - shared library that traces system call usage in shell scripts +arrayfunc.c + - assoc_expand_once: new variable, declared here just because - 10/10 - ----- -Makefile.in - - Fix from Mike Frysinger to avoid trying to - build y.tab.c and y.tab.h with two separate runs of yacc if - parse.y changes. Problem with parallel makes - - Fix from Mike Frysinger to avoid subdirectory - builds each trying to make version.h (and all its dependencies) +arrayfunc.h + - assoc_expand_once: extern declaration + - AV_NOEXPAND: new flag value for the array_value family of functions: + means to not run associative array subscripts through word expansion -lib/sh/Makefile.in - - remove some dependencies on version.h where it doesn't make sense +builtins/set.def + - unset_builtin: call unbind_array_element with assoc_expand_once as + third arg, controls whether we expand associative array subscripts + (if 1, we suppress the usual expansion). With accompanying shopt, + provides backwards compatible option to solve problem with quotes + and other characters in associative array subscripts pointed out + most recently by Mingye Wang (Arthur2e5) -variables.c - - initialize_shell_variables: while reading the environment, a shell - running in posix mode now checks for SHELLOPTS being readonly (it - gets set early on in main()) before trying to assign to it. It - saves an error message and the variable gets parsed as it should. - Fixes bug reported by Len Giambrone +builtins/shopt.def + - assoc_expand_once: new option, controls value of internal variable + with the same name. Currently undocumented because I'm not completely + sold on the name - 10/14 - ----- -doc/{bash.1,bashref.texi} - - add to the "duplicating file descriptors" description that >&word - doesn't redirect stdout and stderr if word expands to `-' - - add to the "appending standard output and standard error" - description a note that >&word, where word is a number or `-', - causes other redirection operators to apply for sh and Posix - compatibility reasons. Suggested by Greg Wooledge - +expr.c + - evalexp: now takes a second argument, flags. Changed all callers in + multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c, + subst.c,test.c,variables.c) - 10/15 - ----- -pcomplete.c - - change pcomp_filename_completion_function to only run the filename - dequoting function in the cases (as best as it can figure) where - readline won't do it via rl_filename_completion_function. Based - on reports from +externs.h + - EXP_EXPANDED, new flag for second argument to evalexp - 10/19 - ----- -bashline.c - - attempt_shell_completion: add call to set_directory_hook() to make - sure the rewrite functions are correct. It's cheap and doesn't - hurt - - command_word_completion_function: if completing a command name that - starts with `.' or `..', temporarily suppress the effects of the - `direxpand' option and restore the correct value after calling - rl_filename_completion_function. If it's enabled, the directory - name will be rewritten and no longer match `./' or `../'. Fixes - problem reported by Michael Kalisz - - 10/22 - ----- -builtins/history.def - - push_history: make sure remember_on_history is enabled before we - try to delete the last history entry -- the `history -s' command - might not have been saved. Fixes bug reported by - lester@vmw-les.eng.vmware.com +builtins/let.def + - let_builtin: add EXP_EXPANDED to flags passed to evalexp -lib/readline/complete.c - - rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN - instead of straight return; add same call at end of function. - Placeholder for future work in deinstalling signal handlers when - readline is not active +execute_cmd.c + - execute_arith_command: add EXP_EXPANDED to flags passed to evalexp, + since the command string is run through expand_words_no_vars before + being evaluated - 10/25 - ----- expr.c - - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1 - for DIV and MOD and avoid SIGFPE. Bug report and pointer to fix - from Jaak Ristioja - - expassign: same changes for arithmetic overflow for DIV and MOD - - 10/28 - ----- -subst.c - - parameter_brace_expand: allow pattern substitution when there is an - expansion of the form ${var/} as a no-op: replacing nothing with - nothing - - parameter_brace_patsub: don't need to check for PATSUB being NULL; - it never is - -flags.c - - if STRICT_POSIX is defined, initialize history_expansion to 0, since - history expansion (and its treatment of ! within double quotes) is - not a conforming posix environment. From austin-group issue 500 + - set expression-global variable already_expanded if flags arg to + evalexp contains EXP_EXPANDED + - if assoc_expand_once option set and already_expanded flag set, pass + 1 in flags to array_variable_part to skip over quotes and expansions + in the subscript + - if those two variables set, pass AV_NOEXPAND as flag to + get_array_value to prevent word expansions on the subscript -lib/readline/histexpand.c - - history_expand: when processing a string within double quotes - (DQUOTE == 1), make the closing double quote inhibit history - expansion, as if the word were outside double quotes. In effect, - we assume that the double quote is followed by a character in - history_no_expand_chars. tcsh and csh seem to do this. This - answers a persistent complaint about history expansion +arrayfunc.c + - if flags passed to unbind_array_element includes 1, pass flag on to + skipsubscript so we don't expect matched quotes or process + expansions in the subscript + - if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag + to array_variable_part to pass along to skipsubscript + - if flags to array_value_internal include AV_NOEXPAND, don't call + expand_assignment_string_to_string; just use the unexpanded subscript + to produce the key [THIS IS A WORK IN PROGRESS] - 10/29 + 12/14 ----- -make_cmd.c - - make_arith_for_command: use skip_to_delim to find the next `;' - when breaking the string between the double parens into three - separate components instead of a simple character loop. Fixes - bug reported by Dan Douglas - - 11/2 - ---- -Makefile.in - - make libbuiltins.a depend on builtext.h to serialize its creation - and avoid conflict between multiple invocations of mkbuiltins. - Fix from Mike Frysinger - - 11/5 - ---- -findcmd.c - - user_command_matches: if stat(".", ...) returns -1, set st_dev - and st_ino fields in dotinfo to 0 to avoid same_file matches - - find_user_command_in_path: check stat(2) return the same way - -lib/glob/glob.c - - glob_vector: don't call strlen(pat) without checking pat == 0 - - glob_dir_to_array: make sure to free `result' and all allocated - members before returning error due to malloc failure - - glob_vector: make sure to free `nextname' and `npat' on errors - (mostly when setting lose = 1) - - glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make - sure we free `subdir' - - glob_filename: when expanding ** (GX_ALLDIRS), make sure we - free temp_results (return value from glob_vector) - -lib/glob/xmbsrtowcs.c - - xdupmbstowcs: fix call to realloc to use sizeof (char *) instead - of sizeof (char **) when assigning idxtmp - -execute_cmd.c - - print_index_and_element: return 0 right away if L == 0 - - is_dirname: fix memory leak by freeing `temp' - - time_command: don't try to deref NULL `command' when assigning - to `posix_time' - - shell_execve: null-terminate `sample' after READ_SAMPLE_BUF so it's - terminated for functions that expect that +subst.h + - ASS_NOEXPAND: assignment flag that inhibits expansion of associative + array subscripts -builtins/read.def - - read_builtin: don't call bind_read_variable with a potentially-null - string +variables.c + - bind_int_variable: takes new flags arg; flags are taken from the + ASS_ set of assignment flags, changed callers (bashline.c, expr.c, + pcomplete.c) + - bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to + valid_array_reference and array_variable_part to pass along to + skipsubscript, so we don't try to skip over quoted strings in the + subscript + - bind_int_variable: pass flags along to assign_array_element -pcomplete.c - - gen_command_matches: don't call dispose_word_desc with a NULL arg - - gen_compspec_completions: fix memory leak by freeing `ret' before - calling gen_action_completions (tcs, ...). happens when - performing directory completion as default and no completions - have been generated - - gen_progcomp_completions: make sure to set foundp to 0 whenever - returning NULL - - it_init_aliases: fix memory leak by freeing alias_list before - returning +variables.h + - bind_int_variable: updated extern declaration with new flags arg -bashline.c - - command_word_completion_function: don't call restore_tilde with a - NULL directory_part argument - - bash_directory_expansion: bugfix: don't throw away results of - rl_directory_rewrite_hook if it's set and returns non-zero - - bind_keyseq_to_unix_command: free `kseq' before returning error +expr.c + - expr_bind_variable: if the assoc_expand_once option is enabled, and + the flags to evalexp indicate that we have already run the expression + through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable arrayfunc.c - - assign_array_element_internal: make sure `akey' is freed if non-null - before returning error - - assign_compound_array_list: free `akey' before returning error - - array_value_internal: free `akey' before returning error - - unbind_array_element: free `akey' before returning error + - assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag + to array_variable_name to pass along to skipsubscript + - assign_array_element: if flags includes ASS_NOEXPAND, don't run an + associative array subscript through word expansion, just use as-is subst.c - - array_length_reference: free `akey' before returning error in case - of expand_assignment_string_to_string error - - array_length_reference: free `akey' after call to assoc_reference - - skip_to_delim: if skipping process and command substitution, free - return value from extract_process_subst - - parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before - returning if verify_substring_values fails - - parameter_brace_expand: remove two duplicate lines that allocate - ret in parameter_brace_substring case - - parameter_brace_expand: convert `free (name); name = xmalloc (...)' - to use `xrealloc (name, ...)' - - parameter_brace_expand: free `name' before returning when handling - ${!PREFIX*} expansion - - split_at_delims: fix memory leak by freeing `d2' before returning - -redir.c - - redirection_error: free `filename' if the redirection operator is - REDIR_VARASSIGN by assigning allocname - -eval.c - - send_pwd_to_eterm: fix memory leak by freeing value returned by - get_working_directory() - -builtins/cd.def - - change_to_directory: fix memory leak by freeing return value from - resetpwd() - - cd_builtin: fix memory leak by freeing value returned by dirspell() - - cd_builtin: fix memory leak by freeing `directory' if appropriate - before overwriting with return value from resetpwd() - -builtins/type.def - - describe_command: free `full_path' before overwriting it with return - value from sh_makepath + - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic + substitution because the string has already been expanded with + expand_arith_string -builtins/complete.def - - compgen_builtin: fix memory leak by calling strlist_dispose (sl) - before overwriting sl with return value from completions_to_stringlist + 12/15 + ----- +builtins/read.def + - read_builtin: use value of assoc_expand_once for valid_array_reference + as with other uses + - bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND + to assign_array_element -builtins/hash.def - - list_hashed_filename_targets: fix memory leak by freeing `target' +general.c + - assignment: instead of checking whether flags == 0 to allow a `[', + explicitly check for (flags&1) to disallow it. This leaves the door + open for additional flag values -make_cmd.c - - make_arith_for_command: free `init', `test', and `step' before - returning error on parse error +builtins/printf.def + - printf_builtin: use value of assoc_expand_once for + valid_array_reference as with other uses + - bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND + to assign_array_element -jobs.c - - initialize_job_control: don't call move_to_high_fd if shell_tty == -1 + 12/16 + ----- +builtins/history.def + - change history -d option to handle negative arguments; negative + arguments offset from the end of the history list (last_position + 1 + so history -d -1 deletes the history -d command that just got + added). Original patch from Piotr Grzybowski -general.c - - check_dev_tty: don't call close with an fd < 0 - - legal_number: deal with NULL `string' argument, return invalid +doc/bash.1,lib/readline/doc/hsuser.texi + - documented new behavior of negative offsets for `history -d' -lib/sh/fmtulong.c - - fmtulong: if the `base' argument is invalid, make sure we index - buf by `len-1' at maximum + 12/17 + ----- +lib/readline/history.c + - remove_history: use memmove to move the history list around instead + of a loop that copies pointers one at a time, similar to add_history -print_cmd.c - - print_deferred_heredocs: don't try to dereference a NULL `cstring' - - cprintf: make sure to call va_end (args) + 12/19 + ----- +configure.ac + - linux: make sure PGRP_PIPE is defined unconditionally for all kernel + versions greater than 2.3.* -variables.c - - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *) - instead of sizeof (WORD_LIST **) +lib/readline/history.c + - clear_history: when clearing the history, reset history_base to 1 + (its default) + - remove_history_range: new function, removes a set of history entries + and returns them all for deallocation -lib/sh/zmapfd.c - - zmapfd: if read returns error, free result and return -1 immediately - instead of trying to reallocate it +lib/readline/history.h + - remove_history_range: extern declaration - 11/6 - ---- + 12/20 + ----- execute_cmd.c - - cpl_reap: rewrote to avoid using pointer after freeing it; now builds - new coproc list on the fly while traversing the old one and sets the - right values for coproc_list when done + - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the + expression through expand_words_no_vars - 11/12 + 12/21 ----- -builtins/set.def - - if neither -f nor -v supplied, don't allow a readonly function to - be implicitly unset. Fixes bug reported by Jens Schmidt - - -lib/readline/callback.c - - change CALLBACK_READ_RETURN to clear signal handlers before returning - from rl_callback_read_char so readline's signal handlers aren't - installed when readline doesn't have control. Idea from Jan - Kratochvil and the GDB development - team +input.c + - b_fill_buffer: when read returns EOF or error, and we reset the + buffer and pointers, reset the input pointer to 0. Fixes issue + reported by Stephane Chazelas -pcomplete.h - - COPT_NOQUOTE: new complete/compgen option value + 12/22 + ----- +arrayfunc.[ch],subst.c + - array_expand_index: added new FLAGS argument, reserved for future use, + changed callers -builtins/complete.def - - noquote: new complete/compgen option; will be used to disable - filename completion quoting -pcomplete.c - - pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns - of rl_filename_quoting_desired if set; turns it on if unset (value - is inverted, since default is on) + 12/24 + ----- +variables.c + - can_optimize_assignment,optimized_assignment: see if we can detect + whether or not we're trying to append a string to a string variable, + and optimize that using realloc/strcpy. Based on a log-ago + suggestion from Aharon Robbins -doc/bash.1,lib/readline/doc/rluser.texi - - document new -o noquote option to complete/compgen/compopt + 12/27 + ----- +builtins/help.def + - help_builtin: don't pass return value from ngettext() directly to + printf -pathexp.c - - quote_string_for_globbing: if QGLOB_REGEXP, make sure characters - between brackets in an ERE bracket expression are not inappropriately - quoted with backslashes. This is a pretty substantial change, - should be stressed when opening bash up for alpha and beta tests. - Fixes bug pointed out by Stephane Chazleas - + 12/28 + ----- +sig.c + - set_signal_handler: set SA_RESTART for SIGWINCH, so window size + changes don't interrupt open/read/write. Suggested by + Andriy Prystupa back in 10/2016 -doc/{bash.1,bashref.texi} - - document that regexp matches can be inconsistent when quoting - characters in bracket expressions, since usual quoting characters - lose their meaning within brackets - - note that regular expression matching when the pattern is stored - in a shell variable which is quoted for expansion causes string - matching + 12/30 + ----- +execute_cmd.c + - coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc + associated with pid, don't remove it from the list with cpl_delete. + Just mark as dead and wait for coproc_reap/cpl_reap to take care + of disposing it + - execute_coproc: NEW FEATURE: run the coproc name through word + expansion before creating the coproc; this allows unique coprocs + to be created in loops. Originally requested way back in 2012 by + Erik Brandsberg -redir.h - - RX_SAVEFD: new flag value; notes that a redirection denotes an - fd used to save another even if it's not >= SHELL_FD_BASE +command.h + - subshell_com: now has a line number member: line -redir.c - - do_redirection_internal: when deciding whether or not to reset the - close-on-exec flag on a restored file descriptor, trust the value - of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE - if the RX_SAVEFD flag is set - - add_undo_redirect: set the RX_SAVEFD flag if the file descriptor - limit is such that the shell can't duplicate to a file descriptor - >= 10. Fixes a limitation that tripped a coreutils test reported - by Paul Eggert +make_cmd.c + - make_subshell_command: assign current line number (line number of the + ending right paren) to `line' member - 11/19 - ----- -doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi - - make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading - the startup files - - make it clear that bash runs HISTSIZE=500 after reading the - startup files - - make it clear that setting HISTSIZE=0 causes commands to not be - saved in the history list - - make it clear that setting HISTFILESIZE=0 causes the history file - to be truncated to zero size +copy_cmd.c + - copy_subshell_command: copy the `line' member + +execute_command.c + - execute_command_internal: when executing a user subshell (`(command)'), + set the line number and line number for the ERR trap from the line + number saved in the subshell command struct. Fix from + Eduardo A. Bustamante López + - execute_arith_command: set line number for ERR trap from line number + saved in the arith command struct. Fix from + Eduardo A. Bustamante López + - execute_cond_command: set line number for ERR trap from line number + saved in the cond command struct. Fix from + Eduardo A. Bustamante López variables.c - - sv_histsize: change so setting HISTSIZE to a value less than 0 - causes the history to be `unstifled' - - sv_histsize: change so setting HISTFILESIZE to a value less than 0 - results in no file truncation - - make it clear that numeric values less than 0 for HISTFILESIZE or - HISTSIZE inhibit the usual functions + - bind_variable_internal: move can_optimize_assignment call to the + right place - 11/23 + 12/31 ----- -parse.y - - save_input_line_state: add missing `return ls' at the end, since the - function is supposed to return its argument. Pointed out by - Andreas Schwab +variables.c + - find_variable_nameref: treat a circular variable reference as + referring to a variable of that name in the global scope (for now), + if one exists. PROVISIONAL change: inspired by suggestion back in + 6/2016 by Grisha Levit -builtins/read.def - - skip over NUL bytes in input, as most modern shells seem to. Bug - report by Matthew Story + 1/2/2017 + -------- +{expr,general,hashcmd}.c + - include flags.h for flag values -lib/readline/vi_mode.c - - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key +make_cmd.c + - include shell.h instead of the files it includes - 11/25 - ----- -builtins/read.def - - read_builtin: if xrealloc returns same pointer as first argument, - don't bother with the remove_unwind_protect/add_unwind_protect pair - - read_builtin: set a flag (`reading') around calls to zread/zreadc - and readline() - - sigalrm: change to set flag (`sigalrm_seen') and only longjmp if - currently in read(2) (reading != 0) - - CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero, - behavior of old SIGALRM catching function - - read_builtin: call CHECK_ALRM in appropriate places while reading - line of input. Fixes bug reported by Pierre Gaston - +flags.h + - new extern declarations for want_pending_command, read_from_stdin -lib/readline/vi_mode.c - - rl_vi_replace: initialize characters before printing characters in - vi_replace_keymap to their default values in vi_insertion_keymap, - since we're supposed to be in insert mode replacing characters - - rl_vi_replace: call rl_vi_start_inserting to set last command to - `R' for undo - - rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future - use by _rl_vi_done_inserting - - vi_save_insert_buffer: new function, broke out code that copies text - into vi_insert_buffer from _rl_vi_save_insert - - _rl_vi_save_replace: new function, saves text modified by - rl_vi_replace (using current point and vi_replace_count to figure - it out) to vi_replace_buffer - - _rl_vi_save_insert: call vi_save_insert_buffer - - _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call - _rl_vi_save_replace to save text modified in replace mode (uses - vi_save_insert_buffer) - - _rl_vi_replace_insert: new function, replaces the number of chars - in vi_insert_buffer after rl_point with contents ov vi_insert_buffer - - rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and - there's something in vi_insert_buffer. Fixes bug with `.' not - redoing the most recent `R' command, reported by Geoff Clare - in readline area on savannah - - 11/26 - ----- -lib/readline/rlprivate.h - - RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal - to be handled - - RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending - SIGINT to be handled +subst.h + - add extern declaration for expanding_redir, assigning_in_environment -lib/readline/complete.c - - remove all mention of _rl_interrupt_immediately - - rl_completion_matches: check RL_SIG_RECEIVED after each call to - the entry function, call RL_CHECK_SIGNALS if true to handle the - signal - - rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free - and zero out the match_list this function allocated - - rl_completion_matches: if the completion entry function is - rl_filename_completion_function, free the contents of match_list, - because that function does not keep state and will not free the - entries; avoids possible memory leak pointed out by - Garrett Cooper - - gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after - calling rl_attempted_completion_function, free the returned match - list and handle the signal with RL_CHECK_SIGNALS; avoids - possible memory leak pointed out by Garrett Cooper - - - gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after - calling rl_completion_matches, free the returned match list and - handle the signal with RL_CHECK_SIGNALS +trap.h + - add extern declaration for running_trap -lib/readline/util.c - - rl_settracefp: new utility function to set the tracing FILE * +execute_cmd.h + - added extern declarations for variables declared in execute_cmd.c, + changed files that declare lots of extern variables -lib/readline/signals.c - - _rl_sigcleanup: pointer to a function that will be called with the - signal and a void * argument from _rl_handle_signal - - _rl_sigcleanarg: void * that the rest of the code can set to have - passed to the signal cleanup function - - _rl_handle_signal: if _rl_sigcleanup set, call as - (*_rl_sigcleanup) (sig, _rl_sigcleanarg) +shell.h + - added extern declarations for variables declared in shell.c, + changed files that declare lots of extern variables -lib/readline/rlprivate.h - - extern declarations for _rl_sigcleanup and _rl_sigcleanarg +parser.h + - added extern declarations for variables declared in parse.y, + changed files that declare lots of extern variables -lib/readline/complete.c - - _rl_complete_sigcleanup: signal cleanup function for completion code; - calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT - - rl_complete_internal: before calling display_matches if what_to_do - == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match - list gets freed on SIGINT; avoids possible memory leak pointed out - by Garrett Cooper - - rl_complete_internal: in default switch case, call _rl_free_match_list - before returning to avoid memory leak +[lots of changes to reduce the number of extern declarations in C and DEF files] -doc/bashref.texi - - start at a set of examples for the =~ regular expression matching - operator, touching on keeping the pattern in a shell variable and - quoting portions of the pattern to remove their special meaning +parse.y + - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to + use STRING_SAVER - 12/1 - ---- -lib/glob/gmisc.c - - extglob_pattern: new function, returns 1 if pattern passed as an - argument looks like an extended globbing pattern + 1/3 + --- +sig.c + - termsig_handler: don't call end_job_control if subshell_environment + indicates that we're in a command or process substitution. + Provisional fix for bug reported by Russell King -lib/glob/glob.c - - skipname: return 0 immediately if extglob_pattern returns non-zero, - let the extended globbing code do the right thing with skipping - names beginning with a `.' - - mbskipname: return 0 immediately if extglob_pattern returns non-zero, - let the extended globbing code do the right thing with skipping - names beginning with a `.'. Fixes bug reported by Yongzhi Pan - +jobs.c + - end_job_control: only attempt to give the terminal back to + original_pgrp if job_control != 0; don't test interactive_shell - 12/2 - ---- -lib/glob/smatch.c - - patscan, patscan_wc: no longer static so other parts of the glob - library can use them, renamed to glob_patscan, glob_patscan_wc +execute_cmd.c + - execute_disk_command: call QUIT after search_for_command, since + the only time QUIT gets called is when the path is actually + searched. It doesn't happen for an absolute pathname. Fix for + bug reported by Russell King + 1/16 + ---- lib/glob/glob.c - - extern declarations for glob_patscan, glob_patscan_wc - - wchkname: new function, does skipname on wchar_t pattern and dname, - old body of mbskipname after converting to wide chars - - extglob_skipname: new function, checks all subpatterns in an extglob - pattern to determine whether or not a filename should be skipped. - Calls skipname for each subpattern. Dname is only skipped if all - subpatterns indicate it should be. Better fix for bug reported by - Yongzhi Pan - - wextglob_skipname: wide-char version of extglob_skipname, calls - wchkname instead of calling back into mbskipname for each - subpattern to avoid problems with char/wchar_t mismatch - - skipname: call extglob_skipname if extglob_pattern returns non-zero - - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero - - mbskipname: short-circuit immediately if no multibyte chars in - pattern or filename + - extglob_skipname,wextglob_skipname: if we don't find a reason to + not skip the name in any subpattern (r returns 0 for any subpattern), + return 1 because we should skip the name + - extglob_skipname,wextglob_skipname: if we don't find a reason to + not skip the name in any subpattern, but the first part of the extglob + pattern is a wildcard (`*(pat)'), check the rest of the pattern, if + any, to decide whether or not to skip the name. Fixes bug reported + by Grisha Levit -execute_cmd.c - - execute_cond_node: added parens to patmatch assignment statement to - make intent clearer +lib/glob/glob_loop.c + - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR - 12/3 - ---- -configure.in,config.h.in - - check for imaxdiv, define HAVE_IMAXDIV if present +lib/glob/glob.c + - wchkname -> wskipname + - wskipname: now takes a third `flags' argument, like the other variants + of skipname -expr.c - - expassign, exp2: use imaxdiv if available. Doesn't help with checks - for overflow from 10/25 + 1/17 + ---- +redir.c + - here_document_to_fd: set the file descriptor open for writing to the + here document to be close-on-exec. Fixes bug reported by + Siteshwar Vashisht - 12/6 + 1/18 ---- -lib/readline/complete.c - - compute_lcd_of_matches: if we're ignoring case in the matches, only - use what the user typed as the lcd if it matches the first match - (after sorting) up to the length of what was typed (if what the - user typed is longer than the shortest of the possible matches, use - the shortest common length of the matches instead). If it doesn't - match, use the first of the list of matches, as if case were not - being ignored. Fixes bug reported by Clark Wang - +{gmisc,gm_loop}.c + - match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file), + compile twice for single and wide characters as with the rest of + the functions + - umatchlen,wmatchlen: ditto + - extglob_pattern_p: move to gm_loop.c, generalize for regular and + wide-char versions - 12/7 + 1/19 ---- -builtins/cd.def - - cd_builtin: add code to return error in case cd has more than one - non-option argument, conditional on CD_COMPLAINS define (which is - not defined anywhere) +lib/readline/complete.c + - stat_char: fix small memory leak if stat/lstat returns -1 -doc/{bash.1,bashref.texi} - - note that additional arguments to cd following the directory name - are ignored. Suggested by Vaclav Hanzl +bashline.c + - bash_filename_stat_hook,bash_directory_completion_hook: make sure + expand_prompt_string is caled wth W_NOPROCSUB flag + - directory_exists: don't dequote the filename passed as an argument; + this function should never get quoted pathnames - 12/10 - ----- -lib/readline/input.c - - rl_read_key: don't need to increment key sequence length here; doing - it leads to an off-by-one error +subst.c + - expand_word_internal: when calling expand_word_internal recursively + after reading a double-quoted string, make sure the W_NOCOMSUB and + W_NOPROCSUB flags make it to the recursive invocation. Fixes bug + reported by Jens Heyens -lib/readline/macro.c - - rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length - fixed, can decrement current_macro_index by rl_key_sequence_length - (length of key sequence that closes keyboard macro) + 1/23 + ---- +lib/readline/signals.c + - _rl_orig_sigset: original signal mask, set and restored by + rl_set_signals (rl_clear_signals doesn't block signals). If we + are not installing signal handlers, just save signal mask each + time rl_set_signals is called -lib/readline/readline.c - - _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length - when ESC maps to a new keymap and we're converting meta characters - to ESC+key - - _rl_dispatch_subseq: better increment of rl_key_sequence_length - before we dispatch to a function in the ISFUNC case (where the - second increment above should have happened) - - rl_executing_keyseq: the full key sequence that ended up executing - a readline command. Available to the calling application, maintained - by _rl_dispatch_subseq, indexed by rl_key_sequence_length - - rl_executing_key: the key that was bound to the currently-executing - readline command. Same as the `key' argument to the function +lib/readline/input.c + - rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block + the set of signals originally blocked by the calling application. + Fixes bug reported by Frédéric Brière -lib/readline/readline.h - - rl_executing_keyseq: extern declaration - - rl_executing_key: extern declaration - - rl_key_sequence_length: declaration moved here from rlprivate.h, - now part of public interface +parse.y + - yy_readline_get: try to unset NONBLOCK mode on readline's input + file descriptor before calling readline(). Inspired by report from + Siteshwar Vashisht -lib/readline/rlprivate.h - - new extern declaration for _rl_executing_keyseq_size, buffer size - for rl_executing_keyseq + 1/30 + ---- +parse.y + - parse_comsub: don't unconditionally set the LEX_WASDOL flag when we + see a `$'; we should toggle it to accommodate things like $$. + Fixes bug reported by Christian Weisgerber + - parse_matched_pair: do the same thing with LEX_WASDOL -lib/readline/doc/rltech.texi - - documented new variables: rl_executing_key, rl_executing_keyseq, - rl_key_sequence_length + 2/1 + --- +jobs.h + - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of + functions - 12/13 - ----- -bashline.c - - bash_execute_unix_command: replace ad-hoc code that searches - cmd_xmap for correct command with call to rl_function_of_keyseq - using rl_executing_keyseq; now supports key sequences longer - than two characters. Fixes bug reported by Michael Kazior - +jobs.c + - wait_for_job, wait_for_any_job: take new flags argument for use by + the wait builtin + - wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to + terminate instead of change state + - wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for + child process to terminate instead of change state - 12/15 - ----- -make_cmd.c - - make_function_def: don't null out source_file before calling - make_command so it can be used later on when the function definition - is executed +builtins/wait.def + - takes a new `-f' option, signifying to wait until the specified job + or process terminates, instead of changes state -execute_cmd.c - - execute_intern_function: second argument is now FUNCTION_DEF * - instead of COMMAND * - - execute_command_internal: call execute_intern_function with the - new second argument (the entire FUNCTION_DEF instead of just the - command member) - - execute_intern_function: if DEBUGGER is defined, call - bind_function_def before calling bind_function, just like - make_function_def does (might be able to take out the call in - make_function_def depending on what the debugger does with it). - Fixes bug reported by +doc/{bash.1,bashref.texi} + - wait: document the new -f option and its behavior when job control + is enabled + - job control: add a paragraph describing how the wait builtin changes + behavior when job control is enabled: it returns when a job changes + state -expr.c - - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1; - fix typos and logic errors + 2/2 + --- +examples/loadables/fdflags.c + - fdflags: new loadable builtin to set and unset file descriptor flags + (such as non-blocking, though bash undoes that) for descriptors bash + has open. Developed in consultation with Christos Zoulas + - 12/16 - ----- -bashline.c - - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over - command substitutions and doesn't treat them as command separators - - attempt_shell_completion: instead of taking first return from - find_cmd_name as command name to use for programmable completion, - use loop to skip over assignment statements. Fixes problem reported - by Raphael Droz - - attempt_shell_completion: if we don't find a command name but the - command line is non-empty, assume the other words are all assignment - statements and flag that point is in a command position so we can - do command name completion - - attempt_shell_completion: if the word being completed is the first - word following a series of assignment statements, and the - command line is non-empty, flag that point is in a command position - so we can do command name completion - -lib/readline/history.c - - history_get_time: atol -> strtol - - 12/18 - ----- -parse.y - - parser_in_command_position: external interface to the - command_token_position macro for use by other parts of the shell, - like the completion mechanism - -externs.h - - extern declaration for parser_in_command_position - - 12/19 - ----- - -builtins/read.def - - read_builtin: make sure all calls to bind_read_variable are passed - a non-null string. Fixes bug reported by Dan Douglas - - -bashline.c - - attempt_shell_completion: mark that we're in a command position if - we're at the start of the line and the parser is ready to accept - a reserved word or command name. Feature most recently suggested - by Peng Yu - - 12/21 - ----- -lib/readline/bind.c - - _rl_escchar: return the character that would be backslash-escaped - to denote the control character passed as an argument ('\n' -> 'n') - - _rl_isescape: return 1 if character passed is one that has a - backslash escape - - _rl_untranslate_macro_value: new second argument: use_escapes, if - non-zero translate to backslash escapes where possible instead of - using straight \C-x for control character `x'. Change callers - - _rl_untranslate_macro_value: now global - -lib/readline/rlprivate.h - - _rl_untranslate_macro_value: extern declaration - -lib/readline/{macro.c,readline.h} - - rl_print_last_kbd_macro: new bindable function, inspired by patch - from Mitchel Humpherys - -lib/readline/funmap.c - - print-last-kbd-macro: new bindable command, bound to - rl_print_last_kbd_macro - -lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 - - print-last-kbd-macro: document. + 2/3 + --- lib/readline/text.c - - _rl_insert_next: if we're defining a macro, make sure the key gets - added to the macro text (should really audit calls to rl_read_key() - and make sure the right thing is happening for all of them) - -bashline.[ch] - - print_unix_command_map: new function, prints all bound commands in - cmd_xmap using rl_macro_dumper in a reusable format + - rl_previous_screen_line: attempt to move to the same column on the + previous screen line of the current readline buffer by moving back + a number of characters equal to the screen width + - rl_next_screen_line: attempt to move to the same column on the + next screen line of the current readline buffer by moving forward + a number of characters equal to the screen width. Both originally + suggested by Hans Ginzel -builtins/bind.def - - new -X option: print all keysequences bound to Unix commands using - print_unix_command_map. Feature suggested by Dennis Williamson - (2/2011) +lib/readline/readline.h + - rl_{next,previous}_screen_line: extern declarations -doc/{bash.1,bashref.texi} - - document new `bind -X' option +lib/readline/funmap.c + - {next,previous}-screen-line: new bindable command names - 12/24 - ----- +lib/readline/doc/{rluser.texi,readline.3} + - {next,previous}-screen-line: document behavior, including limitations -doc/{bash.1,bashref.texi} - - add a couple of sentences to the description of the case modification - operators making it clearer that each character of parameter is - tested against the pattern, and that the pattern should only attempt - to match a single character. Suggested by Bill Gradwohl - + 2/5 + --- +lib/readline/input.c + - rl_read_key: when reading input from a macro, make sure to return + the next character as an unsigned char, so we handle multibyte + character sequences correctly. Report and fix from Grisha Levit + - 12/28 - ----- + 2/6 + --- shell.c - - init_noninteractive: instead of calling set_job_control(0) to - unconditionally turn off job control, turn on job control if - forced_interactive or jobs_m_flag is set - - shell_initialize: call initialize_job_control with jobs_m_flag as - argument so `bash -m script' enables job control while running the - script - -jobs.c - - initialize_job_control: if the `force' argument is non-zero, turn on - job control even if the shell is not currently interactive - (interactive == 0) - - 12/29 - ----- - -flags.h - - new extern declaration for jobs_m_flag + - --pretty-print: new invocation option, currently undocumented, dumps + a pretty-printed version of a shell script given as an argument to + stdout + - main: call pretty_print_loop() if we're in pretty-printing mode in + a non-interactive shell -builtins/{cd,set}.def,doc/{bash.1,bashref.texi} - - added text clarifying the descriptions of cd -L and -P, suggested by - Padraig Brady - - slight change to the description of `set -P' about resolving symbolic - links +eval.c + - pretty_print_loop: new function, similar to reader_loop, reads + commands and prints them by displaying the result from + make_command_string() -lib/readline/doc/rluser.texi - - Added an example to the programmable completion section: _comp_cd, - a completion function for cd, with additional verbiage. Text - includes a reference to the bash_completion project +externs.h + - pretty_print_loop: new extern declaration - 1/1/2012 - -------- -jobs.c - - set_job_status_and_cleanup: note that a job is stopped due to - SIGTSTP (any_tstped) if job_control is set; there's no need to - test interactive + 2/9 + --- +doc/{bash.1,bashref.texi} + - here strings: correct documentation to note they do not undergo + brace expansion. Report from Conor McCarthy - 1/5 + 2/9 --- -quit.h - - LASTSIG(): new macro, expands to signal number of last terminating - signal received (terminating_signal or SIGINT) +lib/readline/display.c + - expand_prompt: instead of recomputing the line break offsets for + prompts that span multiple screen lines on every call to rl_redisplay, + do it here. Manage a local array local_prompt_newlines; set an offset + every time `physchars' hits a multiple of the screen width. Inspired + by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819 + - rl_redisplay: don't calculate multi-line prompt line break indices + here; use the values calculated by expand_prompt + - rl_{save,restore}_prompt: save and restore local_prompt_newlines -trap.c - - first_pending_trap: returns lowest signal number with a trap pending - - trapped_signal_received: set to the last trapped signal the shell - received in trap_handler(); reset to 0 in run_pending_traps + 2/11 + ---- +lib/readline/mbutil.c + - _rl_find_prev_mbchar_internal: since we're traversing the string + from the beginning, shortcut non-multibyte characters in a UTF-8 + locale -builtins/read.def - - read_builtin: changes to posix-mode (posixly_correct != 0) to make - `read' interruptible by a trapped signal. After the trap runs, - read returns 128+sig and does not assign the partially-read line - to the named variable(s). From an austin-group discussion started - by David Korn +parse.y + - parse_comsub: if we are parsing a here document with a quoted + delimiter (LEX_QUOTEDDOC), we should not remove + pairs from the body of the here document. Need to add LEX_QUOTEDDOC + to the values in tflags when calling shell_getc. Fixes bug reported + by Michael Homer , patch was originally + contributed by Geir Hauge - 1/11 + 2/15 ---- -doc/{bash.1,bashref.texi} - - slight changes to the descriptions of the compat32 and compat40 shell - options to clarify their meaning +jobs.c + - bgp_add: if hashed pid collides with bgpids.head index, print a + warning and move to the next index. Attempt to avoid collision + problem reported by Graham Northup - 1/12 + 2/17 ---- -lib/readline/{colors.[ch],parse-colors.[ch]} - - new files, part of color infrastructure support +subst.c + - process_substitute: call remove_quoted_escapes on the command string + like command substitution does, since the string will be run through + the parser again. Fixes bug reported by David Simmons + -Makefile.in,lib/readline/Makefile.in - - arrange to have colors.o and parse-colors.o added to readline - library +config-top.h + - STATIC_PATH_VALUE: new config variable, undefined by default -{configure,config.h}.in - - check for stdbool.h, define HAVE_STDBOOL_H if found +variables.c + - shell_initialize: if STATIC_PATH_VALUE is defined, use it to set the + PATH variable at shell startup, overriding the environment and any + value for DEFAULT_PATH_VALUE. Based on a suggestion from + Lonnie Abelbeck - 1/14 + 2/18 ---- -lib/readline/bind.c - - colored_stats: new bindable variable, enables using colors to - indicate file type when listing completions - -lib/readline/complete.c - - _rl_colored_stats: new variable, controlled by colored-stats bindable - variable - - colored_stat_start, colored_stat_end: new functions to set and reset - the terminal color appropriately depending on the type of the - filename to be printed - - print_filename: changes to print colors if `colored-stats' variable - set. Changes contributed by Raphael Droz - - -lib/readline/readline.c - - rl_initialize_everything: add call to _rl_parse_colors to parse - color values out of $LS_COLORS. May have to add to rl_initialize - to make more dynamic if LS_COLORS changes (which doesn't happen - very often, if at all) - -lib/readline/rlprivate.h - - _rl_colored_stats: new extern declaration - -lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 - - colored-stats: document new bindable readline variable - -lib/readline/colors.c - - _rl_print_color_indicator: call rl_filename_stat_hook before calling - lstat/stat so we can get color indicators for stuff like - $HOME/Applications - -lib/readline/complete.c - - stat_char: call rl_filename_stat_hook before calling lstat/stat - -findcmd.[ch],execute_cmd.c - - search_for_command: now takes a second `flags' argument; changed - header function prototype and callers - - search_for_command: if (flags & 1), put the command found in $PATH - into the command hash table (previous default behavior) - -execute_cmd.c - - is_dirname: call search_for_command with flags argument of 0 so it - doesn't try to put something in the command hash table +shell.c + - maybe_make_restricted: clear the hash table before making the PATH + variable read-only by calling stupidly_hack_special_variables. + Suggestion from Lonnie Abelbeck -bashline.c - - bash_command_name_stat_hook: a hook function for readline's - filename_stat_hook that does $PATH searching the same way that - execute_cmd.c:execute_disk_command() does it, and rewrites the - passed filename if found. Does not put names into command hash - table. This allows command name completion to take advantage - of `visible-stats' and `colored-stats' settings. - - executable_completion: new function, calls the directory completion - hook to expand the filename before calling executable_file or - executable_or_directory; change command_word_completion_function to - call executable_completion. This allows $HOME/bin/[TAB] to do - command completion and display alternatives +subst.c + - expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word} + to use this new function, initially identical to + expand_string_for_rhs + - getpattern: use expand_string_for_pat to expand the pattern - 1/17 + 2/19 ---- -pcomplete.c - - gen_command_matches: now takes a new second argument: the command - name as deciphered by the programmable completion code and used - to look up the compspec; changed callers (gen_compspec_completions) - - gen_shell_function_matches: now takes a new second argument: the - command that originally caused the completion function to be - invoked; changed callers (gen_compspec_completions)) - - build_arg_list: now takes a new second argument: the command name - corresponding to the current compspec; changed callers - (gen_command_matches, gen_shell_function_matches) - - build_arg_list: now uses `cmd' argument to create $1 passed to - invoked command or shell function - - gen_compspec_completions: if we skipped a null command at the - beginning of the line (e.g., for completing `>'), add a new word for - it at the beginning of the word list and increment nw and cw - appropriately. This is all a partial fix for the shortcoming - pointed out by Sung Pae +subst.c + - expand_string_for_rhs: now that this is only used to expand the RHS + of the various non-pattern ${paramOPword} expansions, set + expand_no_split_dollar_star depending on whether or not the entire + brace expansion is going to be subjected to word splitting: if it's + quoted or if IFS is set but null, we will not be splitting so we set + this to 1 and let $* expand to separate fields separated by a space. + This was heavily debated back in October 2014 and resulted in Posix + interp 888. Reported by Martijn Dekker - 1/18 + 2/20 ---- +subst.c + - expand_string_for_rhs: now takes `op' (brace expansion operator) as + an additional argument; changed call in parameter_brace_expand_rhs + - expand_string_for_rhs: make sure to set expand_no_split_dollar_star + if `op' is `=', since we are supposed to preserve the assignment + statement expansion semantics on the RHS of ${param=word} -{configure,config.h}.in - - new check: check for AUDIT_USER_TTY defined in , - define HAVE_DECL_AUDIT_USER_TTY if both are found - -lib/readline/rlconf.h - - ENABLE_TTY_AUDIT_SUPPORT: new define, allows use of the Linux kernel - tty auditing system if it's available and enabled +jobs.c + - bgp_delindex: make sure to set ps->pid to NO_PID so we more + effectively remove it from the hash table. It shouldn't matter as + long as nothing in pidstat_table points to it, but better to be safe + - bgp_delete,bgp_search: generalize previous collision detection to + loop detection: abort search if we are going to go back to the + first index we tried -lib/readline/util.c - - _rl_audit_tty: new function, send a string to the kernel tty audit - system + 2/21 + ---- +lib/readline/vi_mode.c + - rl_vi_bword: if we're trying to move backward to non-whitespace + in a line that begins with whitespace, make sure we don't move + point to 0 and test memory locations before the start of the + buffer. Report and fix from Jason Hood -lib/readline/rlprivate.h - - _rl_audit_tty: new extern declaration +lib/readline/display.c + - expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to + initialize it. If it's still 0 after that, guess that the screen + width is 80 and use that to guess how many screen lines the prompt + consumes lib/readline/readline.c - - readline: call _rl_audit_tty with line to be returned before returning - it if the Linux tty audit system is available and it's been enabled - in rlconf.h Original patch from Miroslav Trmac; recent request - from Miroslav Lichvar + - readline_internal_setup: if in emacs editing mode, and we are + showing the editing mode in the prompt, call _rl_reset_prompt() to + make sure that the updated setting of _rl_show_mode_in_prompt + (presumably set in an inputrc file) is reflected in the redisplay + performed by rl_callback_newline via readline_internal_setup. + Fix from Jason Hood - 1/21 + 2/22 ---- +builtins/complete.def + - print_one_completion,print_compopts: make sure to display the + `nosort' and `noquote' options if they've been set for a particular + compspec. Fix from Grisha Levit -lib/readline/readline.c: - - _rl_dispatch_subseq: add an inter-character timeout for multi-char - key sequences. Suggested by . Still needs - work to make a user-settable variable - -parse.y - - shell_getc: make code that uses the pop_alias dependent on ALIAS - define - -variables.h - - sv_tz: extern define should only depend on HAVE_TZSET - -expr.c - - expr_streval: if ARRAY_VARS is not defined, set lvalue->ind to -1; - move assignment to `ind' inside define - - expr_bind_array_element: declaration and uses need to be #ifdef - ARRAY_VARS - -arrayfunc.h - - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not - defined; used in subst.c unconditionally - -sig.h - - make the signal blocking functions not dependent on JOB_CONTROL - -sig.c - - sigprocmask: make the replacement definition not dependent on - JOB_CONTROL +builtins/read.def + - read_builtin: if -e is supplied, read needs to free rlbuf before + returning, since it uses discard_unwind_frame at that point. Bug + and fix from ZhangXiao -trap.c - - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on - HAVE_POSIX_SIGNALS and BSD signals +execute_cmd.c + - execute_for_command: when using a nameref as the for loop control + variable, make sure we check for readonly namerefs and make sure + that we force bind_variable to enforce restrictions on nameref + assignments. Fix from Grisha Levit - 1/24 + 2/23 ---- +general.c + - make_absolute: convert deprecated cygwin_conv_to_full_posix_path + to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...) -print_cmd.c - - print_redirection_list: change the conditions under which - r_duplicating_output_word is mapped to r_err_and_out to more or - less match those used in redir.c. Fixes bug pointed out by - Dan Douglas - +{shell,variables}.c,config-top.h + - modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE; + don't use it in shell_initialize; set PATH to it just before + imposing restricted shell restrictions - 1/29 + 2/24 ---- -lib/readline/signals.c - - _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies - unless SIGWINCH is defined. Fixes bug reported by Pierre Muller - +subst.c + - expand_string_for_rhs: revert change from 2/19 concerning setting + expand_no_split_dollar_star so we are consistent with the Posix + examples. This anticipates Martijn Dekker initiating an austin + group discussion about this case -doc/{bash.1,bashref.texi} - - small modifications to the introduction to the REDIRECTION section - to describe how redirections can modify file handles - - small modification to the section describing base#n to make it - clearer that n can be denoted using non-numerics. From a posting - by Linda Walsh + 2/25 + ---- +pcomplete.c + - gen_shell_function_matches: if COMPREPLY is an associative array, + don't coerce it to an indexed array, which will fail to produce any + matches anyway. Report from Grisha Levit + - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore + the nameref attribute. Report from Grisha Levit + - 2/2 - --- -builtins/printf.def - - printf_builtin: make sure vbuf is intialized and non-null when -v - is supplied, since other parts of the code assume that it's not - null (e.g., bind_printf_variable()). Fixes bug reported by Jim - Avera +subst.c + - parameter_brace_expand: if expand_no_split_dollar_star is set, make + sure chk_atstar treats ${var[*]} as quoted by passing Q_DOUBLE_QUOTES + as the second argument. Fixes differing treatment of $* and ${v[*]} + reported by Grisha Levit , because otherwise + *contains_dollar_at gets set to 1 and the word is inappropriately + split - 2/4 + 3/1 --- -lib/readline/undo.c - - _rl_free_undo_list: new function, old body of rl_free_undo_list, - frees undo entries in UNDO_LIST * passed as argument - - rl_free_undo_list: call _rl_free_undo_list - -lib/readline/rlprivate.h - - _rl_free_undo_list: new extern declaration - - _rl_keyseq_timeout: new extern declaration (see below) - -lib/readline/misc.c - - rl_clear_history: new function. Clears the history list and frees - all associated data similar to history.c:clear_history(), but - takes rl_undo_list into account and frees and UNDO_LISTs saved as - `data' members of a history list entry - -lib/readline/doc/rltech.texi - - rl_clear_history: documented - -lib/readline/readline.c - - _rl_keyseq_timeout: new variable to hold intra-key timeout value - from 1/21 fix; specified in milliseconds. Default value is 500 - - _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key - timeout if it's greater than 0; no timeout if <= 0 - - _rl_dispatch_subseq: don't check for queued keyboard input if we have - pushed or pending input, or if we're reading input from a macro +subst.c + - expand_word_list_internal: if a variable assignment fails (e.g., due + to a readonly variable) in a non-interactive posix mode shell, don't + abort the shell if the assignment is being performed by the command + builtin, even if it's something like `command eval v=1'. Fixes + RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838 + (reported by Denys Vlasenko) -lib/readline/bind.c - - keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout - - string_varlist: add keyseq-timeout - - sv_seqtimeout: new function to modify value of _rl_keyseq_timeout; - clamps negative values at 0 for now - - _rl_get_string_variable_value: return value for keyseq-timeout + 3/3 + --- +builtins/shopt.def + - set_compatibility_level: make sure that changing the compatibility + level sets or modifies BASH_COMPAT. Fixes bug reported by + Stephane Chazelas -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - keyseq-timeout: documented +lib/glob/smatch.c + - is_cclass: broke into two functions: is_valid_cclass and cclass_test, + for future expansion. No functionality change -lib/readline/isearch.c - - _rl_isearch_dispatch: modification to fix from 7/18 to not use - cxt->keymap and cxt->okeymap, since by the time this code is - executed, they are equal. Use `f' to check for rl_insert or - unbound func - - _rl_isearch_dispatch: if we're switching keymaps, not in - callback mode, and don't have pending or pushed input, use - _rl_input_queued to resolve a potentially ambiguous key sequence. - Suggested by Roger Zauner - - _rl_isearch_dispatch: if we have changed keymaps and resolved to - an editing function (not self-insert), make sure we stuff the - right characters back onto the input after changing the keymap - back so the right editing function is executed after the search - is terminated. Rest of fix for bug reported by Roger Zauner - +lib/glob/sm_loop.c + - BRACKMATCH: when testing a character against a character class name, + use the unfolded (original) character, since we're not performing a + comparison. This is what glibc does. Fixes bug reported by + Lukáš BaÅinka - 2/5 + 3/4 --- -builtins/gen-helpfiles.c - - new file: reads struct builtin and writes the long docs to files - in the `helpdirs' subdirectory. The filename is given in the - previously-unused `handle' member of the struct builtin. Links - with `tmpbuiltins.o', which is created by Makefile to have the - right long documentation. When not cross-compiling, gets the - right #defines based on configuration options from config.h instead - of trying to parse conditional parts of def files. Fixes - shortcoming pointed out by Andreas Schwab - -builtins/Makefile.in - - tmpbuiltins.c: new generated file, created to enable creation of - separate helpfiles based on correct #defines instead of trying to - parse conditional parts of def files - - gen-helpfiles: new program to generate helpfiles, links with - tmpbuiltins.o - - HELPFILES_TARGET: new target, substituted by configure to `helpdoc' - if separate helpfiles requested - - targets: new target, libbuiltins.a and $(HELPFILES_TARGET) - - CREATED_OBJECTS: new variable, holds created object files for - make clean; changed make clean to remove created objects - - helpdoc: changed to call gen-helpfiles instead of mkbuiltins - -Makefile.in - - when building libbuiltins.a, recursively call make with `targets' - argument to make sure separate helpfiles get built - -configure.in - - substitute `helpdoc' as value of HELPFILES_TARGET if - --enable-separate-helpfiles supplied as configure argument +doc/{bash.1,bashref.texi} + - note that the arguments to -eq and the rest of the arithmetic + operators are evaluated as expressions when using [[. Report from + Rob la Lau -builtins/mkbuiltins.c - - `-nofunctions': new argument, causes mkbuiltins to not write value - for function implementing a particular builtin to struct builtin - and to write document file name to `handle' member of struct builtin - - no longer writes separate helpfiles; that is left to gen-helpfiles - 2/8 + 3/7 --- -subst.c - - make sure last_command_exit_value is set to a non-zero value before - any calls to report_error, since `-e' set will short-circuit - report_error. Fixes bug reported by Ewan Mellor - - -variables.c - - make_local_array_variable: added second argument; if non-zero, - function will return an existing local associative array variable - instead of insisting on an indexed array +lib/readline/display.c + - update_line: completely rewrote the code that handles line wrapping + in the presence of multibyte/double-width characters; punts to a + dumb update in cases where the number of screen positions doesn't + match + - update_line: in one case, where we are deleting characters from the + line, if we are writing a non-space into the last screen character + position, note that we are no longer using a space as a placeholder + for a line wrap where there is a multi-width character that won't + fit on the screen line (wrapped_line[current_line+1] = 0) -variable.h,subst.c - - make_local_array_variable: changed prototype and caller + 3/10 + ---- +lib/readline/readline.c + - bind_arrow_keys_internal: add default key bindings for control- + arrow keys, suggested by Per Bothner -builtins/declare.def - - declare_internal: add second arg to call to make_local_array_variable; - making_array_special, which indicates we're processing an - assignment like declare a[b]=c. Fixes seg fault resulting from - a being an already-declared local associative array variable in a - function. Ubuntu bash bug 928900. + 3/13 + ---- +doc/{bash.1,bashref.texi} + - clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and + PS4) before being displayed. Based on a report from Grisha Levit + - 2/14 + 3/14 ---- +input.c + - bufstream_ungetc: return EOF if being asked to unget a character to + a NULL buffer + - buffered_getchar: check buffered_fd is valid and buffers[buffered_fd] + is non-NULL before trying to dereference. Fixes bug reported by + floyd execute_cmd.c - - execute_command_internal: if redirections into or out of a loop fail, - don't try to free ofifo_list unless saved_fifo is non-zero. It's - only valid if saved_fifo is set + - execute_null_command: if we fork to execute the command, the subshell + is not interactive + - execute_null_command: for safety's sake, if a redirection attached + to a null command affects fd 0 or the fd the shell is reading for + input, and the redirection can potentially change or close that file + descriptor, force a fork so the redirection is done in a subshell - 2/15 + 3/15 ---- -{arrayfunc,braces,variables}.c - - last_command_exit_value: make sure it's set before any calls to - report_error, since -e will cause that to exit the shell +lib/readline/display.c + - update_line: if we have to output some bytes, and we are outputting + the prompt string, make sure we correct _rl_last_c_pos if we are + at the wrap offset -- what if all of the characters in the prompt + are invisible, so the visible length is 0? Fixes display bug + reported by Grisha Levit -builtins/common.c - - get_job_by_name: call internal_error instead of report_error so this - doesn't exit the shell +execute_cmd.c + - undo_partial_redirects: new function, performs redirections specified + in redirection_undo_list and disposes of them. Intended to be used + to unwind redirections performed before a redirection error + - dispose_partial_redirects: new function, disposes of + redirection_undo_list and nulls the list + - execute_command_internal: use undo_partial_redirects - 2/18 - ---- -builtins/evalstring.c - - parse_and_execute: make sure the file descriptor to be redirected to - is 1 before calling cat_file. One fix for bug reported by Dan Douglas - +execute_cmd.h + - undo_partial_redirects: extern declaration + - dispose_partial_redirects: extern declaration -parse.y - - read_token_word: don't return NUMBER if a string of all digits - resolves to a number that overflows the bounds of an intmax_t. - Other fix for bug reported by Dan Douglas +subst.c + - exp_jump_to_top_level: if we are throwing an expansion error while + expanding a redirection (expanding_redir != 0), undo any undoable + redirections by calling undo_partial_redirects() so we don't leave + any in place - 2/19 +variables.c + - initialize_shell_variables: if SHELLOPTS is in the environment, + unset the readonly attribute on any existing variable with that + name. It may have been created by processing a -o option on the + command line. Fixes issue reported by Stephane Chazelas + + + 3/16 ---- -lib/sh/strtrans.c - - ansicstr: use 0x7f as the boundary for characters that translate - directly from ASCII to unicode (\u and \U escapes) instead of - UCHAR_MAX, since everything >= 0x80 requires more than one byte. - Bug and fix from John Kearney +lib/readline/histfile.c + - read_history_range: short-circuit and do nothing if the history file + is of 0 size + - read_history_range: make sure the buffer is zero-terminated so the + timestamp tests work right for history files of 1 character. Report + and recommended fix from Denis Martinez -builtins/printf.def - - tescape: ditto for printf \u and \U escape sequences +lib/readline/complete.c + - compute_lcd_of_matches: when trying to compute the common prefix + of a set of matches while performing case-insensitive completion + matching, don't sort the match list unless rl_sort_completion_matches + is non-zero. Fixes problem reported by Roee Bar - 2/20 + 3/18 ---- -lib/sh/unicode.c - - u32toutf8: fix to handle encodings up to six bytes long correctly - (though technically UTF-8 only has characters up to 4 bytes long). - Report and fix from John Kearney - - u32toutf8: first argument is now an unsigned 32-bit quantity, - changed callers (u32cconv) to pass c instead of wc - - u32reset: new function, resets local static state to uninitialized - (locale information, currently) +subst.c + - extract_dollar_brace_string: handle process substitution embedded in + a ${...} expansion in the same way as command substitution. Reported + by D630 -locale.c - - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the - cached locale information used by u32cconv. From a report from - John Kearney +parse.y + - LEX_GTLT: new flag, set by parse_matched_pair when a `<' or '>' is + read + - parse_matched_pair: handle an embedded process substitution like an + embedded command substitution if we are parsing an array index or + a dollar-brace expansion. Reported by D630 - 2/21 + 3/21 ---- -doc/{bash,builtins}.1 - - minor changes from Bjarni Ingi Gislason - -lib/sh/unicode.c - - u32cconv: only assume you can directly call wctomb on the passed - value if __STDC_ISO_10646__ is defined and the value is <= - 0x7fffffff - - stub_charset: return locale as default instead of "ASCII", let - rest of code decide what to do with it +subst.h + - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by + make_variable_value -lib/readline/parens.c - - _rl_enable_paren_matching: make paren matching work in vi insert - mode. Bug report from +variables.c + - make_variable_value: ASS_NOEVAL: if this is set, don't attempt + arithmetic evaluation or case modification, just produce the value + (still honor ASS_APPEND) + - make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level + if arithmetic evaluation fails due to a syntax error + - bind_variable_internal: make sure aflags is passed to all calls to + make_variable_value + - push_temp_var: add ASS_NOLONGJMP to the flags passed to + bind_variable_internal. Fixes bug reported by D630 - 2/22 - ---- -lib/sh/shquote.c - - sh_backslash_quote: quote tilde in places where it would be - expanded. From a report from John Kearney +bashline.c + - bash_execute_unix_command: don't bother to attempt optimization by + checking whether the call to parse_and_execute changes $READLINE_LINE; + it can be defeated by the new code that optimizes appends to string + variables. Bug reported by Grisha Levit - 2/23 + 3/22 ---- -execute_cmd.c - - execute_pipeline: wrap the discard_unwind_frame call in #ifdef - JOB_CONTROL, since the frame is only created if JOB_CONTROL is - defined. Bug and fix from Doug Kehn +subst.c + - expand_string_for_rhs: re-apply change from 2/19 based on discussion + on the austin-group mailing list about how unquoted ${var-$*} + expands when IFS is null. Originally reported by Martijn Dekker + - 2/25 + 3/25 ---- -error.c - - report_error: make sure last_command_exit_value is non-zero before - we call exit_shell, since the exit trap may reference it. Call - exit_shell with last_command_exit_value to allow exit statuses - other than 1 - -unicode.c - - stub_charset: use local static buffer to hold charset, don't change - value returned by get_locale_var. Based on idea and code from - John Kearney - - u32toutf16: function to convert unsigned 32-bit value (unicode) to - UTF-16. From John Kearney - - u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t - is two bytes, send result to wcstombs, return if not encoding error. - From John Kearney - - u32cconv: return UTF-8 conversion if iconv conversion to local - charset is unsupported - - 3/2 - --- -lib/readline/complete.c - - print_filename: if there is no directory hook, but there is a stat - hook, and we want to append a slash to directories, call the stat - hook before calling path_isdir on the expanded directory name. - Report and pointer to fix from Steve Rago +parse.y + - read_token_word: if we read a WORD immediately after a CASE, FOR, or + SELECT, increment `expecting_in_token' to note that we're going to + be reading IN as the next non-newline token + - special_case_tokens: if we're expecting an IN (expecting_in_token > 0) + and we have an "in", return IN and decrement expecting_in_token. This + is a better implementation of Posix grammar rule 6 than the previous + code in that function (which is still there for posterity, but should + eventually be removed). Fixes bug reported by Torka Noda + - 3/3 - --- -builtins/evalstring.c - - parse_and_execute: fix to change of 2/18: make sure the file - descriptor being redirected to is 0 before calling cat_file when - we see something like $(< file). Real fix for bug reported by - Dan Douglas +subst.c + - string_list_pos_params: if the expansion is not quoted, and IFS is + null, return a string containing the quoted positional parameters + separated by spaces. Callers know what to do with the string + - parameter_brace_substring,parameter_brace_remove_pattern, + parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod: + for the VT_POSPARMS case, after calling the operator-specific + expansion function, which eventually calls string_list_pos_params, + leave the returned string alone, since it's already quoted properly + - parameter_brace_expand: after calling the above functions to perform + expansions, if the expansion is being performed on an unquoted $* + when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC + so that splitting on spaces is performed on the already-quoted word. + Fixes bug reported by Grisha Levit + 3/28 + ---- subst.c - - parameter_brace_patsub: run the replacement string through quote - removal even if the expansion is within double quotes, because - the parser and string extract functions treat the quotes and - backslashes as special. If they're treated as special, quote - removal should remove them (this is the Posix position and - compatible with ksh93). THIS IS NOT BACKWARDS COMPATIBLE. + - process_substitute: change so the subshell doesn't inherit the 'v' + option, like command substitution now does (as of bash-4.4). + Suggested by Grisha Levit - 3/4 - --- -lib/readline/complete.c - - rl_menu_complete: fix to make show-all-if-ambiguous and - menu-complete-display-prefix work together if both are set. Fix - from Sami Pietila + 3/30 + ---- +subst.c + - parameter_brace_casemod: now takes a pflags parameter, like + parameter_brace_patsub; changed callers + - parameter_brace_transform: now takes a pflags parameter, like + parameter_brace_patsub; changed callers + - pos_params_pat_subst,pos_params_modcase: if mflags indicates we're + on the rhs of an assignment statement and not going to perform + word splitting, we're expanding $*, and $IFS is null, make sure + string_list_pos_params treats the expansion as double-quoted, so + the positional parameters will be concatenated. Fixes bug reported + by Grisha Levit - 3/5 - --- -bashline.c - - dircomplete_expand_relpath: new variable, if non-zero, means that - `shopt -s direxpand' should expand relative pathnames. Zero by - default, not user-settable yet - - bash_directory_completion_hook: if we have a relative pathname that - isn't changed by canonicalization or spell checking after being - appended to $PWD, then don't change what the user typed. Controlled - by dircomplete_expand_relpath + 3/31 + ---- +doc/{bash.1,bashref.texi} + - add notes to the description of pipelines emphasizing that each + element of a pipeline is executed in a subshell, referring to the + description of a command execution environment, and that the + lastpipe option can modify that behavior. From a discussion with + Jean Delvare - 3/7 + 4/1 --- -m4/timespec.m4 - - new macros, cribbed from gnulib and coreutils: find out whether we - have `struct timespec' and what file includes it - -m4/stat-time.m4 - - new macros, cribbed from gnulib and coreutils: find out whether the - mtime/atime/ctime/etctime fields of struct stat are of type - struct timespec, and what the name is - -include/stat-time.h - - new file, cribbed from gnulib, with additions from coreutils: include - the right file to get the struct timespec define, or provide our own - replacement. Provides a bunch of inline functions to turn the - appropriate members of struct stat into `struct timespec' values, - zeroing out the tv_nsec field if necessary - -test.c - - include "stat-time.h" for the nanosecond timestamp resolution stuff - - stat_mtime: new function, returns struct stat and the mod time - normalized into a `struct timespec' for the filename passed as the - first argument - - filecomp: call stat_mtime instead of sh_stat for each filename - argument to get the mtime as a struct timespec - - filecomp: call timespec_cmp instead of using a straight arithmetic - comparison for the -nt and -ot operators, using timespec returned by - stat_mtime. Added functionality requested by by Werner Fink - for systems that can support it - - 3/10 - ---- -include/posixdir.h - - REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature - test macros to decide whether dirent.d_ino is present and usable; - define D_INO_AVAILABLE. Report and fix from Fabrizion Gennari - - - D_FILENO_AVAILABLE: define if we can use dirent.d_fileno - -lib/sh/getcwd.c - - use D_FILENO_AVAILABLE to decide whether or not to compile in - _path_checkino and whether or not to call it. Report and initial - fix from Fabrizion Gennari - -lib/readline/signals.c - - make sure all occurrences of SIGWINCH are protected by #ifdef - -sig.c - - make sure all occurrences of SIGCHLD are protected by #ifdef - -nojobs.c - - make sure SA_RESTART is defined to 0 if the OS doesn't define it - -version.c - - show_shell_version: don't use string literals in printf, use %s. - Has added benefit of removing newline from string to be translated - -trap.c - - queue_sigchld_trap: new function, increments the number of pending - SIGCHLD signals by the argument, which is by convention the number - of children reaped in a call to waitchld() - -trap.h - - queue_sigchld_trap: new extern declaration - -jobs.c - - waitchld: if called from the SIGCHLD signal handler (sigchld > 0), - then call queue_sigchld_trap to avoid running the trap in a signal - handler context. Report and original fix from Siddhesh Poyarekar - - -lib/sh/unicode.c - - u32tocesc: take an unsigned 32-bit quantity and encode it using - ISO C99 string notation (\u/\U) - - u32cconv: call u32tocesc as a fallback instead of u32cchar - - u32cconv: call u32tocesc if iconv cannot convert the character. - Maybe do the same thing if iconv_open fails - - u32reset: call iconv_close on localconv if u32init == 1 - - 3/11 - ---- -config-top.h - - CHECKWINSIZE_DEFAULT: new define, set to initial value of - check_window_size (shopt checkwinsize): 0 for off, 1 for on. - Default is 0 - -{jobs,nojobs}.c - - check_window_size: default initial value to CHECKWINSIZE_DEFAULT - - 3/13 - ---- -doc/bashref.texi - - change text referring to the copying restrictions to that - recommended by the FSF (no Front-Cover Texts and no Back-Cover - Texts) - -lib/readline/doc/{history,rlman,rluserman}.texi - - change text referring to the copying restrictions to that - recommended by the FSF (no Front-Cover Texts and no Back-Cover - Texts) - - 3/15 - ---- -array.c - - LASTREF_START: new macro to set the starting position for an array - traversal to `lastref' if that's valid, and to the start of the array - if not. Used in array_reference, array_insert, array_remove - - array_remove: try to be a little smarter with lastref instead of - unconditionally invalidating it +subst.c + - expand_word_internal: set had_quoted_null to note for later if we + expand '', "", or "$x" when x is unset + - expand_word_internal: if we expand "$param" (or "${param}") and we + come back with a single word with the W_HAVEQUOTEDNULL flag set, + make sure we set had_quoted_null to remember it for later. In this + case, if we already have seen a quoted null and we expanded $@ in + this (sub)string expansion, we don't want to do any of the special + $@ handling. In particular, we don't want to set *expanded_something, + because that will result in word splitting and quoted null removal. + Fixes bug reported by Grisha Levit + - parameter_brace_patsub: when expanding ${*/pat/sub} in the case + where ifs_is_null != 0 and (pflags & PF_NOSPLIT2) (meaning we aren't + going to be doing word splitting), pass MATCH_ASSIGNRHS so we do + the right thing in this case. Part of a set of cases inspired by + Grisha Levit + - param_expand: case '*': if we are on the rhs of an assignment + (PF_ASSIGNRHS) and ifs is unset, and $1 == " ", we need to make sure + string_list_dollar_at gets called with Q_DOUBLE_QUOTES so it quotes + the positional parameters before joining them into a string with + string_list_internal. Otherwise, that first space gets removed by + the implicit word splitting that gets performed. Reported by + Grisha Levit - 3/16 - ---- array.c - - array_insert: fix memory leak by deleting element to be added in the - case of an error + - array_patsub,array_modcase: handle ${A[*]} identically to $* when + not quoted and IFS is null (separate with spaces). Makes things + like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null - 3/18 - ---- -lib/sh/mbschr.c - - mbschr: don't call mbrlen unless is_basic is false; devolves to a - straight character-by-character run through the string +subst.c + - parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]} + when the match is on the rhs of an assignment statement (PF_ASSIGNRHS) + and ifs is null, make sure the match is performed as if it were + quoted + - parameter_brace_substring: now takes a PFLAGS argument + - parameter_brace_substring: if expanding $* in a context where we + don't want to do word splitting (expand_no_split_dollar_star && + PF_NOSPLIT2), make sure we expand $* as if it were quoted + - parameter_brace_substring: if expanding an unquoted $* on the rhs of + an assignment statement when IFS is null, make sure we expand the $* + as if it were quoted - 3/19 - ---- -stringlib.c - - substring: use memcpy instead of strncpy, since we know the length - and are going to add our own NUL terminator + 4/4 + --- +doc/{bash.1,bashref.texi} + - read: document that a delim argument of '' terminates each line when + a NUL character appears - 3/20 - ---- + 4/5 + --- subst.c - - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted - null string (a list with one element for which - QUOTED_NULL(list->word->word) returns true), return the quoted null - and set the flags in the returned word to indicate it. Fixes bug - reported by Mark Edgar - -lib/sh/tmpfile.c - - use random(3) instead of get_random_number to avoid perturbing the - random sequence you get using $RANDOM. Bug report and fix from - Jurij Mihelic + - parameter_brace_expand_word: handle case where unquoted $@ is + expanded in a context where word splitting is not performed (PF_NOSPLIT2) + and IFS is not equal to the standard value + - param_expand: handle case where unquoted $@ is expanded in a context + where word splitting is not performed (PF_NOSPLIT2) and IFS is not + equal to the standard value. Fixes bug with IFS == $1 when expanding + unquoted $@ reported by Grisha Levit - 3/21 - ---- -config-top.h - - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize - sequential indexed array assignment patterns. Defined to 1 by - default + 4/7 + --- +subst.c + - pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $* + as quoted unless expand_no_split_dollar_star is also set. Fixes + expansion bug reported on 4/4 by Grisha Levit + - parameter_brace_transform: if we transform unquoted A[@] or A[*] + when IFS is null, don't quote the result of array_transform in the + same way we don't quote the result of parameter_list_transform, + since it will come back quoted. Fixes bug reported by + Grisha Levit + - list_transform: if we transform unquoted $* or ${a[*]} when IFS is + null and expand_no_split_dollar_star is non-zero, call + string_list_pos_params with Q_DOUBLE_QUOTES to inhibit splitting. + We do this in all cases except @Q, which is inconsistent but more + intuitive. + Fixes bug reported by Grisha Levit -array.c - - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined, - start the search at lastref (see change from 3/15) + 4/8 + --- +builtins/read.def + - read_mbchar: if unbuffered == 2, we are running read -N and need to + use zreadn to read the rest of the multibyte char, since the + previous call to zreadn may have buffered characters. Fixes bug + reported by Stephane Chazelas - 3/27 - ---- -print_cmd.c - - debug_print_word_list: new debugging function, prints a word list - preceded by an optional string and using a caller-specified - separator +pathexp.h + - QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn + CTLESC CTLESC (quoted CTLESC that's usually removed as part of + word splitting or quote removal) into CTLESC - 4/1 - --- -command.h - - W_ASSNGLOBAL: new flag, set to indicate declare -g +pathexp.c + - quote_string_for_globbing: if QGLOB_CTLESC is present in flags, + turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded + by a backslash. Callers can't do this because the remaining CTLESC + will be treated as a quoting character and turned into a backslash execute_cmd.c - - fix_assignment_words: note that we have a -g argument to an assignment - builtin and set the W_ASSNGLOBAL flag in the variable word + - execute_case_command: if the pattern is not quoted, make sure to tell + quote_string_for_globbing to turn CTLESC CTLESC into CTLESC by + passing QGLOB_CTLESC. Fixes bug reported 4/2 by Martijn Dekker + + 4/9 + --- subst.c - - dump_word_flags: print out W_ASSNGLOBAL if present - - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set - and W_ASSNGLOBAL is not. Don't want to create a local variable even - if variable_context is non-zero if ASSNGLOBAL is set. Fixes bug - reported by Bill Gradwohl + - string_transform: after calling ansiexpand for the `E' transformation, + need to call dequote_escapes because ansiexpand assumes it is being + called by the parser and arranges for ansicstr to quote CTLESC and + CTLNUL with CTLESC. Reported by Grisha Levit - 4/7 - --- -lib/readline/readline.c - - _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to - ESC processing when in vi mode. After hitting ESC, readline will - wait up to _rl_keyseq_timeout*1000 microseconds (if set) for - additional input before dispatching on the ESC and switching to - command/movement mode. Completes timeout work suggested by - ; this prompted by report from Barry Downes - +variables.c + - mk_env_string: when exporting functions, run them through + dequote_escapes because any strings containing CTLESC or CTLNUL are + still quoted with CTLESC. Reported by Grisha Levit + -lib/sh/shmbchar.c - - sh_mbsnlen: new function, returns the number of (possibly multibyte) - characters in a passed string with a passed length, examining at most - maxlen (third argument) bytes +subst.[ch] + - quote_escapes,dequote_escapes: now take const char * argument -externs.h - - sh_mbsnlen: extern declaration for new function +execute_cmd.c + - execute_intern_function: if the function name contains CTLESC, run + it through dequote_escapes just in case it got CTLESC quoting + CTLESC or CTLNUL from the parser -shell.c - - exit_shell: call maybe_save_shell_history if remember_on_history is - set, not just in interactive shells. That means the history is - saved if history is enabled, regardless of whether or not the shell - is interactive + 4/11 + ---- +eval.c + - reader_loop: make sure PS0 is expanded and displayed before + incrementing the command number -doc/{bash.1,bashref.texi} - - TMOUT: fix description to make it explicit that TMOUT is the timeout - period for a complete line of input, not just any input. Fixes - problem reported in Ubuntu bug 957303: - https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303 - - HISTFILE: document change to write history list to history file in - any shell with history enabled, not just interactive shells. This - seems to be more logical behavior. Suggested by Greg Wooledge - +parse.y + - prompt_history_number: function to make history number as reported + by \!, or posix mode !!, be the same index that the (possibly multi- + line) command will be stored with. The history library increments + history_offset as soon as a new line is entered, and it's up to the + history code to store the second and subsequent lines of a command + in the same history entry. If we are expanding PS0 or PS4, or + a ${var@P} expansion, we're already past the history entry no + matter what. Inspired by patch from Grisha Levit + + - decode_prompt_string: call prompt_history_number + - decode_prompt_string: if expanding PS4 or ${var@P}, make the + command number the same as reported by PS0/PS1/PS2 4/12 ---- -lib/readline/colors.h - - only include stdbool.h if HAVE_STDBOOL_H is defined - - if HAVE_STDBOOL_H is not defined, provide enough definition for the - library to use `bool', `true', and `false' - -lib/readline/parse-colors.[ch] - - don't try to include at all; rely on colors.h to do it - -lib/sh/snprintf.c - - vsnprintf_internal: only treat '0' as a flag to indicate zero padding - if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat - it as the first digit of a precision specifier. Fixes bug reported - by Petr Sumbera - - 4/15 - ---- -lib/sh/snprintf.c - - vsnprintf_internal: if the '0' and '-' flags both occur, the '0' - flag is ignored -- Posix. Start of a series of fixes based on - tests and patches from Petr Sumbera - - PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+' - - vsnprintf_internal: when '+' is read as a flag, don't set right- - justify flag if the LADJUST (`-') flag has already been supplied - - floating: make sure to output space padding before the `+', zero - padding after - - exponent: make sure to output space padding before the `+', zero - padding after - - exponent: only subtract one from the width for the decimal point - if we're really going to print one - - floating: use presence of PF_PLUS flag to decide whether to account - for the `+' in the padded field width. Ditto for exponent() - - 4/16 - ---- -lib/sh/snprintf.c - - vsnprint_internal: only reduce precision by 1 when processing the `g' - format if it's > 0. A precision of 0 should stay 0; otherwise it - gets set to -1 (NOT_FOUND) and converted to the default - - number, lnumber: if an explicit precision is supplied, turn off the - zero-padding flag and set the pad character back to space - - number, lnumber: only account for a `+' when performing the field - width calculation if the coversion is base 10; we don't add a `+' - for other bases +support/Makefile.in + - clean: remove man2html.o as part of this production instead of + waiting until `distclean'. Reported by chrlis - 4/18 - ---- -tests/printf3.sub - - try using "perl -e 'print time'" to get the current time in seconds - since the epoch if "date +%s" is not available (solaris 8-10) +subst.c + - string_list_pos_params: if we are expanding $* in a context where + IFS is null and expand_no_split_dollar_star is set (no word + splitting), use string_list_dollar_star to force the positional + parameters to be joined without first separating them into a list + and attempting to join them later. Fixes problem with constructs + like ${var=${*:1}}, pointed out by Grisha Levit + . This undoes change to @Q from 4/7, so + list_transform change reverted 4/19 ---- -tests/run-printf - - use cat -v instead of relying on diff -a being available to convert - control characters to ascii and avoid the dreaded "Binary files - /tmp/xx and printf.right differ" +builtins.h + - added BUILTINS_H include guard - 4/20 - ---- -lib/sh/strftime.c - - incoporated new version from Aharon Robbins +examples/loadables/Makefile.in + - install loadables.h as sample include file, along with Makefile.inc - 4/22 + 4/23 ---- -doc/{bash.1,bashref.texi} - - slight change to the description of /dev/tcp and /dev/udp - -subst.c - - match_wpattern: logic fix to the calculation of `simple' (was |=, - needs to be &=). Bug report from Mike Frysinger , - fix from Andreas Schwab - bashline.c - - bash_filename_stat_hook: add code from bash_directory_completion_hook - that performs pathname canonicalization in the same way that cd and - other builtins will do + - maybe_make_readline_line: don't try to do anything if the passed + NEW_LINE is NULL. Report from Jaren Stangret , + fix from Eduardo Bustamante - 4/25 + 4/24 ---- -execute_cmd.c - - execute_pipeline: change the call to move_to_high_fd to make it use - getdtablesize() and to not stomp on existing open file descriptors, - like the fd the shell is using to read a script. Bug report from - Greg Wooledge - - 5/6 - --- -subst.c - - expand_word_internal: case '$': after calling param_expand and - setting had_quoted_null, set TEMP to null. The code that builds the - returned string at the end of the function will take care of making - and returning a quoted null string if there's nothing else in - ISTRING. If there is, the quoted null should just go away. Part of - fix for bug reported by Ruediger Kuhlmann - - expand_word_internal: when processing ISTRING to build return value, - only set W_HASQUOTEDNULL in the returned word flags if the word is - a quoted null string AND had_quoted_null is set. Rest of fix - - 5/9 - --- -variables.c - - bind_variable_internal: if we get an array variable here (implicit - assignment to index 0), call make_array_variable_value, which - dummies up a fake SHELL_VAR * from array[0]. This matters when - we're appending and have to use the current value - - bind_variable_internal: after computing the new value, treat assoc - variables with higher precedence than simple array variables; it - might be that a variable has both attributes set - -arrayfunc.c - - bind_array_var_internal: break code out that handles creating the - new value to be assigned to an array variable index into a new - function, make_array_variable_value. This handles creating a - dummy SHELL_VAR * for implicit array[0] assignment. Fixes bug - reported by Dan Douglas - -arrayfunc.h - - make_array_variable_value: new extern declaration +parse.y + - xparse_dolparen: if the current token (the last thing read_token + returned to yylex) is shell_eof_token, assume that it is the new + bison lookahead token and clear it. Fixes bug reported by + Werner Fink - 5/19 + 4/25 ---- -variables.c - - bind_int_variable: if an assignment statement like x=y comes in - from the expression evaluator, and x is an array, handle it like - x[0]=y. Fixes bug reported by Dan Douglas +doc/{bash.1,bashref.texi} + - cmdhist: clarify that this option only has an effect if history is + enabled. Suggested by Matthew Braun - 5/24 + 4/26 ---- +jobs.c + - wait_for: if a non-interactive shell with job control enabled (set -m) + detects that a foreground job died due to SIGINT, act as if the shell + also received the SIGINT. Prompted by an austin-group-l discussion + - waitchld: run SIGCHLD trap for each child exited even if job control + is not enabled when in Posix mode. Prompted by an austin-group-l + discussion -braces.c - - mkseq: handle possible overflow and break the sequence generating - loop if it occurs. Fixes OpenSUSE bug 763591: - https://bugzilla.novell.com/show_bug.cgi?id=763591 - - 5/25 + 4/27 ---- -Makefile.in - - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools - buildversion, mksignames, mksyntax - - LDFLAGS_FOR_BUILD: add to compilation recipes for test tools - recho, zecho, printenv, xcase - -builtins/Makefile.in - - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools - gen-helpfiles, psize.aux +lib/readline/histfile.c + - read_history_range: if the history file is empty, free the history + filename before returning. Report and fix from Eduardo Bustamante + -variables.c - - bind_int_variable: if LHS is a simple variable name without an array - reference, but resolves to an array variable, call - bind_array_variable with index 0 to make x=1 equivalent to x[0]=1. - Fixes bug reported by Dan Douglas +lib/readline/bind.c + - rl_parse_and_bind: make sure there is something, even if it's a + quoted empty string, before the `:' in a key binding. Report from + Eduardo Bustamante + - rl_parse_and_bind: if the right side of a key binding starts with a + quote, make sure there's a matching close quote before treating it + as a macro definition + - rl_translate_keyseq: if a key sequence ends with \C- or \M- (or + \C-\M-) make sure we break out of the loop if moving to the character + to be translated is a NUL. Old code did this only in the \C-\M- + case. Report from Eduardo Bustamante - 5/27 + 4/28 ---- -subst.c - - expand_word_internal: make sure has_dollar_at doesn't get reset before - recursive calls to param_expand or expand_word_internal, since it has - to save state of what came before. Use temp variable and make sure - has_dollar_at is incremented if recursive call processes "$@". - Fixes bug reported by gregrwm and - supplemented by Dan Douglas - -doc/{bash.1,bashref.texi} - - changes to the description of substring expansion inspired by - suggestions from Bill Gradwohl - -doc/bashref.texi - - added substring expansion examples inspired by suggestions from - Bill Gradwohl - -variables.c - - find_shell_variable: search for a variable in the list of shell - contexts, ignore the temporary environment - - find_variable_tempenv: search for a variable in the list of shell - contexts, force search of the temporary environment - - find_variable_notempenv: search for a variable in the list of shell - contexts, don't force search of the temporary environment - -variables.h - - find_shell_variable: extern declaration - - find_variable_tempenv: extern declaration - - find_variable_notempenv: extern declaration - -arrayfunc.c - - bind_array_variable: call find_shell_variable instead of calling - var_lookup directly - -findcmd.c - - search_for_command: call find_variable_tempenv instead of - find_variable_internal directly - - _find_user_command_internal: call find_variable_tempenv instead of - find_variable_internal directly - -builtins/setattr.def - - set_var_attribute: call find_variable_notempenv instead of - find_variable_internal directly - - show_name_attributes: call find_variable_tempenv instead of - find_variable_internal directly +lib/glob/sm_loop.c + - GMATCH: implement a clever technique from glibc that avoids + backtracking past a `*' if we've already chosen to use it and need + matches beyond it. Look at https://research.swtch.com/glob for a + longer explanation. This results in a significant speedup for globs + with multiple instances of `*', especially with more than 4. - 6/1 + 5/2 --- -sig.c - - termsig_handler: don't try to save the shell history on a terminating - signal any more, since it just causes too many problems on Linux - systems using glibc and glibc malloc - -lib/readline/vi_mode.c - - rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi - motion character. From Red Hat bug 813289 - - rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi - motion character - - rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi - motion character +lib/readline/bind.c + - rl_translate_keyseq: make sure a trailing backslash in the key + sequence is preserved. Report from Eduardo Bustamante + - 6/4 + 5/3 --- -lib/sh/mktime.c - - current versions of VMS do not need to include . Fix from - John E. Malmberg +builtins/builtin.def + - builtin_builtin: make sure to set this_shell_builtin to the builtin + command being executed, overwriting `builtin'. Leave + last_shell_builtin alone. Fixes bug reported by Luiz Angelo Daros + de Luca - 6/5 - --- -lib/sh/eaccess.c - - sh_stat: instead of using a static buffer to do the DEV_FD_PREFIX - translation, use a dynamically-allocated buffer that we keep - resizing. Fixes potential security hole reported by David Leverton - +jobs.c + - waitchld: modify change of 4/26 to run SIGCHLD traps even if job + control is not enabled - 6/5 - --- -braces.c - - expand_seqterm: check errno == ERANGE after calling strtoimax for - rhs and incr. Part of a set of fixes from Scott McMillan - - - expand_seqterm: incr now of type `intmax_t', which changes - arguments to mkseq - - mkseq: a better fix for detecting overflow and underflow since it's - undefined in C and compilers `optimize' out overflow checks. Uses - ADDOVERFLOW and SUBOVERFLOW macros - - mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t - variables - - mkseq: don't allow incr to be converted to -INTMAX_MIN - - mkseq: make sure that strvec_create isn't called with a size argument - greater than INT_MAX, since it only takes an int +lib/readline/misc.c + - rl_get_previous_history: if we didn't find a previous history entry + to use, call rl_maybe_unsave_line before returning because we + aren't going to use the saved line, and it has the same undo list + as rl_undo_list. Fixes fuzzing bug reported by Eduardo Bustamante + + - rl_get_{next,previous}_history: if there is no history list, don't + bother doing anything - 6/6 + 5/4 --- -braces.c - - mkseq: try and be smarter about not overallocating elements in - the return array if the increment is not 1 or -1 +expr.c + - popexp: if we error out due to stack underflow, make sure to zero out + expression and lasttp; they may contain undefined values we don't + want evalerror to print + - expr_unwind: handle expr_depth decrementing below zero + - evalexp: restore the old value of evalbuf even if we error and + longjmp; we may have called evalexp recursively + - evalerror: make sure expression is non-NULL before trying to print it. + These fix fuzzing bug reported by Eduardo Bustamante + , happens only in cases where we don't longjmp on + a fatal expansion error - 6/7 + 5/5 --- parse.y - - history_delimiting_chars: if the parser says we're in the middle of - a compound assignment (PST_COMPASSIGN), just return a space to avoid - adding a stray semicolon to the history entry. Fixes bug reported - by "Davide Brini" + - read_token_word: when checking for a word that's a target of a + redirection, we can potentially call valid_array_reference, which + can end up calling the parser recursively. If it does that, we + need to make sure that yylval.word doesn't change, so we set it back + to the_word. Fixes another fuzzing bug - 6/8 +parse.y + - arith_for_command: make syntax errors in the arithmetic for command + (signaled by make_arith_for_command returning NULL) more like + language syntax errors by calling YYERROR. Avoids complicated + attempts at error recovery and dealing with NULL returns from + command productions. Pointed out by Eduardo Bustamante + + +lib/readline/kill.c + - _rl_copy_to_kill_ring: make sure the current slot in the kill ring + has something in it, even if the last command was a kill, before + trying to modify it. Another fuzzing bug + + 5/6 --- -bashline.c - - bash_directory_completion_hook: don't attempt spelling correction - on the directory name unless the direxpand option is set and we are - going to replace the directory name with the corrected one in the - readline line. Suggested by Linda Walsh +builtins/read.def + - read_builtin: if we see a backslash when not in raw mode (not -r), + only back up `i' when we read the next character if we know we added + a CTLESC the last time through the loop (skip_ctlesc == 0), + especially if i == 0. Another fuzzing bug from Eduardo Bustamante + -lib/sh/shquote.c - - sh_backslash_quote: now takes a third argument: flags. If non-zero, - tildes are not backslash-escaped. Have to handle both printf %q, - where they should be escaped, and filename completion, where they - should not when used as usernames + 5/8 + --- +builtins/read.def + - read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle + of an incomplete multibyte sequence. Fixes another fuzzing bug + - read_builtin: use mb_cur_max instead of constant 4 when deciding + whether the next character can exceed the number of bytes available + in input_string -externs.h - - sh_backslash_quote: declaration now takes a third argument +lib/readline/input.c + - MinGW: include before . Fix from Eli Zaretskii + -builtins/printf.def - - printf_builtin: call sh_backslash_quote with 1 as third argument - so tildes get escaped +builtins/read.def + - read_builtin: if we get input from readline, we need to get the + remainder of a multibyte character from rlbuf instead of calling + read_mbchar. Bug reported by Eduardo Bustamante -{bashline,bracecomp}.c - - call sh_backslash_quote with 0 as third argument so tildes are not - escaped in completed words + 5/9 + --- +parse.y + - token_is_assignment: use the allocated buffer approach in all cases, + not just if we're not using bash malloc. This avoids the assignment + to t[i+1] writing beyond the end of the allocated token if + i == token_buffer_size - 1. Another fuzzing bug + - xparse_dolparen: if parse_string returns < 0, we clear out the + current shell_input_line before performing a longjmp, since we're + abandoning parsing of this command. This is consistent with how + the parser resynchronizes after other syntax errors + - GRAMMAR: add 'error yacc_EOF' production to handle a syntax error + that's immediately followed by an EOF after resynchronization. + Fixes another fuzzing bug -doc/bash.1 - - add `coproc' to the list of reserved words. From a report by - Jens Schweikhardt + 5/10 + ---- +lib/readline/text.c + - _rl_set_mark_at_pos: don't let the mark be set to a position < 0. + Fixes a fuzzing bug + - rl_exchange_point_and_mark: don't do anything if the mark is already + less than 0 - 6/10 + 5/12 ---- -execute_cmd.c - - line_number_for_err_trap: now global, so parse_and_execute can save - and restore it with unwind-protect +lib/readline/rlmbutil.h + - wchar_t: make sure this is defined as int if multibyte characters + aren't supported -builtins/evalstring.c - - parse_prologue: save and restore line_number_for_err_trap along - with line_number - - restore_lastcom: new function, unwind-protect to restore - the_printed_command_except_trap - - parse_prologue: use restore_lastcom to save and restore the value - of the_printed_command_except_trap around calls to parse_and_execute - (eval/source/.) +lib/readline/text.c + - _rl_change_case: don't force use of ascii toupper and tolower if + isascii returns true; it's not defined to work on characters outside + the 0..255 (really 0..127) range. Bug reported by + Eduardo Bustamante - 6/15 + 5/14 ---- -lib/readline/complete.c - - complete_fncmp: change filename comparison code to understand - multibyte characters, even when doing case-sensitive or case-mapping - comparisons. Fixes problem reported by Nikolay Shirokovskiy - +lib/readline/text.c + - rl_change_case: handle case where the old and new characters (after + the case change) are not the same number of bytes. Pointed out in + http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html - 6/20 - ---- -builtins/mapfile.def - - mapfile: move the line count increment and check for having read - the specified number of lines to the end of the loop to avoid - reading an additional line with zgetline. Fixes bug reported by - Dan Douglas +lib/readline/display.c + - expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar + since that needs the base of the array. Bug from fuzzing reported by + Eduardo Bustamante - 6/21 + 5/15 ---- - execute_cmd.c - - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on - all systems, since it's tested later in the function. Fixes bug - reported by John E. Malmberg + - execute_simple_command, execute_arith_command, execute_cond_command, + execute_arith_for_command: adjust the line number when executing a + function interactively so that the first command in the function is + line 1, not line 0, as Posix requires. Reported by Robert Elz + + - execute_simple_command, execute_arith_command, execute_cond_command, + execute_arith_for_command: ony adjust the line number when executing + a function interactively if we are not sourcing a file + (sourcelevel == 0), so this is consistent everywhere we adjust the + line number - 6/22 + 5/16 ---- -mailcheck.c - - file_mod_date_changed: return 0 right away if mailstat() does not - return success. Fixes bug with using uninitialized values reported - by szymon.kalasz@uj.edu.pl - -builtins/set.def - - the `monitor' option is not available when the shell is compiled - without job control, since the underlying `m' flag is not available - -nojobs.c - - job_control: now declared as int variable, initialized to 0, never - modified +bashline.c + - bash_directory_completion_hook: when calling split_at_delims to see + whether a ${ or $( is closed, use the right value for `start' relative + to the substring beginning at `$'. Bug from fuzzing reported by + Eduardo Bustamante -jobs.h - - job_control: extern declaration no longer dependent on JOB_CONTROL +expr.c + - expassign: if the call to expcond generates a syntax error in a + context when the shell won't longjmp (like when evaluating $PS1), + it will end up NULL and we need to catch it before calling strlen. + Bug from fuzzing reported by Eduardo Bustamante -execute_cmd.c - - execute_pipeline: made necessary changes so `lastpipe' shell option - is now available in all shells, even those compiled without - JOB_CONTROL defined +examples/bash-completion/ + - new place to include a current or recent version of the + bash-completion package - 6/23 + 5/19 ---- -lib/glob/glob.c - - glob_filename: check for interrupts before returning if glob_vector - returns NULL or an error. Bug reported by Serge van den Boom - , fix from Andreas Schwab - - call run_pending_traps after each call to QUIT or test of - interrupt_state, like we do in mainline shell code - - glob_vector: don't call QUIT; in `if (lose)' code block; just free - memory, return NULL, and let callers deal with interrupt_state or - other signals and traps +lib/readline/display.c + - CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars, + so the multibyte version can check and increase the size of + line_state_invisible->wbsize and line_state_invisible->wrapped_line, + callers who call CHECK_INV_LBREAKS must update + wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug + reported by Eduardo Bustamante - 6/25 + 5/24 ---- -lib/readline/input.c - - rl_read_key: restructure the loop that calls the event hook a little, - so that the hook is called only after rl_gather_tyi returns no input, - and any pending input is returned first. This results in better - efficiency for processing pending input without calling the hook - on every input character as bash-4.1 did. From a report from - Max Horn +lib/readline/search.c + - _rl_nsearch_callback,noninc_search: handle _rl_search_getchar + returning -1 (EOF or read error) by aborting the search. + Fuzzing bug reported by Eduardo Bustamante - 6/26 + 5/25 ---- -trap.c - - signal_is_pending: return TRUE if SIG argument has been received and - a trap is waiting to execute - -trap.h - - signal_is_pending: extern declaration +variables.c + - localvar_inherit: new variable, controlled by shopt localvar_inherit + option + - make_local_variable: if localvar_inherit is set, the new local + variable inherits a previous scope's variable's value, attributes + (except nameref), and dynamic variable information. If a local + variable inherits a value, the local is not invisible -lib/glob/glob.c - - glob_vector: check for pending SIGINT trap each time through the loop, - just like we check for interrupt_state or terminating_signal, and - set `lose = 1' so we clean up after ourselves and interrupt the - operation before running the trap. This may require a change later, - maybe call run_pending_traps and do that if run_pending_traps returns? +builtins/shopt.def + - localvar_inherit: new option -variables.c - - sv_histtimefmt: set history_comment_character to default (`#') if - it's 0 when we're turning on history timestamps. The history code - uses the history comment character to prefix timestamps, and - leaving it at 0 effectively removes them from the history. From a - report to help-bash by Dennis Williamson +doc/{bash.1,bashref.texi} + - localvar_inherit: document new shopt option - 6/27 + 5/29 ---- -lib/readline/signals.c - - rl_maybe_restore_sighandler: new function, sets handler for SIG to - HANDLER->sa_handler only if it's not SIG_IGN. Needs to be called - on same signals set using rl_maybe_set_sighandler, which does not - override an existing SIG_IGN handler (SIGALRM is ok since it does - the check inline; doesn't mess with SIGWINCH) +lib/readline/readline.c + - _rl_subseq_result: only return -1 and back up the chain if we are + dealing with a result (r) that's already < 0 and we are at the end + of a multi-key sequence. Otherwise, a failing readline command (e.g., + delete-char at the end of a line) could cause this code to be + executed. Report from Nuzhna Pomoshch - 6/30 - ---- -variables.h - - additional defines for the new `nameref' variable attribute - (att_nameref): nameref_p, nameref_cell, var_setref +lib/readline/histfile.c + - read_history_range: if the file isn't a regular file, return an + error. Bug report from Eduardo Bustamante , + relaying from IRC -variables.c - - find_variable_nameref: resolve SHELL_VAR V through chain of namerefs - - find_variable_last_nameref: resolve variable NAME until last in a - chain of possibly more than one nameref starting at shell_variables - - find_global_variable_last_nameref: resolve variable NAME until last - in a chain of possibly more than one nameref starting at - global_variables - - find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs - in a specific variable context (usually a local variable hash table) - - find_variable_nameref_context: resolve SHELL_VAR V through chain of - namerefs following a chain of varible contexts - - find_variable_last_nameref_context: resolve SHELL_VAR V as in - find_variable_last_context, but return the final nameref instead of - what the final nameref resolves to - - find_variable_tempenv, find_variable_notempenv, find_global_variable, - find_shell_variable, find_variable: modified to follow namerefs - - find_global_variable_noref: look up a global variable without following - any namerefs - - find_variable_noref: look up a shell variable without following any - namerefs - - bind_variable_internal: modify to follow a chain of namerefs in the - global variables table; change to handle assignments to a nameref by - following nameref chain - - bind_variable: modify to follow chain of namerefs when binding to a - local variable - - unbind_variable: changes to unset nameref variables (unsets both - nameref and variable it resolves to) + 5/30 + ---- +variables.c + - set_pwd: if in Posix mode, and PWD appears in initial environment as + an absolute pathname to the current directory, set PWD to the result + of canonicalizing the environment value, or to the physical path if + canonicalization fails. From a suggestion by Eduardo Bustamante + -subst.c - - parameter_brace_expand_word: change to handle expanding nameref whose - value is x[n] - - parameter_brace_expand_indir: change to expand in ksh93-compatible - way if variable to be indirected is nameref and a simple (non-array) - expansion - - param_expand: change to expand $foo where foo is a nameref whose value - is x[n] + 5/31 + ---- +builtins/read.def + - read_builtin: if -n or -N option is supplied with a 0 argument, + don't attempt to read any characters; bail out right away. Reported + by Eduardo Bustamante , relaying from IRC -execute_cmd.c - - execute_for_command: changes to implement ksh93 semantics when index - variable is a nameref + 6/3 + --- +config.h.in + - HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC: add define, used by stat-time.h + to construct a timespec from struct stat. Report and fix from + Siteshwar Vashisht -builtins/setattr.def - - show_var_attributes: change to add `n' to flags list if att_nameref - is set +variables.h + - att_regenerate: new internal variable attribute: if set, regenerate + dynamic variable's value when it's exported and we are creating the + export environment -builtins/set.def - - unset_builtin: changes to error messages to follow nameref variables +variables.c + - init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set + internal regenerate attribute for these dynamic variables + - make_env_array_from_var_list: if a dynamic variable has the + regenerate attribute set, call the dynamic value function to generate + an updated value before placing it in the environment. From a report + about exporting LINENO from Robert Elz -builtins/declare.def - - document new -n option - - declare_internal: new `-n' and `+n' options - - declare_internal: handle declare -n var[=value] and - declare +n var[=value] for existing and non-existant variables. - Enforce restriction that nameref variables cannot be arrays. - Implement semi-peculiar ksh93 semantics for typeset +n ref=value - - 7/5 + 6/4 --- -variables.c - - unbind_variable: unset whatever a nameref resolves to, leaving the - nameref variable itself alone - - unbind_nameref: new function, unsets a nameref variable, not the - variable it references +lib/glob/sm_loop.c + - BRACKMATCH: at the matched: label, make sure we get the bracket + character we're looking for (char class, collating symbol. etc.) + before we decrement the count of braces we're looking for. Eventually + we could do something about badly-formed bracket expressions -variables.h - - unbind_nameref: extern declaration + 6/7 + --- +lib/readline/histlib.h + - strchr: only declare if __STDC__ is not defined, since we already + include . Report from Chi-Hsuan Yen -builtins/set.def - - unset_builtin: modify to add -n option, which calls unbind_nameref - leaving unbind_variable for the usual case. This required slight - changes and additions to the test suite + 6/9 + --- +lib/readline/display.c + - update_line: when wrapping lines with multibyte chars at the end of + the new line being wrapped, make sure we copy the NULL byte in old + when moving the contents of old around. Fuzzing bug reported by + Eduardo Bustamante -doc/{bash.1,bashref.texi} - - document namerefs and typeset/declare/local/unset -n +lib/readline/mbutil.c + - _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no + need to look at the rest of the string when we're just interested in + the length of a single character - 7/13 + 6/12 ---- -lib/sh/casemod.c - - include shmbchar.h for is_basic and supporting pieces - - sh_casemod: use _to_wupper and _to_wlower to convert wide character - case instead of TOUPPER and TOLOWER. Fixes bug reported by - Dennis Williamson , fix from - Andreas Schwab - - cval: short-circuit and return ascii value if is_basic tests true - - sh_casemod: short-circuit and use non-multibyte case modification - and toggling code if is_basic tests true +jobs.c + - wait_for: when waiting for the next child to exit (ANY_PID), make + sure to restore the old SIGINT handler before returning. Fixes + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649 -lib/readline/signals.c - - _rl_{block,release}_sigint: remove the code that actually blocks and - releases the signals, since we defer signal handling until calls to - RL_CHECK_SIGNALS() + 6/14 + ---- +lib/readline/display.c + - expand_prompt: make sure `ret' is NULL-terminated before calling + _rl_prev_mbchar_internal, since that calls strlen, which requires + the passed string to be NULL-terminated. Another fuzzing bug. -lib/readline/{callback,readline,util}.c - - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without - saving and restoring the signal mask instead of setjmp/longjmp + 6/15 + ---- +lib/readline/isearch.c + - _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end + gets set right + - _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so + we don't set rl_point > rl_end. Fixes a fuzzing bug -lib/readline/rltty.c - - prepare_terminal_settings: don't mess with IXOFF setting if - USE_XON_XOFF defined +lib/readline/mbutil.c + - _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0, + just punt, treat the value as a byte, and advance point by 1 -doc/{bash.1,bashref.texi} - - add some text to the description of set -e clarifying its effect - on shell functions and shell function execution. Suggested by - Rainer Blome +lib/readline/util.c + - rl_tilde_expand: rearrange code in the whitespace loop so that + `start' gets tested first and we don't try to dereference + rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com bashline.c - - edit_and_execute_command: increment current_command_line_count before - adding partial line to command history (for command-oriented-history - because of rl_newline at beginning of function), then reset it to 0 - before adding the dummy history entry to make sure the dummy entry - doesn't get added to previous incomplete command. Partial fix for - problem reported by Peng Yu - - 7/24 - ---- -configure.in - - interix: define RECYCLES_PIDS. Based on a report from Michael - Haubenwallner + - bash_dequote_filename: make sure that pointers that are used as + indices into sh_syntaxtab are cast to unsigned char first, to + avoid problems with signed chars > 128. Fixes a fuzzing bug. - 7/26 - ---- -jobs.c - - make_child: call bgp_delete on the newly-created pid unconditionally. - Some systems reuse pids before cycling through an entire set of - CHILD_MAX/_SC_CHILD_MAX unique pids. This is no longer dependent - on RECYCLES_PIDS. Based on a report from Michael Haubenwallner - +lib/readline/kill.c + - _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to + allocate one more than the max number of kills so the loop that + copies the kill ring entries down runs right (and to mirror the + initial allocation). Fixes a fuzzing bug. -support/shobj-conf - - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We - can finally kill Panther +lib/readline/isearch.c + - _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0 + even when searching a line in reverse. Fixes a fuzzing bug - 7/28 + 6/16 ---- -subst.c - - command_substitute: make sure last_made_pid gets reset if make_child - fails - -execute_cmd.c - - execute_command_internal: case cm_simple: decide whether or not to - wait_for a child if already_making_children is non-zero, indicates - that there is an unwaited-for child. More of fix for bug report - from Michael Haubenwallner +parse.y + - xparse_dolparen: short-circuit immediately if passed a empty string -jobs.c - - make_child: call delete_old_job (new_pid) unconditionally, don't - bother to check whether or not pid wrap occurred. Rest of fix for - bug report from Michael Haubenwallner - +lib/readline/display.c + - update_line: when wrapping multibyte characters, make sure we deal + with WCWIDTH returning -1. Fixes a fuzzing bug - 7/29 + 6/17 ---- -shell.c - - subshell_exit: new function, exits the shell (via call to sh_exit()) - after calling any defined exit trap - -externs.h - - subshell_exit: new extern declaration - execute_cmd.c - - execute_command_internal: make sure to call subshell_exit for - {} group commands executed asynchronously (&). Part of fix for - EXIT trap bug reported by Maarten Billemont - -sig.c - - reset_terminating_signals: make sure to set termsigs_initialized back - to 0, so a subsequent call to initialize_terminating_signals works - right. Rest of fix for bug reported by Maarten Billemont - - -{execute_cmd,general,jobs,mailcheck,mksyntax,test}.c -builtins/{cd,fc,pushd,ulimit}.def -lib/malloc/getpagesize.h -lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c - - make inclusion of dependent on HAVE_SYS_PARAM_H - consistently + - execute_coproc: make sure `invert' is set before trying to use it + when returning failure on invalid coproc name. Report and fix from + Eduardo Bustamante + - execute_command_internal: make sure execute_coproc sets + last_command_exit_value if it returns failure, so an invalid name + can set $? = 1. Report and fix from Eduardo Bustamante + - 8/6 - --- -lib/readline/histexpand.c - - history_expand_internal: now takes an additional argument saying - whether the history expansion occurs within a quoted string, set to - the open quote character - - history_expand_internal: use new argument instead of checking prev - char and initializing quoted_search_delimiter, pass qc directly to - get_history_event, where it allows a matching quote to terminate a - string defining an event - - history_expand: change single-quote handling code so that if - history_quotes_inhibit_expansion is 0, single quotes are treated - like double quotes - - history_expand: change call to history_expand_internal to pass new - argument of `"' if double-quoted string, `'' if single-quoted string; - this lets history_expand decide what is a quoted string and what - is not - - 8/7 - --- -configure.in - - AC_CANONICAL_BUILD: invoke for later use +lib/readline/display.c + - update_line: make sure all references to `wrapped_line' are wrapped + with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante + -lib/readline/macro.c - - _rl_prev_macro_key: new function, inverse of _rl_next_macro_key: - backs up the index into the current macro by 1 +lib/readline/vi_mode.c + - _rl_vi_change_char: don't use rl_point++ when you mean to move + forward a character; use _rl_vi_append_forward to account for + multibyte characters and take vi end of line handling into account + - _rl_vi_last_replacement: now an array of chars whether we are + using multibyte chars or not. If we're not, the character we read + to use as the replacement is saved as the first element of the array + - rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with + _rl_vi_last_replacement being an array. Fixes bug reported by + Eduardo Bustamante -lib/readline/rlprivate.h - - _rl_prev_macro_key: extern declaration +lib/readline/mbutil.c + - _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe + fewer if the length of the string is less +builtins/bind.def + - unbind_keyseq: new function for the -r option; checks whether the + key sequence is actually bound before trying to bind it to NULL. + Partial fix for https://savannah.gnu.org/support/?109329 -lib/readline/readline.c - - _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char - if we're currently reading from a macro; call _rl_prev_macro_key - instead. Fixes bug reported by Clark Wang +parse.y + - augment `error yacc_EOF' production to call YYABORT in non-interactive + shells or calls to parse_and_execute (eval, command substitution, + etc.) Fixes bug reported by Martijn Dekker - 8/13 + 6/19 ---- -builtins/evalstring.c - - evalstring(): new function, wrapper around parse_and_execute. - make sure we handle cases where parse_and_execute can call `return' - and short-circuit without cleaning up properly. We call - parse_and_execute_cleanup() then jump to the previous-saved return - location +bashline.c + - edit_and_execute_command: don't add rl_line_buffer to the history + list if it's empty; consistent with how other code treats an empty + line -builtins/common.h - - extern declaration for evalstring() +execute_cmd.c + - execute_builtin: make sure to preserve the temporary env across the + execution of the `read' builtin or `fc' builtin if HISTORY is + defined, in case `read -e' calls edit-and-execute-command. Should + have no side effects. Reported by Eduardo Bustamante + -builtins/eval.def - - eval_builtin: make sure we handle `eval " ... return"' in contexts - where `return' is valid by calling evalstring(). Fixes bug with - `eval return' in sourced files reported by Clark Wang - +general.c + - line_isblank: new function: returns true if passed string is composed + entirely of blanks -trap.c - - run_pending_traps: call evalstring instead of parse_and_execute. - XXX - still needs to handle saving and restoring token state in the - presence of `return'; could use unwind_protects for that +general.h + - line_isblank: new extern declaration -builtins/mapfile.def - - run_callback: call evalstring instead of parse_and_execute +parse.y + - history_delimiting_chars: return "" for a blank line, since there's + nothing to delimit with `;' - 8/15 + 6/21 ---- -bashline.c - - bash_filename_stat_hook: make sure we don't free local_dirname - before using it to canonicalize any expanded filename. Make sure - it always points to *dirname and only free it if we're replacing - it. +jobs.c + - wait_for: make sure to call restore_sigint_handler before returning + if we return out of the loop due to no children. Report from + Eduardo Bustamante -lib/readline/complete.c - - append_to_match: make sure we call rl_filename_stat_hook with - newly-allocated memory to avoid problems with freeing it twice +subst.c + - expand_word_internal: if split_on_spaces is set, and the word is + unquoted, and IFS is null, split the results of the previous steps + on $' \t\n' instead of just ' '. This relies on the previous steps + quoting the portions of the word that should not be split. Fixes + bug reported by Kevin Brodsky - 8/17 - ---- -variables.c,config-top.h - - if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the - code that allows indexed arrays to be exported is enabled and - included +expr.c + - evalexp: after running expr_unwind, make sure we reset expr_depth + to 0 for the next call + - expr_streval: if after a call to get_array_value (which can call + the expression evaluator recursively) we discover that expr_depth + is less than it was before we called it, we assume there has been + some kind of error and an expr_unwind, so we treat it as an + error and either longjmp back to the expression top level or return + 0 immediately. Fixes bug reported by Eduardo Bustamante + - 8/19 + 6/23 ---- -shell.c - - call start_debugger from main() only if dollar_vars[1] != 0 (close - enough to a non-interactive shell, since we can be interactive with - -i while running a shell script). Fixes oddity reported by - Techlive Zheng +doc/{bash.1,bashref.texi} + - add text noting that $* and ${array[*]} (unquoted) can also expand + to multiple words - 8/20 + 6/29 ---- -arrayfunc.c - - quote_array_assignment_chars: don't bother quoting if the word has - not been marked as an assignment (W_ASSIGNMENT) - - quote_array_assignment_chars: turn on W_NOGLOB in the word flags - so assignment statements don't undergo globbing. Partial fix for - problems reported by Dan Douglas +general.[ch] + - default_columns: new function, returns the value of COLUMNS, or + refreshes it if check_window_size is set and COLUMNS is unset. By + default, it returns 80 - 8/21 - ---- -command.h - - W_NOBRACE: new word flag that means to inhibit brace expansion +execute_cmd.c + - select_query: use default_columns() instead of fetching value of + COLUMNS directly -subst.c - - brace_expand_word_list: suppress brace expansion for words with - W_NOBRACE flag +builtins/help.def + - show_builtin_command_help: use default_columns() instead of fetching + value of COLUMNS directly - 8/22 + 6/30 ---- builtins/read.def - - read_builtin: don't call dequote_string on what we've read, even if - we saw an escape character, unless (input_string && *input_string). - We may have escaped an IFS whitespace character. Fixes seg fault - reported by + - read_builtin: call QUIT during the read loop, just in case we get a + signal we should act on that didn't cause read to be interrupted. + Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737 + - read_builtin: if -n or -N is supplied with a 0 argument, try a zero- + length read to detect errors and return failure if that read returns + a value < 0. Suggested by dualbus@gmail.com -execute_cmd.c - - execute_command_internal: set the_printed_command_except trap when - about to execute a ( ... ) user subshell. For now, set it only if - ERR is trapped; can relax that later. Fixes bug reported by - Mike Frysinger + 7/4 + --- +bashhist.c + - maybe_add_history: keep track of whether the current line is a shell + comment, even if we're not adding it because it's in a multi-line + command, so we use appropriate delimiters between it and any + subsequent lines. Fixes bug reported by Grisha Levit + back on 2/28/2017 - 8/23 - ---- -jobs.c - - remove references to first_pid and pid_wrap, since we're not using - them for anything anymore +bashline.c + - operate_and_get_next: if given an explicit argument, use that to + choose which line in the history to use. - 8/24 - ---- -subst.c - - changes for W_NOBRACE everywhere appropriate: so it can be displayed - for debugging, and passed out of expand_word_internal - -doc/{bash.1,bashref.texi} - - small changes to make it clearer that the = and == operators are - equivalent, and will cause pattern matching when used with [[. - From a question from Michal Soltys - -doc/bashref.texi - - some small formatting changes from Karl Berry - - 8/27 - ---- -lib/readline/doc/{history,rlman,rluserman}.texi - - some small formatting changes from Karl Berry - -arrayfunc.c - - assign_array_element_internal, assign_compound_array_list, - unbind_array_element, array_value_internal: changes to make - assignment statements to negative indices (a[-1]=2) and unsetting - array elements using negative indices (unset 'a[-1]') work. - From suggestions by Dennis Williamson - and Chris F. A. Johnson - -subst.c - - array_length_reference: changes to make length references to array - elements using negative indices (${#a[-1]}) work - - 8/28 - ---- -doc/{bash.1,bashref.texi} - - document new treatment of negative indices to indexed arrays when - assigning, referencing, calculating length, and unsetting - - 8/29 - ---- -shell.c - - show_shell_usage: add -l to list of shell invocation options (short - for --login). From Red Hat bug 852469 - -configure.ac - - renamed from configure.in, as latest autoconf versions want. Patches - Stefano Lattarini - -MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles - - configure.in -> configure.ac - - 9/1 - --- - -parse.y - - read_token_word: allow words like {array[ind]} to be valid redirection - words for constructs like {x} - -lib/readline/display.c - - update_line: if the first difference between the old and new lines - is completely before any invisible characters in the prompt, we - should not adjust _rl_last_c_pos, since it's before any invisible - characters. Fixed in two places - - prompt_modechar: return a character indicating the editing mode: - emacs (@), vi command (:), or vi insert (+) - - _rl_reset_prompt: new function, just calls rl_expand_prompt. Will be - inlined, placeholder for more changes - - expand_prompt: if show-mode-in-prompt is enabled, add a character to - the front of the prompt indicating the editing mode, adjusting the - various variables as appropriate to keep track of the number of - visible characters and number of screen positions - -lib/readline/bind.c - - show-mode-in-prompt: new bindable boolean variable, shadowed by - _rl_show_mode_in_prompt variable - - hack_special_boolean_var: call _rl_reset_prompt when toggling or - setting show-mode-in-prompt - -lib/readline/readline.c - - readline_internal_setup: make sure the correct vi mode keymap is set - before expanding the prompt string for the first time - -lib/readline/misc.c - - rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're - showing the editing mode in the prompt - -lib/readline/rlprivate.h - - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations - -lib/readline/vi_mode.c - - rl_vi_insertion_mode: call _rl_reset_prompt - - rl_vi_movement_mode: call _rl_reset_prompt. Finishes changes for - showing mode in prompt string, originally requested by Miroslav - Koskar and most recently by Jordan Michael - Ziegler +lib/readline/doc/rluser.texi,doc/bash.1 + - operate-and-get-next: document new effect of explicit numeric arg -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - document new show-mode-in-prompt variable, off by default +lib/readline/complete.c + - fnprint: make sure print_len is initialized before using it on + systems without multibyte character support. Report and fix from + Juan Manuel Guerrero - 9/3 + 7/6 --- +builtins/printf.def + - PRETURN,printf_builtin: check variable returned by bind_printf_variable, + return failure if that indicates we can't perform an assignment + because the variable is marked readonly or noassign. Fixes bug + reported by Arnaud Gaillard -jobs.c - - set_childmax: new function, external mechanism for other parts of - the shell to set js.c_childmax, the number of saved exited child - statuses to remember -jobs.h - - set_childmax: extern declaration - -variables.c - - CHILD_MAX: new special variable, with sv_childmax function to - run when it changes. Setting CHILD_MAX to a value greater than - zero but less than some maximum (currently 8192) sets the number of - exited child statuses to remember. set_childmax (jobs.c) ensures - that the number does not drop below the posix-mandated minimum - (CHILD_MAX) - -doc/{bash.1,bashref.texi} - - CHILD_MAX: document new meaning and action when variable is set - - 9/5 + 7/7 --- -redir.c - - redir_varassign: call stupidly_hack_special_variables after - assigning fd number to specified variable, so we can use constructs - like {BASH_XTRACEFD}>foo. Suggested by Pierre Gaston - +lib/readline/text.c + - rl_quoted_insert: new feature: a negative argument means to insert + the next -COUNT characters using quoted-insert. Original feature + from Jason Hood . Still needs work on + redisplay + - _rl_insert_next_callback: implement support for negative arguments + similar to rl_quoted_insert: we just insert one at a time and keep + increasing the count until it hits 0 - 9/8 - --- -expr.c - - readtok: invalidate previous contents of `curlval' before freeing - and reallocating tokstr (which, chances are, will get the same - pointer as before and render curlval inconsistent). Fixes other - bug reported by Dan Douglas +lib/readline/misc.c + - _rl_arg_callback: if the return value from _rl_arg_dispatch indicates + we should keep reading a numeric argument, update the message with + the new arg value - 9/9 + 7/8 --- -lib/readline/complete.c - - rl_username_completion_function: protect call to setpwent() with - #ifdef (HAVE_GETPWENT)/#endif. Fixes bug reported by - Gerd Hofmann - -lib/readline/display.c - - rl_message: second and subsequent calls to rl_message can result in - local_prompt being overwritten with new values (e.g., from the - successive calls displaying the incremental search string). Need - to free before overwriting if it's not the same as the value saved - in saved_local_prompt. Fixes memory leak reported by - Wouter Vermaelen - -lib/readline/{terminal.c,rlprivate.h} - - move CUSTOM_REDISPLAY_FUNC and CUSTOM_INPUT_FUNC defines from - terminal.c to rlprivate.h so other files can use them - -expr.c - - expr_streval: if noeval is non-zero, just return 0 right away, - short-circuiting evaluation completely. readtok will leave curtok - set correctly without re-entering the evaluator at all. Rest of - fix for bug reported by Dan Douglas - - 9/11 - ---- - -parse.y - - parse_comsub: make sure the `reserved word ok in this context' flag - is preserved after we read `do' followed by whitespace. Fixes bug - reported by Benoit Vaugon +lib/readline/signals.c + - _rl_handle_signal: make sure all uses of any of the job control + signals are protected by a check for SIGTSTP being defined. Report + from Juan Manuel Guerrero - 9/13 + 7/11 ---- -configure.ac,config.h.in - - enable-direxpand-default: new configure option, turns the `direxpand' - shell option on by default - -bashline.c - - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if - DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero - -doc/bashref.texi - - enable-direxpand-default: document new configure option +lib/readline/vi_mode.c + - rl_vi_replace: when making the new keymap for vi replacement mode, + make sure that ANYOTHERKEY is set correctly, otherwise some input + will cause _rl_dispatch to return -2 to the top level. Fixes fuzzing + bug reported by Ben Wong - 9/14 + 7/19 ---- -shell.c - - --protected: make option valid only when wordexp is compiled into - the shell. Fix from Roman Rakus - -configure.ac - - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from - Joachim Schmitz +builtins/read.def + - struct ttsave: make the attrs member a struct, not a pointer, to force + a structure copy that will survive a longjmp to another context. + Leaving it as a pointer to a local struct is not portable - 9/16 + 9/10 ---- -subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c - - minor code cleanups from Joachim Schmitz - -lib/readline/colors.h - - workaround for HP NonStop compiler issue with from - Joachim Schmitz +execute_cmd.c + - execute_builtin: make sure that we set up the unwind-protect for + pop_scope (temporary_env is non-zero) so that the temporary env + is propagated to the current environment only for special builtins + (source/eval/unset) not run by the command builtin + (flags & CMD_COMMAND_BUILTIN == 0). Fixes bug reported by + Martijn Dekker 9/17 ---- builtins/printf.def - - printf_builtin: handle localtime returning NULL, as can happen when - encountering overflow. Bug report and initial fix from - Eduardo A. Bustamante López - -doc/{bash.1,bashref.texi} - - emphasize that brace expansion using character ranges ({a..c}) acts - as if the C locale were in use. Prompted by message from - Marcel Giannelia - - 9/20 - ---- -lib/sh/wcsnwidth.c - - wcsnwidth: new function, variant of wcwidth, returns the number of - wide characters from a string that will be displayed to not exceed - a specified max column position + - asciicode: don't use mblen to check whether or not a character is a + valid multibyte character; use mbtowc right away and then inspect + the return value. Fixes bug reported by Stephane Chazelas + - 9/21 + 9/27 ---- -builtins/help.def - - show_builtin_command_help: break code that displays the short-doc - for each builtin in two columns into a new function: dispcolumn - - wdispcolumn: multibyte-char version of dispcolumn; uses wide - chars and printf "%ls" format. Fixes problem reported by - Nguyá»n Thái Ngá»c Duy +{jobs,subst}.h + - move declaration of last_command_subst_pid to subst.h, since it's + declared in subst.c and doesn't depend on job control. Reported by + Martijn Dekker - 9/22 - ---- -execute_cmd.c - - execute_disk_command: before running the command-not-found hook, - call kill_current_pipeline() to make sure we don't add processes - to an existing pipeline or wait for processes erroneously +builtins/read.def,variables.c + - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented + the minimal config from building - 9/23 + 10/1 ---- -lib/readline/input.c - - rl_input_available_hook: new hook function, called from - _rl_input_available (or _rl_input_queued) to return whether or not - input is available wherever the input source is - -lib/readline/doc/rltech.texi - - rl_input_available_hook: document +parse.y + - special_case_tokens: if we are returning DO in a case where the last + two tokens read are `FOR' and `WORD' make sure we decrement + expecting_in_token. Fixes bug reported by Martijn Dekker + - 9/27 + 10/4 ---- -lib/glob/sm_loop.c: - - GMATCH: after one or more `*', an instance of ?(x) can match zero or - 1 times (unlike ?, which has to match one character). The old code - failed if it didn't match at least once. Fixes `a*?(x)' bug. - - GMATCH: if we hit the end of the search string, but not the end of - the pattern, and the rest of the pattern is something that can - match the NUL at the end of the search string, we should successfully - match. Fixes `a*!(x)' bug reported by +subst.c + - expand_string_for_rhs: now takes an additional PFLAGS argument from + its caller (one so far); passes that through to call_expand_word_internal + as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker + + - expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if + b were the rhs of an assignment statement. This means that splitting + isn't done, but tilde expansion is performed as if the statement + were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker + - 10/2 - ---- command.h - - add c_lock member to coproc structure for future use to tell who is - manipulating it + - W_NOASSNTILDE: new word flag, means to not perform tilde expansion + following a `:' even if the word has the W_ASSIGNRHS flag enabled -execute_cmd.c - - execute_coproc: block SIGCHLD while parent is forking coproc - process and adding pid to sh_coproc struct to avoid race condition - where child is reaped before the pid is assigned and the coproc is - never marked as having died. Fixes race condition identified by - Davide Baldini - - add assignments to c_lock member of struct coproc in various - functions that manipulate it; was used to identify race condition - - coproc_pidchk: don't call coproc_dispose to avoid using malloc and - other functions in a signal handler context - - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while - manipulating the sh_coproc struct +subst.c + - expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag + set, just add the character and inhibit any subsequent tilde + expansion. Currently not set anywhere, but it could be set in + expand_string_for_rhs to satisfy its peculiar semantics 10/6 ---- -lib/readline/complete.c - - rl_display_match_list: if printing completions horizontally, don't - bother with spacing calculations if limit == 1, which means we are - printing one completion per line no matter what. Fixes bug - reported by David Kaasen +lib/sh/casemod.c + - sh_modcase: convert even single-byte wide characters to wide upper + or lowercase equivalents to accommodate locales where single-byte + characters have multibyte upper and lower case conversions. Bug + reported by Stephane Chazelas 10/7 ---- -builtins/declare.def - - declare_internal: add error checking for nameref attribute and - variable assignments: self-references, attempts to make an array - variable a nameref - -subst.c - - parameter_brace_expand: handle parameter_brace_expand_word returning - &expand_param_fatal or &expand_param_error and return the appropriate - error value - - parameter_brace_expand_word: if a nameref variable's value is not a - valid identifier, return an error - - param_expand: if a nameref variable's value is not a valid identifier, - return an error - -test.c - - unary_operator: add new -R variable, returns true if variable is set - and has the nameref attribute. From ksh93 - -builtins/test.def - - add -R to description of conditional commands for help test - doc/{bash.1,bashref.texi} - - document new -R unary conditional operator - - 10/13 - ----- -trap.c - - check_signals_and_traps: new function, convenience function for the - rest of the shell to check for pending terminating and interrupt - signals, and to check for and process any pending traps - - any_signals_trapped: new function, returns non-zero if any signals - are trapped and -1 if not + - slight changes to the description of command_not_found_handle to + clarify that it's executed in a separate execution environment, + just like if the command was found. Reported by Martijn Dekker + -trap.h - - extern declaration for check_signals_and_traps + 10/8 + ---- +lib/readline/doc/{history.3,hstech.texi} + - history_get: clarify the range of valid values for the OFFSET + argument. From a report by Kevin Ryde -bashline.c - - bashline_reset: make sure we reset the event hook - - bash_event_hook: call check_signals_and_traps instead of just - checking for terminating signals so we can run pending traps and - react to interrupts, and reset the event hook when we're done + 10/21 + ----- +subst.c + - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `=' + for backwards compatibility with bash-4.4 +shell.c + - main: set positional parameters before running the startup files, + so the startup files can inspect $@. Often-requested feature, + most recently from Stephane Chazelas - 10/14 + 10/27 ----- -trap.c - - trap_handler: if executing in a readline signal handler context, - call bashline_set_event_hook to install bash_event_hook to process - the signal (if bash cares about it) +doc/{bash.1,bashref.texi} + - Arrays: add some clarifying language to make it clear that array + references that don't use the ${a[s]} syntax are subject to + globbing when passed as arguments to commands such as unset, and + should be quoted for safety. Change prompted by a report from + Eli Barzilay -sig.c - - sigint_sighandler: call bashline_set_event_hook to set the event - hook if we're executing in a readline signal handler context +parse.y + - parse_comsub: make sure we don't run off the end of the `ret' + buffer when checking for the here doc delimiter. Report from + Jakub Wilk , the result of a fuzzing test. Pointer + to place for the fix from Eduardo Bustamante -lib/readline/input.c - - rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught - signal is SIGINT or SIGQUIT rather than waiting until the next time - around the loop - - rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow - an application signal handler to set the event hook in its own - signal handler (e.g., like bash trap_handler or sigint_sighandler) + 10/30 + ----- +builtins/pushd.def + - get_directory_stack: make sure the current directory (element 0 of + the stack) is passed to polite_directory_format under the same + conditions as the rest of the stack entries (flags & 1). Otherwise + something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported + by Steve Jones +builtins/declare.def + - declare_internal: when checking for a `[' to see whether or not this + is an array variable declaration (declare -a foo[12]), make sure + we don't do the check if we're just dealing with shell functions. + Bug and pointer to fix from PJ Eby + 11/1 + ---- parse.y - - yy_readline_get: don't set interrupt_immediately before we call - readline(). Inspired by report from lanshun zhou - - -input.c - - getc_with_restart: add call to run_pending_traps after call to - CHECK_TERMSIG + - parse_comsub: if we read a four-character word followed by a break + character, and that word is not one of the reserved words, set + lex_rwlen to 0 since we are no longer in a reserved word. It only + hurts if another break character immediately follows, so that test + succeeds again. Turn off the RESWDOK flag only if it's not a shell + metacharacter, too. Fixes bug reported by Kjetil Torgrim Homme + -lib/sh/zread.c - - zread: call check_signals_and_traps if read() returns -1/EINTR - instead of just ignoring the EINTR and deferring handling any - signal that generated it + 11/3 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: if we are searching in reverse order, let + sline_index go to -1 to avoid searching the same line twice. It + gets reset right after that, so there's no danger of indexing into + the history line with a negative index. -builtins/mapfile.def - - mapfile: don't set interrupt_immediately before calling zgetline() - (which uses zread internally) - -builtins/read.def - - read_builtin: don't set interrupt_immediately before calling zread - (moved code around so that it was only being set right around calls - to zread to avoid signal handler conflicts). Inspired by report - from lanshun zhou - - edit_line: don't set interrupt_immediately around call to readline() - - include shmbutil.h - - read_builtin: don't call read_mbchar unless is_basic(c) returns - false for the character we just read + 11/7 + ---- +execute_cmd.c + - time_command: only restore command->flags if CODE indicates we didn't + perform a longjmp back to top_level. If we did, `command' has already + been freed. Fixes bug reported on savannah by + ukuvbu oibws + https://savannah.gnu.org/support/?109403 - 10/15 + 11/10 ----- -sig.c - - throw_to_top_level: if interrupt_state is non-zero, make sure that - last_command_exit_value reflects 128+SIGINT if it's not already - greater than 128 +lib/sh/unicode.c + - u32cconv: make sure to initialize localconv to -1 (error) in case + we switch from a utf-8 locale to something else and call + iconv_close. Report from Egmont Koblinger ; fix + from Eduardo Bustamante - 10/20 + 11/16 ----- -builtins/wait.def - - WAIT_RETURN: set wait_signal_received back to 0 for the potential - next call to wait +subst.c + - parse_comsub: istring_index should be a size_t to avoid integer + overflow when allocating large pieces of memory. Report and fix + from Siteshwar Vashisht , originally based on + http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html -quit.h - - CHECK_WAIT_INTR: macro to check whether trap_handler handled a - signal and set wait_signal_received; longjmp to wait_intr_buf in - that case + 11/24 + ----- +lib/readline/bind.c + - rl_empty_keymap: new public function, returns non-zero if there are + no keys bound in the keymap passed as an argument -jobs.c - - wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call - CHECK_TERMSIG to check for terminating signals - - wait_sigint_handler: don't longjmp out of the wait builtin unless - interrupt_immediately is set; otherwise just SIGRETURN from the - handler - - wait_sigint_handler: if interrupt_immediately not set, but we are - executing in the wait builtin and SIGINT is not trapped, treat it - as a `normally received' SIGINT: restore the signal handler and - send SIGINT to ourselves - - waitchld: when in posix mode and running SIGCHLD traps, don't longjmp - to wait_intr_buf (and let wait be interrupted) if we're running from - a signal handler. Wait for CHECK_WAIT_INTR to do the longjmp. - run_pending_traps will run the SIGCHLD trap later +lib/readline/readline.h + - rl_empty_keymap: new public extern declaration -nojobs.c - - reap_zombie_children, wait_for_single_pid, wait_for: call - CHECK_WAIT_INTR where we call CHECK_TERMSIG - - wait_sigint_handler: don't longjmp out of the wait builtin unless - interrupt_immediately is set; otherwise just SIGRETURN from the - handler - -trap.c - - trap_handler: make sure wait_signal_received is set if the wait - builtin is executing, and only longjmp if interrupt_immediately is - set. This whole set of fixes was prompted by report from - lanshun zhou - - 10/24 - ----- -lib/glob/glob.c - - glob_filename: only check directory_name for globbing chars if - it's of non-zero length +lib/readline/doc/rltech.texi + - rl_empty_keymap: document new function -lib/sh/strchrnul.c - - new simpler implementation +lib/readline/bind.c + - rl_generic_bind: keep track of the previous keymap and previous + index in a multi-key key sequence so we can remove an empty terminal + keymap and remove a previous override to ANYOTHERKEY. Right now, + this only works for one previous keymap level. Inspired by a report + from Clark Wang -subst.c - - command_substitute: call set_shellopts after turning off errexit - in subshells so it's reflected in $SHELLOPTS + 11/25 + ----- +lib/readline/display.c + - _rl_update_final: make sure that computing the length of the visible + bottom line (botline_length) takes any invisible characters in the + prompt into account (woff). This value is used as part of the check + whether or not we want to remove the line-wrapping indicator on + terminals like xterm + - _rl_update_final: when removing the line-wrapping indicator on xterm, + make sure we take invisible characters in the prompt (woff) into + account when computing the character in the rightmost physical + screen position. Fixes cosmetic line-wrapping issue reported by + Egmont Koblinger - 11/7 - ---- -builtins/evalstring.c - - parse_and_execute: treat ERREXIT case like reader_loop does: set - variable_context to 0 before longjmping back to top_level. Don't - run the unwind-protect context to avoid side effects from popping - function contexts. Part of fix for problem reported by Nikolai - Kondrashov + 11/27 + ----- +lib/sh/ufuncs.c + - fsleep: if using select to implement sleep, use restart after + a signal interrupts the select and handle pending signals. If + pselect is available, use that instead and block SIGCHLD while + pselect is executing. + Fixes report from Thiruvadi Rajaraman -execute_cmd.c - - execute_simple_command: call unlink_fifo_list only if this is the - last element of a pipeline (or not in a pipeline), rather than for - every child. Fixes difference in behavior between /dev/fd and - FIFOs reported by Zev Weiss - - execute_null_command: do the same thing in the parent branch after - make_child - - 11/14 + 11/28 ----- -subst.c - - parameter_brace_expand: a variable is null if it's special ($@, $*), - the expansion occurs within double quotes, and the expansion turns - into a quoted null. Fixes debian bug 692447 reported by - Matrosov Dmitriy +lib/readline/signals.c + - rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS + that can be used by applications that install a wrapper for + rl_getc (rl_getc_function) so they can respond to signals that + arrive while waiting for input in the same way as rl_getc. The app + can use rl_pending_signal() to get the most recently-received + signal. From a discussion about Gnuplot initiated by + Rin Okuyama -jobs.c - - run_sigchld_trap: make sure `running_trap' sentinel is set - appropriately - - waitchld: only run the sigchld trap if we're not in a signal - handler, not running a trap, and executing the wait builtin. - Otherwise, queue for later handling. We still run one instance - of the trap handler per exited child. Bulk of fix for bug - reported by Elliott Forney - -trap.c - - queue_sigchld_trap: set catch_flag so run_pending_traps notices, - and set trapped_signal_received for completeness. Rest of fix - for bug reported by Elliott Forney +lib/readline/readline.h + - rl_check_signals: new extern declaration -lib/malloc/malloc.c - - block_signals: renamed to _malloc_block_signals, made public - - unblock_signals: renamed to _malloc_unblock_signals, made public +lib/readline/doc/rltech.texi + - rl_check_signals: document new public function -lib/malloc/imalloc.h - - extern declarations for _malloc_{un,}block_signals +variables.c + - set_pwd: test for and force an inherited OLDPWD to be a directory + if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by + default). Issue raised by Mikulas Patocka -lib/malloc/table.c - - mregister_alloc, mregister_free: block signals around table - manipulation +config-top.h + - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default - 11/15 + 11/29 ----- -trap.c - - run_pending_traps: set SIG_INPROGRESS flag around calls to - run_sigchld_handler so other parts of the shell know that the - SIGCHLD trap handler is executing - - run_pending_traps: if we get a situation where we are looking at - running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER - and the SIG_INPROGRESS flag is set, just skip it. This is possible - if run_pending_traps is called from a SIGCHLD trap handler run by - run_sigchld_trap +Makefile.in + - pathexp.o: add dependencies on libintl.h. Reported by + Ross Burton -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - corrected description of the effect of `set history-size 0'. Report - from Vesa-Matti J Kari + 12/1 + ---- +lib/sh/ufuncs.c + - fsleep: add blocking and releasing SIGCHLD using sigprocmask + around call to select(2) even if pselect(2) is not available -include/stdc.h - - CPP_STRING: new define, replaces __STRING + 12/3 + ---- +execute_cmd.c + - coproc_setstatus: new utility function, take a pointer to a coproc + and a status and mark the coproc as dead and having been reaped + with that status. Used by child processes who want to invalidate + the coproc's pid -lib/malloc/{malloc.c,imalloc.h} - - replace __STRING with CPP_STRING + 12/5 + ---- +subst.c + - process_substitute: instead of just having a flag to denote that a + file descriptor is connected to a process substitution, store the + pid of the child process (still needs work) + - find_procsub_child,set_procsub_status,reap_procsubs: utility + functions to allow the job control code to detect that a process + substitution child has died and deallocate the file descriptors + or pathname - 11/16 - ----- -lib/readline/bind.c - - sv_histsize: if argument evaluates to a value < 0, unstifle the - history +subst.h + - find_procsub_child,set_procsub_status,reap_procsubs: extern + declarations - 11/22 - ----- -redir.c - - do_redirection_internal: if we have REDIR_VARASSIGN set in the - redirection flags and we set up `redirector' using fcntl or dup2, - don't add a redirect to make sure it stays open. Let the - script programmer manage the file handle. Fixes bug reported by - Sam Liddicott +nojobs.c + - set_pid_status: if we are reaping a process substitution, call + set_procsub_status to record the fact - 11/24 - ----- jobs.c - - wait_for_any_job: new function, waits for an unspecified background - job to exit and returns its exit status. Returns -1 on no background - jobs or no children or other errors. Calls wait_for with new - sentinel value ANY_PID - - wait_for: changes to handle argument of ANY_PID: don't look up or - try to modify the child struct, only go through the wait loop once. - Return -1 if waitpid returns no children - -jobs.h - - ANY_PID: new define + - waitchld: if we are reaping a process substitution, call + set_procsub_status to record the fact. Doesn't really do anything + yet -builtins/wait.def - - new option: -n. Means to wait for the next job and return its exit - status. Returns 127 if there are no background jobs (or no - children). Feature most recently requested by Elliott Forney - + 12/6 + ---- +execute_cmd.c + - execute_command: don't call unlink_fifo_list if we're in the + middle of executing a list of commands (executing_list != 0). + Partial fix for bug reported by Stephane Chazelas + + - execute_simple_command: don't close process substitution file + descriptors in the parent after forking children in a pipeline; + defer until pipeline completes, since parent may have inherited + fds from a calling scope (e.g., via `.'). EXPERIMENTAL + - execute_disk_command: don't close process substitution file + descriptors in the parent after forking the child. EXPERIMENTAL -doc/{bash.1,bashref.texi} - - document new `wait -n' option + 12/7 + ---- +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - show-mode-in-prompt: clarify that this must be enabled before the + vi and emacs mode strings are prefixed to the prompt. Report from + Rob Foehl + 12/8 + ---- execute_cmd.c - - execute_command_internal: save make_command_string () result in a - temp variable before calling savestring() on it; avoids evaluating - make_command_string() result twice. Fix from John E. Malmberg - - - 11/28 - ----- + - execute_coproc: don't warn about an existing coproc if the write and + read file descriptors are unusable (-1), as they will be after a + call to coproc_closeall in a subshell. Fixes spurious warning + reported by Tobias Hoffmann -builtins/declare.def - - declare_internal: if an array variable is declared using `declare -a' - or `declare -A', but not assigned a value, set the `invisible' - attribute so the variable does not show up as set. Fix for bug - about variable initialization reported by Tim Friske +jobs.c + - bgp_resize: avoid overflow when calculating the new size if the + child process limit is something ridiculously large. Report and + fix from Natanael Copa -builtins/{mapfile,read}.def - - after calling find_or_make_array_variable, make sure the invisible - flag is turned off, in case the variable was declared previously - using `declare -a' or `declare -A'. Side effect of above change to - declare_internal +execute_cmd.c + - execute_builtin_or_function: if we return via the return builtin, we + don't get a chance to free the saved fifo list, so add an unwind- + protect to make sure it happens. Part of fix for leak reported by + Oyvind Hvidsten + - execute_command_internal: if we unwind via the return builtin (e.g., + we execute a function which then returns via the return builtin to + a previous function), we don't free the saved fifo list, so add an + unwind-protect to make sure the free happens. Rest of fix for leak + reported by Oyvind Hvidsten subst.c - - shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into - the list of options passed to make_internal_declare as appropriate. - Fix for bug reported by Tim Friske - - 11/30 - ----- -test.c - - unary_op: make sure -v and -n check that the variable is not marked - as invisible before calling var_isset. Fix for bug reported by Tim - Friske + - add_fifo_list: for the FIFO case (no /dev/fd), make sure we + initialize the new members of the fifo list after xrealloc - 12/2 + 12/9 ---- subst.c - - process_substitute: turn off the `expanding_redir' flag, which - controls whether or not variables.c:find_variable_internal uses the - temporary environment to find variables. We want to use the - temp environment, since we don't have to worry about order of - evaluation in a subshell. Fixes bug reported by Andrey Borzenkov - + - dev_fd_list: now a list of type `pid_t' so we can store process + associated with the pipe fd into the right element; change all + necessary functions (copy_fifo_list, add_fifo_list) + - process_substitute: store pid of child process into the right + index in dev_fd_list after opening the pipe. Process ID of -1 means + process has been reaped and fd needs to be closed (or FIFO needs to + be unlinked); value of 0 means slot is unused - 12/4 - ---- -lib/glob/glob.c - - glob_filename: changes to avoid null filenames and multiple entries - returned for patterns like **/** (globstar enabled). Fixes bug - reported by Ulf Magnusson +jobs.c + - wait_for_background_pids: call reap_procsubs to make sure we clean + up all reaped process substitutions before trying to wait for + everything (still needs work) + +tests/{run-procsub,procsub.{tests,right}} + - new file, tests of process substitution that have failed in the past 12/10 ----- -lib/glob/glob.c - - glob_filename: finish up a series of changes to make globstar-style - globbing more efficient, avoid more duplicate filenames, and be more - compatible with other shells that implement it - o collapse a sequence of **/**/** to one ** - o note when the directory name is all ** or ends in ** so we - can treat it specially when the filename is ** - All inspired by report from Andrey Borzenkov +jobs.c + - wait_for_background_pids: warn if one of the jobs is stopped -lib/sh/zread.c - - zreadn: new function, like zread, but takes an additional argument - saying how many bytes to read into the local buffer. Can be used to - implement `read -N' without so many one-byte calls to zreadc. Code - from Mike Frysinger +subst.c + - wait_procsubs: new function, call wait_for for every "live" process + substitution - 12/12 - ----- -lib/glob/sm_loop.c - - PATSCAN (glob_patscan): if passed string already points to end of - pattern, return NULL immediately. Fixes problem with - extglob_skipname reported by Raphaël Droz +jobs.c + - wait_for_background_pids: call wait_procsubs to reap any living + process subsitutions 12/13 ----- -execute_cmd.c - - execute_coproc: handle the command's exit status being inverted - (an oversight). Fixes bug reported by DJ Mills - and Andreas Schwab +lib/readline/bind.c + - parser_if: add support for testing the readline version, using the + full set of arithmetic comparison operators (and supporting both + = and ==), using version numbers of the form major[.[minor]] 12/14 ----- -lib/readline/readline.c - - bind_arrow_keys_internal: add MINGW key bindings for Home, End, - Delete, and Insert keys. Fix from Pierre Muller - - -builtins/printf.def - - printf_builtin: '%()T' conversion: if there is no argument supplied, - behave as if -1 had been supplied (current time). ksh93-like feature - suggested by Clark Wang - -doc/{bash.1,bashref.texi} - - document new printf %()T default argument behavior +subst.[ch] + - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like + string_list_dollar_at, changed all callers. Not used yet. - 12/15 + 12/16 ----- -lib/readline/display.c - - displaying_prompt_first_line: new variable, indicates whether or - not the first line of output is displaying the prompt. Always true - in normal mode, sometimes false in horizontal scrolling mode - - rl_redisplay: set displaying_prompt_first_line to true unless we - are in horizontal mode; set to false in horizontal mode if the left - margin of the displayed line is greater than the end of the prompt - string - - rl_redisplay: when in horizontal scroll mode, don't adjust - _rl_last_c_pos by the wrap offset unless the line is displaying - a prompt containing invisible chars - - update line: don't adjust _rl_last_c_pos by the wrap offset unless - the line is displaying a prompt containing invisible chars - - update_line: if shrinking the line by reducing the number of - displayed characters, but we have already moved the cursor to the - beginning of the line where the first difference starts, don't - try to delete characters - -builtins/read.def - - unbuffered_read: set to 2 if invoked as `read -N' - - if unbuffered_read is set to 2, compute the number of chars we - need to read and read that many with zreadn. Posix mode still - uses zreadintr. Code from Mike Frysinger - -doc/{bash.1,bashref.texi} - - read: make it clear that if read times out, it saves any input - read to that point into the variable arguments. Report from - Fiedler Roman - subst.c - - command_substitute: change direct assignment of exit_immediately_on_error - to use change_flag ('e', FLAG_OFF) instead - -flags.c - - use errexit_flag as the variable modified by changes to the -e - option, reflect those changes to exit_immediately_on_error + - param_expand: broke out cases of expanding unquoted (quoted == 0) + $* on the rhs of an assignment statement (pflags & PF_ASSIGNRHS) + with various values of IFS (unset, null, set to non-null value) to + capture the expansion subtleties. From a report back on 11/24 by + Martijn Dekker -execute_cmd.c - - execute_builtin: new global variable, builtin_ignoring_errexit, set - to 0 by default and set to 1 if eval/source/command executing in a - context where -e should be ignored - - execute_builtin: set exit_immediately_on_error to errextit_flag - after executing eval/source/command in a context where -e should - be ignored - -flags.c - - if builtin_ignoring_errexit is set, changes to errexit_flag are - not reflected in the setting of exit_immediately_on_error. Fixes - bug reported by Robert Schiele - - 12/23 + 12/17 ----- -include/posixjmp.h - - setjmp_nosigs: new define, call setjmp in such a way that it will - not manipulate the signal mask - -{expr,test,trap}.c - - setjmp_nosigs: call instead of setjmp; don't need to manipulate - signal mask - -builtins/read.def - - read_builtin: setjmp_nosigs: call instead of setjmp; don't need - to manipulate signal mask +array.h + - set_element_value: new define, sets array element AE to VALUE -builtins/evalstring.c: - - parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need - to manipulate signal mask - - parse_string: setjmp_nosigs: call instead of setjmp; don't need - to manipulate signal mask - - parse_and_execute: save and restore the signal mask if we get a - longjmp that doesn't cause us to return or exit (case DISCARD) +variables.c + - set_pipestatus_array: use set_element_value where appropriate - 12/24 - ----- -general.c - - bash_tilde_expand: only set interrupt_immediately if there are no - signals trapped; we want to jump to top level if interrupted but - not run any trap commands - - 12/25 + 12/18 ----- -jobs.c - - run_sigchld_trap: no longer set interrupt_immediately before calling - parse_and_execute, even if this is no longer run in a signal handler - context - -input.c - - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG - -parse.y - - yy_stream_get: now that getc_with_restart calls QUIT, don't need to - set interrupt_immediately (already had call to run_pending_traps) - -execute_cmd.c - - execute_subshell_builtin_or_function,execute_function,execute_in_subshell: - setjmp_nosigs: call instead of setjmp when saving return_catch; don't - need to manipulate signal mask - - execute_subshell_builtin_or_function,execute_in_subshell: - setjmp_nosigs: call instead of setjmp where appropriate when saving - top_level; don't need to manipulate signal mask if we're going to - exit right away - subst.c - - command_substitute: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - - command_substitute: setjmp_nosigs: call instead of setjmp where - appropriate when saving top_level; don't need to manipulate signal - mask if we're going to exit right away - -trap.c - - run_exit_trap: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - - run_exit_trap: setjmp_nosigs: call instead of setjmp where - appropriate when saving top_level; don't need to manipulate signal - mask if we're going to exit right away - - _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - -builtins/evalfile.c - - _evalfile: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - -builtins/evalstring.c - - evalstring: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - -shell.c - - main: setjmp_nosigs: call instead of setjmp where appropriate when - saving top_level; don't need to manipulate signal mask if we're - going to exit right away - - run_one_command: setjmp_nosigs: call instead of setjmp where - appropriate when saving top_level; don't need to manipulate signal - mask if we're going to exit right away - - run_wordexp: setjmp_nosigs: call instead of setjmp where - appropriate when saving top_level; don't need to manipulate signal - mask if we're going to exit right away + - parameter_brace_find_indir: when expanding the indirect parameter + to find the eventual variable name, we don't perform word splitting. + Make sure this does the right thing for * and @. Fixes bug + reported by isabella parakiss -eval.c - - reader_loop: save and restore the signal mask if we get a longjmp - that doesn't cause us to return or exit (case DISCARD) + 12/19 + ----- +doc/{bash.1,bashref.texi} + - indirect expansion: make sure to note that the value of the indirect + variable does not undergo word splitting as one of its expansions, + as in fix from 12/18 - 12/26 + 12/22 ----- -parse.y - - shell_input_line_{index,size,len}: now of type size_t; in some cases - the unsigned property makes a difference - - STRING_SAVER: saved_line_{size,index} now of type size_t - - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX; - lines longer than that are truncated until read sees a newline; - addresses theoretical buffer overflow described by Paul Eggert - - - set_line_mbstate: size_t changes like shell_getc - - shell_getc: if shell_input_line is larger than 32K, free it and - start over to avoid large memory allocations sticking around +subst.c + - parameter_brace_expand_rhs: make sure the value this function returns + when OP is `=' is quoted appropriately, as the callers expect. More + changes from Posix interp 221. Fixes report from Martijn Dekker + variables.c - - bind_global_variable: new function, binds value to a variable in - the global shell_variables table - -variables.h - - bind_global_variable: new extern declaration - -builtins/declare.def - - declare_internal: if -g given with name=value, but variable is not - found in the global variable table, make sure to call - bind_global_variable so the variable is created and modified at - global scope. Fixes a bug where declare -g x=y could modify `x' - at a previous function scope - -command.h - - W_ASSIGNARRAY: new word flag, compound indexed array assignment - -subst.h - - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in - a function context, used by declare -g - -execute_cmd.c - - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to - declaration builtin + - assign_hashcmd: if running in a restricted shell, make sure the + target of the hash assignment can be found via a $PATH search, to + prevent users assigning commands to the hash table they would not + ordinarily have access to. Fixes issue raised by Drew Parker + -subst.c - - do_assignment_internal: explicitly handle case where we are - executing in a function and we want to create a global array or - assoc variable - - shell_expand_word_list: call make_internal_declare if -a option - given to declaration builtin (W_ASSIGNARRAY); handle -g option with - it (W_ASSNGLOBAL). Fixes inconsistency noticed by Vicente Couce - Diaz , where declare -ag foo=(bar) could modify - array variable foo at previous function scope, not global scope +builtins/hash.def + - hash_builtin: if running in a restricted shell, make sure the + pathname target of `hash -p' can be found via a $PATH search, to + prevent users assigning commands to the hash table they would not + ordinarily have access to. 12/27 ----- -bashline.c - - Minix needs the third argument to tputs to be a void funtion taking - an int argument, not an int-returning function. Fix from - John E. Malmberg as part of VMS bash port +array.c,arrayfunc.c,... + - many changes to clean up unused variables and functions. From a + report from Siteshwar Vashisht - 12/29 + 12/28 ----- -configure.ac,version.c,patchlevel.h - - bash-4.3-devel: new version, new shell compatibility level (43) - -subst.c - - parameter_brace_patsub: put the bash-4.2 code back in from the - change of 3/3 that runs the replacement string through quote - removal, make it dependent on shell_compatibility_level <= 42 - -builtins/shopt.def - - compat42: new shopt option - - set_compatibility_level: change logic to set and unset various - compat variables and shell_compatibility_level - -COMPAT - - new documentation for bash-4.3 compatibility changes - -doc/{bash.1,bashref.texi} - - compat42: document new shopt option - -builtins/shopt.def - - set_compatibility_opts: new function, sets the various shopt - compat variables based on the value of shell_compatibility_level - -builtins/common.h - - set_compatibility_opts: new extern declaration - -variables.c - - BASH_COMPAT: new special variable; sets the shell compatibility - level. Accepts values in decimal (4.2) or integer (42) form; - Unsetting variable, setting it to empty string, or setting it to - out-of-range value sets the shell's compatibility level to the - default for the current version. Valid values are 3.1/31 through - the current version - - sv_shcompat: new function implementing logic for BASH_COMPAT +lib/readline/terminal.c + - _rl_term_clrscroll: save the `E3' termcap capability, which clears + the scrollback buffer where supported. Unused right now -variables.h - - sv_shcompat: new extern declaration +lib/readline/rlprivate.h + - _rl_term_clrscroll: extern declaration -doc/{bash.1,bashref.texi} - - BASH_COMPAT: description of new variable +lib/readline/bind.c + - parser_if: added simple variable comparison capability. Allowable + operators are `=', `==', and `!='; boolean variables must be + compared to either `on' or `off'; variable names must be separated + from the operator by whitespace -lib/readline/complete.c - - _rl_colored_stats: default back to 0 for 4.3 release branch +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - document new `if variable comparison value' construct - 1/5/2013 + 1/2/2018 -------- -quit.h - - remove spurious call to itrace in CHECK_WAIT_INTR - -bashline.c - - bash_event_hook: if we're going to jump to top_level, make sure we - clean up after readline() by calling rl_cleanup_after_signal(). - Fixes bug reported against devel branch by Raphaël Droz - - - bash_event_hook: reset the event hook before checking for signals - or traps in case we longjmp - -doc/{bash.1,bashref.texi} - - small additions to the set -e section to make it more clear that - contexts where -e is ignored extend to compound commands as well - as shell functions +lib/glob/sm_loop.c + - EXTMATCH: when matching against !(patlist), if a filename beginning + with a `.' does not match any of the patterns in patlist, don't + return it as a match if leading dots need to be matched explicitly + (flags & FNM_PERIOD). Report from Eric Cook -lib/readline/readline.h - - rl_signal_event_hook: new extern declaration + 1/3 + --- +variables.[ch] + - bind_function_def: takes an additional flags argument. If FLAGS&1, + overwrite any existing function_def hash table entry; if FLAGS==0, + leave any existing function_def alone. -lib/readline/input.c - - rl_signal_event_hook: new variable, hook function to call when a - function (currently just read(2)) is interrupted by a signal and - not restarted - - rl_getc: call rl_signal_event_hook instead of rl_event_hook +make_cmd.c + - make_function_def: call bind_function_def with flags == 0 -lib/readline/doc/rltech.texi - - rl_signal_event_hook: document new function +execute_cmd.c + - execute_intern_function: call bind_function_def with flags == 1 so + we have function_def information that's correct for where the + function is defined, not just where it's last parsed. Fixes report + from Bruno Vasselle ; final piece of + fix from 12/15/2011 -bashline.c - - changes to set rl_signal_event_hook instead of rl_event_hook + 1/4 + --- +subst.c + - param_expand: deal with string_list_dollar_star returning NULL. + Fixes bug reported by Martijn Dekker -lib/readline/readline.h - - change readline version numbers to 6.3 +builtins/history.def + - history_builtin: enabled code that performs range deletion - 1/6 + 1/5 --- -doc/{bash.1,bashref.texi} - - a couple of changes to the descriptions of the ERR trap and its - effects based on a message from Rob Nagler +subst.c + - do_assignment_internal: if performing a compound assignment, make + sure to pass ASS_CHKLOCAL flag to do_compound_assignment if the + assignment word has the W_CHKLOCAL flag set + - do_compound_assignment: honor ASS_CHKLOCAL flag and check for an + existing local variable before creating or modifying a global + variable - 1/9 - --- -expr.c - - expassign: invalidate curlval before freeing and NULLing tokstr to - avoid aliasing issues. Fixes bug reported by Eduardo A. Bustamante - López and Dan Douglas +builtins/declare.def + - declare_internal: new (undocumented so far) option: -G. Means to + act on global variables (create, modify) if no local variable is + found with the specified name + - declare_find_variable: new declare-specific wrapper functon for + declare builtin; obeys -g and -G options in one place + - declare_internal: if no variable is found after following any nameref + chain, look up the variable using declare_find_variable to honor the + -G option. XXX - so far, this is the only place that function is used -braces.c - - array_concat: don't be so aggressive in trying to short-circuit. We - can only short-circuit if we have a single-element array where the - element is an empty string (array[0] == "" array[1] = 0x0). Existing - practice requires us to replicate arrays and prefix or append empty - strings. Fixes bug reported by Eduardo A. Bustamante López - +subst.c + - shell_expand_word_list: before calling make_internal_declare, add + 'G' to the options list if W_CHKLOCAL is set in the word's flags. + This makes builtins like `readonly' that modify local variables in + a function behave the same for scalar and array variables 1/11 ---- -execute_cmd.c - - execute_builtin: since mapfile uses evalstring() to run its callbacks - internally, just like eval, so it needs to handle the case where the - temp environment given to mapfile persists throughout the entire - set of callback commands. This might be a problem with trap also, but - trap isn't run in the same way. Fixes bug reported by Dan Douglas - +parse.y + - shell_getc: move code that decides whether to append a space to an + alias expansion here from mk_alexpansion, so we can inhibit adding + a space if we're currently parsing a single or double quoted string - 1/13 + 1/12 ---- -redir.c - - redirection_error: before expanding the redirection word (if - expandable_redirection_filename returns true), disable command - substitution during expansion. Fixes bug reported by Dan Douglas - -subst.c - - expand_word_internal: case '\\': if the next character is an IFS - character, and the expansion occurs within double quotes, and the - character is not one for which backslash retains its meaning, add - the (escaped) '\' and the (escaped) character. Fixes bug reported - by Dan Douglas +parse.y + - clear_string_list_expander: take a pointer to an alias that's about + to be freed and make sure there aren't any pointers to it in the + list of pushed strings. If there are, zero it out in the pushed + string list to avoid referencing freed memory in pop_string() - 1/15 - ---- -builtins/cd.def - - cd_builtin: make sure call to internal_getopt handles -e option. - Fixes bug reported by +alias.c + - free_alias_data: if an alias being freed is currently being expanded, + call clear_string_list_expander to remove references to it from the + list of pushed strings - 1/17 + 1/14 ---- -subst.c - - expand_word_list_internal: make sure tempenv_assign_error is - initialized to 0 +pcomplib.c + - progcomp_search: add code to look up an alias for the CMD argument + and return the completions for the first word of that alias if one + is found. Just a start at completing aliases, a much-requested + feature -execute_cmd.c - - execute_simple_command: make sure tempenv_assign_error is reset to 0 - after it's tested to see if an error should force the shell to exit. - Fixes problem where a the failure of a tempenv assignment preceding - a non-special builtin `sticks' and causes the next special builtin - to exit the shell. From a discussion on bug-bash started by - douxin +pcomplete.h + - COPT_LASTUSER: last flag value used by user-settable completion + options + - PCOMP_RETRYFAIL, PCOMP_NOTFOUND: new #defines, possible return values + from programmable_completions in FOUNDP argument. Moved RETRYFAIL + define here from pcomplete.c to avoid collisions with user-settable + option values (COPT_*) - 1/20 + 1/15 ---- -subst.c - - parameter_brace_expand_rhs: call stupidly_hack_special_variables - after assigning with ${param[:]=word} even if IFS is changing. - Suggested by Dan Douglas [TENTATIVE, needs work - on IFS side effects] - -command.h - - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used - yet) - -{execute_cmd,subst,variables}.c - - removed all code that mentioned W_GLOBEXP - - removed mention of gnu_argv_flags and code that set it +pcomplete.c + - programmable_completions: if we don't find any completions for a + command, and RETRY is 0, see if the command is a defined alias, + expand it, and try to expand the first word of the value as a + command, and find any programmable completions for it. Here right + now, could be moved to attempt_shell_completion later if we need + to do more analysis of the expanded line. We'll see how it works + in practice. (Disabled for now.) - 1/22 + 1/16 ---- -subst.c - - param_expand: set W_SPLITSPACE if we expand (unquoted) $* and - IFS is unset or null so we can be sure to split this on spaces - no matter what happens with IFS later - - expand_word_internal: note that param_expand returns W_SPLITSPACE - in the returned word flags and keep track of that state with - `split_on_spaces' +parse.y + - grammar: when timing the null command, make sure to turn off the + flags in parser_state (PST_REDIRLIST) that make_simple_command sets + when given a NULL second argument, since it assumes that it's going + to turn those off when it gets the next word of the simple command + (which it never gets in this case). Fixes bug reported by + Anti Räis - 1/23 + 1/19 ---- -subst.c - - expand_word_internal: if split_on_spaces is non-zero, make sure - we split `istring' on spaces and return the resultant word. The - previous expansions should have quoted spaces in the positional - parameters where necessary. Suggested by Dan Douglas - - -execute_cmd.c - - execute_command_internal: make sure any subshell forked to run a - group command or user subshell at the end of a pipeline runs any - EXIT trap it sets. Fixes debian bash bug 698411 - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411 - -subst.c - - shell_expand_word_list: fix code that creates args for and calls - make_internal_declare to avoid calling it twice (missing `else' - in 12/26 change) - - do_assignment_internal: fix code from 12/26 change to fix problem - where an existing assoc variable could be converted to an array - without checking `mkassoc' +lib/readline/rltty.c + - prepare_terminal_settings (termios/termio): if there is a function + bound to the VDISCARD character in the current keymap, set VDISCARD + to _POSIX_VDISABLE while readline is active. From a report from + Rhialto - 1/24 + 1/22 ---- -builtins/evalfile.c - - _evalfile: add missing `close (fd)' calls before returning to - avoid fd leaks. Bug and fix from Roman Rakus +builtins/history.def + - histtime: check whether or not localtime() returns NULL, and make + sure we only call strftime() with a valid struct tm. This can happen + when the timestamps in the history file overflow a time_t. Fixes bug + reported by Luke Dashjr - 1/25 - ---- -builtins/read.def - - read_builtin: don't try to play tricks with the top of the unwind- - protect stack after read gets a SIGALRM; save input_string to new - memory, run the stack, then restore input_string and assign the - variables. Part of fix for bug reported by konsolebox - ; the rest of the fix is with the changes in - trap and signal handling and doing away with interrupt_immediately +bashline.c + - edit_and_execute_command: if we're in vi editing mode, make sure + we end up in insert mode after executing the commands from the + edited file. This seems to be what other shells do. Report from + Stan Marsh 1/26 ---- -redir.c - - redirection_expand, write_here_string, write_here_document: before - calling any of the word expansion functions, after setting - expanding_redir to 1 (which bypasses the temp environment in the - variable lookup functions), call sv_ifs to reset the cached IFS- - related variables set by subst.c:setifs(). This ensures that - redirections will not get any IFS values that are set in the - temporary environment, as Posix specifies. Then, after the word - expansions, after resetting expanding_redir to 0, call sv_ifs - again to make sure the cached IFS values are set from any - assignments in the temporary environment. We force executing_builtin - to 1 to `fool' the variable lookup functions into using any temp - environment, then reset it to its old value after sv_ifs returns. - This is what allows read() to use the (cached) IFS variables set - in the temp environment. Fixes inconsistency reported by Dan Douglas - +bashline.c + - command_word_completion_function: match alias and shell function + names case-insensitively if the readline completion-ignore-case + variable is set. Inspired by report from - 1/29 - ---- lib/readline/display.c - - update_line: fix off-by-one error when updating vis_lbreaks array - in a multibyte locale that occurs when moving multibyte chars from - one line down to another. Bug report and fix from Egmont - Koblinger + - update_line: when performing a dumb update after wrapping the line + (usually due to printing the prompt), make sure we adjust + _rl_last_c_pos if there are invisible characters in prompt lines + other than the first (we assume those invisible characters are in + the last line, which is nearly always the case). We adjust by the + total number of invisible chars less the number of invisible chars + in the first prompt line. From a report in + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1745273 + +execute_cmd.c + - execute_command_internal: if redirections attached to a compound + command fail, make sure we discard the `internal_fifos' unwind- + protect frame after freeing the copied fifo_list and before returning 1/30 ---- -configure.ac - - changed version to 4.3-alpha - -redir.c - - redir_open: handle open returning -1/EINTR, which seems to happen - a lot with FIFOs and SIGCHLD, and call QUIT to handle other - signals that can interrupt open(2). Bug report and initial fix - from Mike Frysinger +lib/readline/rlprivate.h + - BRACK_PASTE_FINI: add \r to the end of the string to avoid problems + with the tty driver thinking the cursor was in the wrong position. + Fixes issue reported by Egmont Koblinger 1/31 ---- -subst.c - - parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag - to parameter_brace_expand_word - - parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag - is set and we are expanding ${a[@]} or ${a[*]} we set quoted to - include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring - what we do for $@ and $*. Fixes inconsistency reported by Dan - Douglas - -configure.ac - - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it - will find $host-prefixed versions of utilities. Report and fix from - Mike Frysinger +lib/sh/zread.c + - zread,zreadintr: call check_signals() before calling read() to + minimize the race window between signal delivery, signal handling, + and a blocking read(2). Partial fix for FIFO read issue reported by + Oyvind Hvidsten -builtins/setattr.def - - set_var_attribute: check whether bind_variable (called when the - variable whose attributes are being modified is found in the temp - environment) just modified a read-only global variable, and don't - bother marking the temporary variable for propagation if so. The - propagation is superfluous and will result in a strange error - message +doc/{bash.1,bashref.texi} + - shopt: document `assoc_expand_once' shell option - 2/2 + 2/1 --- -variables.c - - initialize_shell_variables: don't try to import function definitions - with invalid names from the environment if already in posix mode, - but create them as (invisible) exported variables so they pass - through the environment. Print an error message so user knows - what's wrong. Fixes bug reported by Tomas Trnka +config-top.h + - DONT_REPORT_SIGTERM: define, so non-interactive shells will no + longer print termination messages for child processes killed by + SIGTERM - 2/9 + 2/6 --- +lib/readline/text.c + - rl_insert: don't attempt to optimize typeahead if we are only reading + a fixed number of characters (rl_num_chars_to_read > 0) -builtins/read.def - - sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c) - can use them - - sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was - longjmp without manipulating signal mask, leaving SIGALRM blocked - -quit.h - - move CHECK_ALRM macro here from builtins/read.def so trap.c: - check_signals() can call it - -trap.c - - check_signals: add call to CHECK_ALRM before QUIT - - check_signals_and_traps: call check_signals() instead of including - CHECK_ALRM and QUIT inline. Integrating check for read builtin's - SIGALRM (where zread call to check_signals_and_traps can see it) - fixes problem reported by Mike Frysinger +redir.c + - redir_special_open: if the shell is restricted, return a + RESTRICTED_REDIRECT error for attempts to open /dev/tcp and /dev/udp + sockets. Inspired by report from Blake Burkhart + - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT, + return that right away (instead of errno) so we can print a better + error message - 2/12 + 2/11 ---- -lib/glob/xmbsrtowcs.c - - xdupmbstowcs2: fixed but where end of string was not handled - correctly, causing loop to go past end of string in a bunch of cases. - Fixes bug reported by "Dashing" - +jobs.c + - bgp_resize: fix problems with (pid_t) overflow when calculating new + size for table when js.c_childmax is near the limit of a pid_t + (e.g., 2**31 - 1 on a 32-bit system, or 2**63-1 on a system with + 32-bit pid_t). Fixes hang reported by Natanael Copa + based on his patch from 12/8. + - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768) - 2/13 - ---- -builtins/pushd.def - - popd_builtin: treat any argument that isn't -n or of the form - [-+][[:digit:]]* as an error. Fixes problem reported by Bruce - Korb +include/typemax.h + - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29, + silences some compiler warnings 2/14 ---- -configure.ac - - add check for sig_atomic_t; already a placeholder for it in - config.h.in +Makefile.in + - maybe-clean: use cd and pwd -P to test whether or not two directory + names identical, since topdir = '.' and BUILD_DIR = full pathname + when you use something like `bash ./configure'. Problem reported by + Michael Felt - 2/15 - ---- subst.c - - do_compound_assignment: don't call assign_compound_array_list with - a NULL variable in case make_local_xxx_variable returns NULL - (it will if you try to shadow a readonly or noassign variable). - Fixes bug reported by Richard Tollerton + - split_at_delims: if SD_NOQUOTEDELIM is in the flags argument, don't + treat `'' and `"' as candidates for possible sequences of delimiters, + even if they're part of the delimiter set (the delims argument). + Fixes problem with completing lines like `foo --bar='quux baz' xx' + reported by Nick Patavalis - 2/16 + 2/15 ---- -variables.c - - make_local_variable: print error messager if an attempt is made to - create a local variable shadowing a `noassign' variable. Previously - we just silently refused to do it +copy_cmd.c + - copy_word_list: build the list in the right order, avoiding having + to reverse it at the end. Helps with long argument lists -trap.[ch] - - get_original_signal: now global so rest of the shell can use it +shell.c + - bind_args: build the argument list in the right order, avoiding + having to reverse it at the end. + - bind_args: only call push_args to save argc and argv as BASH_ARGC + and BASH_ARGV if debugging mode is enabled (debugging_mode != 0). + Inspired by report from Ambrose Feinstein + - bind_args: note that we've saved BASH_ARGC and BASH_ARGV by setting + bash_argv_initialized + - shell_reinitialize: reset bash_argv_initialized back to 0 so + BASH_ARGV and BASH_ARGC will be recreated if we're in debugging mode -sig.c - - initialize_shell_signals: install a signal handler for SIGTERM - that does nothing except set a sigterm_received flag instead of - ignoring it with SIG_IGN, as long as SIGTERM is not ignored when - the shell is started. Use get_original_signal early to get the - original handler, since we will do that later anyway - - set_signal_handler: if installing sigterm_sighandler as the SIGTERM - handler, make sure to add SA_RESTART flag to make it as close to - SIG_IGN as possible - -sig.h - - sigterm_sighandler: new extern declaration - -quit.h - - RESET_SIGTERM: set sigterm_receved to 0 - - CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it - as a fatal signal and call termsig_handler to exit the shell +variables.c + - save_bash_argv: new function, initializes BASH_ARGV and BASH_ARGC + from the saved positional parameters + - init_bash_argv: initialize BASH_ARGV and BASH_ARGC if + bash_argv_initialized == 0 -jobs.c - - make_child: call RESET_SIGTERM just before fork() so we can detect - if the child process received a SIGTERM before it's able to change - the signal handler back to what it was when the shell started - (presumably SIG_DFL). Only has effect if the shell installed - sigterm_sighandler for SIGTERM, interactive shells that were not - started with SIG_IGN as the SIGTERM handler - - make_child: call RESET_SIGTERM in the parent after fork() so the - rest of the shell won't react to it +builtins/shopt.def + - shopt_set_debug_mode: if we're turning on debug mode, initialize + BASH_ARGC and BASH_ARGV if bash_argv_initialized == 0 + 2/16 + ---- execute_cmd.c - - execute_simple_command: call CHECK_SIGTERM after make_child in child - to catch SIGTERM received after fork() and before restoring old - signal handlers - - execute_disk_command: call CHECK_SIGTERM after make_child in child - process after restoring old signal handlers and again just before - calling shell_execve. Fixes race condition observed by - Padraig Brady when testing with his `timeout' - program + - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized + before calling push_args (and before calling remember_args) -lib/readline/display.c - - open_some_spaces: new function, subset of insert_some_chars that just - opens up a specified number of spaces to be overwritten - - insert_some_spaces: now just calls to open_some_spaces followed by - _rl_output_some_chars - - update_line: use col_temp instead of recalculating it using - _rl_col_width in the case where we use more columns with fewer bytes - - update_line: use open_some_spaces and then output the right number - of chars instead of trying to print new characters then overwrite - existing characters in two separate calls. This includes removing - some dodgy code and making things simpler. Fix from Egmont - Koblinger - - use new variable `bytes_to_insert' instead of overloading temp in - some code blocks (nls - nfd, bytes that comprise the characters - different in the new line from the old) +builtins/source.def + - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized + before calling push_args (and before calling remember_args) - 2/18 - ---- -redir.c - - do_redirection_internal: add undoable redirection for the implicit - close performed by the <&n- and >&n- redirections. Fixes bug - reported by Stephane Chazelas +builtins/evalfile.c + - _evalfile: if the shell compatibility level is 44 or lower, make + sure BASH_ARGV and BASH_ARGC are initialized before calling + array_push - 2/19 - ---- -sig.c - - termsig_handler: an interactive shell killed by SIGHUP and keeping - command history will try to save the shell history before exiting. - This is an attempt to preserve the save-history-when-the-terminal- - window-is-closed behavior +builtins/shopt.def + - compat44: new shell option. This will be the last compatXX option + +doc/{bash.1,bashref.texi} + - compat44: document new shell option 2/21 ---- -braces.c - - brace_expand: if a sequence expansion fails (e.g. because the - integers overflow), treat that expansion as a simple string, including - the braces, and try to process any remainder of the string. The - remainder may include brace expansions. Derived from SuSE bug - 804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551) +builtins/common.h + - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes + bug reported by jeremy@feusi.co - 2/23 - ---- -{quit,sig}.h,sig.c - - sigterm_received declaration now in sig.h; type is sig_atomic_t - - sigwinch_received type now sig_atomic_t - - sig.h includes bashtypes.h and if SIG_DFL not defined - (same logic as trap.h) to pick up sig_atomic_t +input.h + - B_SHAREDBUF: new flag for buffered input fds, indicates that this + fd shares its b_buffer with another fd -unwind_prot.c - - include sig.h before quit.h (reverse order) +input.c + - duplicate_buffered_stream: when duplicating *from* the buffer + corresponding to bash input, make sure the new buffer has B_SHAREDBUF + in the flags, because copy_buffered_stream copies pointers + - duplicate_buffered_stream: if the buffer being copied to has the + B_SHAREDBUF flag set, make sure the b_buffer doesn't get freed. + Fixes use-after-free bug reported by jeremy@feusi.co + - save_bash_input,close_buffered_stream: make sure a buffer with + B_SHAREDBUF set has its b_buffer set to NULL before calling + free_buffered_stream - 2/27 + 2/24 ---- -builtins/shopt.def - - reset_shopt_options: make sure check_window_size is reset to the - default from config.h, not unconditionally to 0 - -jobs.[ch] - - last_made_pid, last_asynchronous_pid: now volatile. Change from SuSE - -jobs.c - - wait_for: if we're using sigaction to install a handler for SIGCHLD, - make sure we specify SA_RESTART - -lib/{tilde,readline}/shell.c - - get_home_dir: instead of looking in the password file every time, - look once and cache the result - -sig.[ch] - - sigwinch_received, sigterm_received: now `volatile' qualified - -sig.c,quit.h - - interrupt_state,terminating_signal: now sig_atomic_t - - 3/1 - --- -MANIFEST,examples/* - - removed around 120 files without FSF copyrights; requested by - Karl Berry in early January - - 3/2 - --- -lib/malloc/malloc.c - - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined - -doc/bashref.texi - - Fixed most of the examples in the GNU Parallel section to use better - shell idioms following complaints on bug-bash; added a couple of - examples and smoothed out the text - -quit.h - - include "sig.h" for sig_atomic_t - -lib/readline/display.c - - update_line: when inserting one or more characters at the end of - the display line in a non-multibyte environment, just write from the - first difference to the end of the line and return. We don't have - to adjust _rl_last_c_pos. This is needed to adjust from the old - two-part copy to a single call to _rl_output_some_chars (change of - 2/16) - - 3/4 - --- -Makefile.in,doc/Makefile.in - - PACKAGE_TARNAME, docdir: new variables substituted by autoconf - - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary - documentation files to be installed into $(docdir) - - install: add new rule to install $(OTHER_DOCS) - - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS) - -doc/bash.1 - - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that - section in --posix and set -o posix descriptions - -examples/ - - removed around 110 examples at the request of the FSF due to copyright - issues +subst.c + - parameter_brace_expand_error: add parameter saying whether or not + we are checking whether value is null, so we can have different + error messages for ${x:?} and ${x?}. Report and fix from + don fong 3/5 --- -builtins/setattr.def - - readonly: modified help text slightly to make it clearer that - functions aren't changed or displayed unless the -f option is given. - Report from - - 3/9 - --- -include/typemax.h - - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined - -parse.y - - include "typemax.h" for possible SIZE_MAX definition, make sure we - include it after shell.h - -{braces,expr}.c - - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions +lib/readline/bind.c + - _rl_read_file: instead of calling stat/open on the passed filename, + use open/fstat to avoid one possible filename translation and close + a small (benign) race condition. Report and fix from Roy Ivy + - 3/10 + 3/11 ---- -bashline.c - - bash_default_completion: make sure completion type of `!' (same as - TAB but with show-all-if-ambiguous set) and glob-word-completion - sets rl_filename_completion_desired to 0 so extra backslashes don't - get inserted by `quoting' the completion. We can't kill all the - matches because show-all-if-ambiguous needs them. Bug report from - Marcel (Felix) Giannelia - -[bash-4.3-alpha frozen] +variables.c + - makunbound: if new variable localvar_unset is non-zero, mark local + vars in previous scopes as invisible and unset so they will show + up as unset until that previous scope returns (similar to how local + variables in the current local scope are handled). localvar_unset + is currently set to 0 with no way for a script to change its value. + Eventually there will be an option to modify it. From a bug-bash + discussion started by Nikolai Kondrashov back + on 2/11/2018 - 3/14 + 3/13 ---- -general.c - - trim_pathname: use memmove instead of memcpy since the source and - destination pathnames may overlap. Report and fix from Matthew - Riley +subst.c + - expand_word_list_internal: short-circuit and exit right away if a + variable assignment preceding a special builtin fails in posix mode + - expand_word_list_internal: if a variable assignment precedes an + empty command name (after expansion), fix to exit right away when + the shell is in posix mode - 3/18 + 3/15 ---- -configure.ac - - socklen_t is defined as `unsigned int' if configure can't find it +doc/{bash.1,bashref.texi} + - Add text to Pathname Expansion clarifying that a slash must be + matched by a slash in the pattern when matching pathnames, but + not in other matching contexts. Suggested by - 3/20 - ---- -lib/readline/complete.c - - S_ISVTX: since it's not defined on all platforms (Minix), make sure - its use is protected with #ifdef +builtins/common.c + - read_octal: allow octal numbers greater than 777 to accommodate + modes and umasks that include sticky/setuid/setgid bits. Report + and fix from Martijn Dekker - 3/21 + 3/19 ---- -doc/{bash.1,bashref.texi} - - Added mention of ${!name[@]} and ${!name[*]} expansions to get all - indices of an array. Suggested by Jonathan Leffler - +lib/readline/bind.c + - rl_generic_bind: make sure we only assign to prevkey in the loop + if the key sequence index is > 0, so ic is valid. Fixes bug + reported by Koichi Murase - 3/24 - ---- -subst.h - - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that - single quotes (for now) will be treated as ordinary characters +builtins/read.def + - read_builtin: be slightly less aggressive checking for timeouts and + SIGALRM: if we successfully read a character, don't check for a + timeout until we store or process it. Fixes timing problem + reported by Rob Foehl -subst.c - - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now + 3/22 + ---- +sig.c + - termsig_handler: add a call to exit(1) after the kill, just in case + there are circumstances where the SIG_DFL signal handler is + ignored. Report from Andrei Vagin 3/25 ---- -support/config.{guess,sub} - - updated to versions from autoconf-2.69 +lib/readline/bind.c + - _rl_function_of_keyseq_internal: new internal function thta takes a + length parameter to accommodate NUL in the key sequence. Patch from + Koichi Murase + - rl_function_of_keyseq_len: new application-callable function that + takes a length parameter; otherwise equivalent to rl_function_of_keyseq. - 3/31 - ---- -lib/sh/shquote.c - - sh_single_quote: short-circuit quoting a single "'" instead of - creating a long string with empty single-quoted strings +lib/readline/readline.h + - rl_function_of_keyseq_len: add extern declaration for new function -parser.h - - DOLBRACE_QUOTE2: new define, like DOLBRACE_QUOTE, but need to single- - quote results of $'...' expansion because quote removal will be - done later. Right now this is only done for ${word/pat/rep} +lib/readline/doc/rltech.texi + - rl_function_of_keyseq_len: document new function interface -parse.y - - parse_matched_pair: set state to DOLBRACE_QUOTE2 for pattern - substitution word expansion so we don't treat single quote specially - in the pattern or replacement string - - parse_matched_pair: if we're parsing a dollar-brace word expansion - (${...}) and we're not treating single quote specially within - double quotes, single-quote the translation of $'...' ansi-c - escaped strings. Original report and fix from Eduardo A. - Bustamante López +bashline.c + - bash_execute_unix_command: use rl_function_of_keyseq_len to handle + key sequences with embedded NULs (\C-@). Fix from Koichi Murase + -subst.c - - extract_dollar_brace_string: ${word/pat/rep} scanning now sets the - DOLBRACE_QUOTE2 flag instead of DOLBRACE_QUOTE so we don't treat - single quotes specially within a double-quoted string +lib/readline/bind.c + - rl_bind_key_if_unbound,rl_bind_key_if_unbound_in_map: run the KEY + argument through rl_untranslate_keyseq to produce a symbolic sequence + that can encode \C-@. + - rl_bind_keyseq_if_unbound_in_map: translate the key sequence in order + to accommodate symbolic key sequences; should be a no-op for `raw' + key sequences such as the arrow key seqeunces from terminfo. Change + from Koichi Murase + + 4/2 + --- +jobs.c + - wait_for: when setting the SIGINT signal handler to wait_sigint_handler + make sure we're not setting old_sigint_handler recursively, as we + can when running an external command in a trap we took after a + command exited due to SIGINT. We don't want to overwrite + old_sigint_handler here. Fixes bug reported by Dr. Werner Fink + execute_cmd.c - - fix_assignment_words: skip over assignment statements preceding a - command word before trying to figure out whether or not assignment - statements following a possible declaration command should be - treated specially. Fixes bug reported by Dan Douglas - + - execute_disk_command: when there is a command_not_found_hook, make + sure the subshell turns off job control before running it, in case + it runs processes. We don't want it to manipulate process groups. + Fixes bug reported by ÐиÑиллов Ðима + - execute_command_internal: make sure the command run by the `command' + builtin doesn't cause the ERR trap to be executed; wait for the + status to be returned by the command builtin. Fixes bug reported by + Martijn Dekker 4/4 --- -lib/readline/readline.c - - _rl_dispatch_subseq: only call _rl_vi_set_last (and check whether - the key is a text modification command) if the key sequence length - is 1. That keeps the arrow keys from setting the last command - when called in vi command mode. Fixes bug reported by Ian A. - Watson +subst.c + - process_substitute: handle longjmp back to top_level and function + returns (return_catch) in the child process, like command + substitution, so we don't longjmp back to some arbitrary spot from + the `exit' or `return' builtins, or on an expansion error, like + the command timing code. Fixes bug reported by Basin Ilya + 4/6 --- -lib/readline/bind.c - - rl_parse_and_bind: when parsing a double-quoted string as the value - of a variable, make sure we skip past the leading double quote. - Fix from Andreas Schwab +parse.y + - read_token_word: when reading a matched pair of backquotes as part + of a word, treat it as quoted so the characters are read as a single + word, but do not let the presence of the backquote mark the word as + quoted. Fixes here-document delimiter bug reported by Denys Vlasenko + -variables.c - - hash_lookup: set new local variable last_table_searched to the table - a successful lookup appears in; tested in make_local_variable to - solve the problem below - - make_local_variable: if we find a variable with the tempenv flag - set at the same `level' as variable_context', but not found in the - temporary_env (temp environment preceding the builtin), return it. - The temp environment preceding the function call has already been - merged (in execute_function) into the list of variable contexts the - function sees as shell_variables by the time this is called. Fixes - inconsistency pointed out by Dan Douglas + 4/7 + --- +execute_cmd.c + - execute_case_command: call quote_string_for_globbing with the + QGLOB_CTLESC flag for both quoted and unquoted words, so it will + remove CTLESC/CTLESC in all cases while converting other quoted + characters to use a preceding backslash. Bug reported by + Martijn Dekker -subst.c - - expand_arith_string: expanded out contents of expand_string, - expand_string_internal, expand_string_if_necessary to create a - WORD_DESC and call call_expand_word_internal() on it directly. - We don't want process substitution to be performed ( 1<(2) ) should - mean something different in an arithmetic expression context. - It doesn't work to just turn on the DQUOTE flag, since that means - that things like ${x["expression"]} are not expanded correctly. - Fixes problem pointed out by Dan Douglas + 4/9 + --- +smatch.c + - posix_cclass_only: helper function that checks whether a pattern has + only posix single-byte character classes ([:alpha:], etc.) or has + none at all + - xstrmatch: if running in a multibyte locale, make sure to short- + circuit to the single-byte matching code only if there are no + unrecognized character class names, since the wide character ctype + functions allow locales to define their own character class names + (e.g., "hyphen"). Fixes issue reported by yangyajing - 4/13 + 4/10 ---- -subst.c - - process_substitute: run the EXIT trap before exiting, as other - shells seem to. Fixes problem pointed out by Dan Douglas - +configure.ac,cross-build/qnx.cache + - qnx: add a configure cache file for cross-building, treat qnx 7 like + qnx 6 in terms of cpp options. Fix from Brian Carnes + + +aclocal.m4 + - BASH_CHECK_DEV_STDIN: experimental change to test for /dev/stdin + independently of /dev/fd or /proc/self/fd. Suggested for QNX by + Brian Carnes -lib/readline/readline.c - - readline_internal_setup: call rl_vi_insertion_mode to enter vi - mode instead of rl_vi_insert_mode to avoid resetting the saved last - command information. Posix says that `.' can repeat a command - that was entered on a previous line so we need to save the info. - Fixes bug reported by Ian A. Watson - 4/14 + 4/11 ---- -lib/readline/complete.c - - rl_completion_matches: make sure xrealloc returns something non-null - (can happen when interrupted by a signal) before trying to add - matches to match_list +lib/glob/glob.c + - glob_testdir: return -2 if DIR is a symlink, to differentiate it from + any other kind of non-directory file + - glob_vector: if we have GX_ALLDIRS (globstar), we want to skip over + symlinks to directories, since we will pick up the real directory + later. Fixes incompatibility reported by Murukesh Mohanan + -subst.c - - array_remove_pattern: return NULL right away if array_variable_part - returns an invisible variable - - array_length_reference: handle array_variable_part returning an - invisible variable - - get_var_and_type: handle array_variable_part returning an invisible - variable +bashline.c + - bash_execute_unix_command: changes to make READLINE_POINT apply to + characters instead of bytes when in a multibyte locale. Report and + fix from Koichi Murase - 4/15 + 4/12 ---- -execute_cmd.c - - execute_command_internal: make sure to run the EXIT trap for group - commands anywhere in pipelines, not just at the end. From a point - raised by Andreas Schwab - -variables.c - - bind_int_variable: make sure invisible flag is unset. Fixes problems - like "declare -ai a; : $(( a[4]=4 ));" +builtins/evalstring.c + - parse_and_execute_cleanup: now takes an argument which is the value + of running_trap at some point before parse_and_execute was called; + changed callers in sig.c, builtins/evalfile.c -arrayfunc.c - - array_variable_part: return variable even if invisible flag set, - callers must handle invisible vars +builtins/common.h + - parse_and_execute_cleanup: changed prototype - 4/18 + 4/13 ---- -builtins/set.def - - unset_builtin: if -n flag given, call unset_nameref instead of - unset_variable - -variables.c - - find_variable_nameref: print warning message if nameref circular - reference detected, return NULL and let caller deal with it +builtins/evalstring.c + - parse_and_execute_cleanup: if the argument holding the previous state + of running_trap is the same value as the current running_trap state, + don't call run_trap_cleanup: assume that there is a caller who will + take care of the cleanup after this returns. Fixes recursive trap + call on "eval return" reported by Martijn Dekker -builtins/declare.def - - declare_builtin: only disallow global references at this point if - we are at the global scope +parse.y + - read_a_line: if remove_quoted_newline is non-zero, indicating the + here-document delimiter is unquoted, we will be running the contents + of the here-document through word expansion and need to quote CTLESC + and CTLNUL in the input. Fixes bug with ^A in here document reported + by Jorge Alberto Baca Garcia - 5/16 + 4/18 ---- -configure.ac - - update release status to beta +pathexp.c + - quote_string_for_globbing: make sure the QGLOB_CTLESC code handles + both CTLESC CTLESC and CTLESC CTLNUL in the same way. Fixes bug + reported by Martijn Dekker - 5/23 + 4/19 ---- -trap.c - - run_pending_traps: save and restore pipeline around calls to - evalstring() in case we get a trap while running a trap. Have to - figure out the recursive running traps issue elsewhere. Fixes - bug reported by Roman Rakus - - run_pending_traps: make sure to set running_trap to the appropriate - signal value when running a trap command - - run_pending_traps: short-circuit immediately if running_trap set - when invoked. Could change this later to only skip if it would - run the same trap as currently being run (running_trap == sig + 1) - -configure.ac - - add warning if bison not found +execute_cmd.c + - execute_command_internal: before executing any command in the current + shell, and before copying any existing FIFO list, call + reap_procsubs to unlink or close any process substitution pipes + associated with processes that have exited. Fixes hang in test suite + when trying to open a FIFO with no process having it open for + reading -lib/readline/doc/rltech.texi - - new section with an example program illustrating the callback - interface. Suggested by Peng Yu + 4/26 + ---- +parse.y + - read_token_word: if returning REDIR_WORD for a {id}>foo construct, + for example, make sure to assign the_word to yylval.word before + returning, in case a recursive call to the parser overwrites it + (e.g., when evaluating array indexes). From a message to + austin-group-l from Stephane Chazelas -examples/loadables/Makefile.in - - remove references to `cut' and `getconf', which were removed in - early March +lib/glob/sm_loop.c + - BRACKMATCH: if we have an invalid character class in an otherwise + well-formed bracket expression, don't try to match each character + of the (invalid) class individually; just skip over the class and + move on. From a message on the austin-group list from + Stephane Chazelas - 5/28 + 4/27 ---- -lib/sh/pathphys.c - - sh_realpath: correct inverted two arguments to call to sh_makepath. - Report and fix from Julien Thomas +variables.c + - push_exported_var,push_func_var,push_temp_var: make sure to set the + context correctly in the variable we bind in the previous (non-temp) + scope. Report from Martijn Dekker - 6/7 - --- -execute_cmd.c - - executing_line_number: the else clauses that are conditional on - various options being defined can simply be if clauses -- they are - mutually exclusive and all have `return' in the body. Fixes bug - reported by Flavio Medeiros +pathexp.c + - unquoted_glob_pattern_p: a pattern that contains a backslash can + have it removed by the matching engine (since backslash is special + in pattern matching), so if the pattern contains a backslash, and + does not end in a backslash, we need to return true. Fixes bug + reported by Robert Elz - 6/25 - ---- -lib/readline/readline.c - - readline_internal_setup: only sent the meta-key enable string to the - terminal if we've been told to use one and the terminal has been - successfully initialized (RL_ISSTATE (RL_STATE_TERMPREPPED) != 0). - Suggested by Dan Mick +lib/glob/gm_loop.c + - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash + that doesn't end the pattern -lib/readline/signals.c - - _rl_signal_handler: call any defined signal hook after calling - rl_resize_terminal when handling a SIGWINCH. We already have called - the original SIGWINCH handler but will not be resending the signal - to ourselves +lib/sh/timeval.c + - print_timeval: use locale_decpoint() instead of fixed `.' to print + decimal point. Bug report in austin-group email from Joerg Schilling + - 6/27 - ---- -lib/readline/doc/history.3, doc/bash.1 - - fix description of the `$' modifier to note that it expands to the - last *word*, which is not always the last argument. Report from - ariyetz@gmail.com via gnu.org RT +lib/sh/clock.c + - print_clock_t: use locale_depoint() in the same way as print_timeval - 6/29 + 4/29 ---- -lib/glob/smatch.c - - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead - of 0 (0 if not defined) - -configure.ac,config.h.in - - --enable-glob-asciiranges-default: new option, controls the value of - GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on - by default +subst.c + - expand_cond_node: if special != 0, make sure to add QGLOB_CTLESC + to the flags passed to quote_string_for_globbing. Same issue as the + one with `case' fixed on 4/7, report from Martijn Dekker + -doc/bashref.texi - - document new --enable-glob-asciiranges-default configure option + 4/30 + ---- +redir.c + - do_redirection_internal: r_close_this: if the file descriptor is + already closed before the shell is asked to close it, make sure to + add an undo list redirect to make sure it stays closed. Report from + Martijn Dekker + 5/2 + --- variables.c - - assign_in_env: implement += value appending semantics for assignments - preceding command names + - push_posix_temp_var: new function, takes the SHELL_VAR * passed as + an argument and uses the name and value to create a global variable + - merge_temporary_env: if posixly_correct is set, call + push_posix_temp_var to create global variables, otherwise call + push_temp_var to preserve the old behavior. Right now, it's only + called when in posix mode, but that might change. This undoes the + change from 4/27 when in posix mode - 7/4 + 5/3 --- -expr.c - - set lasttok = NUM in all of the functions that result in a number, - even if it's a boolean, to avoid errors with constructs like - 1 * x = 1, which should be an asignment error. Fixes problem - pointed out by Dan Douglas - -parse.y - - decode_prompt_string: don't bother to call strcpy if - polite_directory_format returns its argument unchanged. It's not - necessary and Mac OS X 10.9 aborts because of a supposed overlapping - string copy. Bug and fix from simon@hitzemann.org - -subst.c - - parameter_brace_find_indir: new function, code from - parameter_brace_expand_indir that looks up the indirectly-referenced - variable, but does not expand it - - parameter_brace_expand_indir: call parameter_brace_find_indir to - look up indirected variable reference - - get_var_and_type: call parameter_brace_find_indir if it looks like we - are trying to manipulate an indirect variable reference like - ${!b%%foo}. This makes a difference if !b references an array - variable. Bug report from Dan Douglas +sig.c + - struct that holds the terminating signal information has a new + field: whether that signal is expected to cause a core dump + - termsig_handler: if the call to kill(2) doesn't kill the process, + we have a problem. If our pid is not 1, we just exit with status + 128+sig (fake the sig exit status). If the pid is 1, we assume + we're in a Linux pid namespace and aren't allowed to send a signal + to ourselves. If we need to generate a core dump, we try to get + the kernel to SIGSEGV us by dereferencing location 0. If not, we + just exit with 128+sig. From a report and patch from Andrei Vagin + - 7/6 + 5/4 --- -lib/sh/casemod.c - - sh_modcase: make sure argument passed to is_basic is <= UCHAR_MAX, - since cval can convert something to a wchar_t greater than UCHAR_MAX. - Fixes bug reported by Tomasz Tomasik +bashline.c + - bash_execute_unix_command: make sure that parse_and_execute is called + with newly-allocated memory to avoid prematurely freeing the + command. Report and fix from Koichi Murase - 7/8 + 5/7 --- -lib/readline/history.c - - add_history_time: if history_length == 0, referencing history_length - - 1 will result in an array bounds error, so make history_length be - at least 1 before going on. Fixes bug reported by Geng Sheng Liu - - -builtins/setattr.def - - show_func_attributes: display definition (if NODEFS argument is 0) and - attributes for a particular function; used by `declare -fp name' - -builtins/declare.def - - declare_internal: call show_func_attributes if -f supplied with -p. - Fixes inconsistency observed by Linda Walsh - -builtins/common.h - - new extern declaration for show_func_attributes - -builtins/read.def - - read_builtin: check the first supplied variable name for validity - before attempting to read any input, since we know we will have to - at least use that one. Don't check any other names yet. Suggested - by jidanni@jidanni.org +builtins/shopt.def + - syslog_history: a shell option to control whether history is logged + to syslog; can be modified at runtime. Original patch from + Siteshwar Vashisht - 7/10 - ---- -redir.c - - do_redirection_internal: when closing a file descriptor with - r_close_this ([n]<&-) count close errors as redirection errors if - errno ends up as EIO or ENOSPC. Originally reported back in April - 2012 by Andrey Zaitsev +config-top.h + - SYSLOG_SHOPT: new configurable option, determines whether there is a + shell option to control syslogging history lines at runtime and sets + the default value of the option - 7/11 - ---- -redir.c - - do_redirection_internal: before calling check_bash_input, make sure - that we don't call check_bash_input for an asynchronous process that - is replacing stdin with something else. The seek backwards affects - the parent process as well, since parents and children share the - file pointer. Fixes problem originally reported in March 2013 by - Martin Jackson - - 7/13 - ---- -doc/{bash.1,bashref.texi} - - slight change to add a description of `shopt -o' suggested by Bruce - Korb - - 7/19 - ---- -lib/readline/histfile.c - - history_do_write: if close returns < 0, make sure we restore the - backup history file and return a non-zero value - - history_truncate_file: if write or close return < 0, make sure we - return a non-zero value - -[bash-4.3-beta frozen] - - 7/21 - ---- -lib/readline/isearch.c - - rl_display_search: now takes an entire search context flags word as - the second argument, instead of just reverse flag; changed callers - - rl_display_search: if the search has failed, add `failed ' to the - beginning of the search prompt - - _rl_isearch_dispatch: if the search has failed, display the entire - search string with an indication that the search failed but with the - last matching line. Suggested by jidanni@jidanni.org - -command.h - - W_ASSIGNINT: new word flag; used internally for make_internal_declare - and set by fix_assignment_words - -execute_cmd.c - - fix_assignment_words: set W_ASSIGNINT if compound assignment and -i - given as option. We don't do anything with the value yet - -subst.c - - shell_expand_word_list: rework the way the option list that is - passed to make_internal_declare is created - - 8/1 - --- -doc/{bash.1,bashref.texi} - - minor changes to description of $! based on a report from Chris - Down - -arrayfunc.c - - assign_array_element_internal: before trying to get an array's max - index to process a negative subscript, make sure the array exists. - Bug report from Geir Hauge - - 8/2 - --- -arrayfunc.c - - assign_array_element_internal: before using array_max_index() when - processing a negative subscript, make sure the variable is an array. - if it's not, use 0 as array_max_index assuming it's a string. - Fixes bug report from Geir Hauge - - 8/3 - --- -Makefile.in - - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by - Curtis Doty - - 8/5 - --- -lib/glob/sm_loop.c - - strcompare: short-circuit and return FNM_NOMATCH if the lengths of the - pattern and string (pe - p and se - s, respectively) are not equal - - strcompare: don't bother trying to set *pe or *se to '\0' if that's - what they already are. Fixes bug reported by Geir Hauge - - - 8/6 - --- -doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi - - minor typo changes from Geir Hauge - -bultins/help.def - - show_longdoc: avoid trying to translate the empty string because it - often translates to some boilerplate about the project and - translation. Report and fix from Geir Hauge - - 8/8 - --- -builtins/help.def - - help_builtin: try two passes through the list of help topics for each - argument: one doing exact string matching and one, if the first pass - fails to find a match, doing string prefix matching like previous - versions. This prevents `help read' from matching both `read' and - `readonly', but allows `help r' to match everything beginning with - `r'. Inspired by report from Geir Hauge - - 8/13 - ---- -builtins/fc.def - - fc_builtin,fc_gethnum: calculate `real' end of the history list and - use it if -0 is specified as the beginning or end of the history - range to list. Doesn't work for fc -e or fc -s by design. Feature - requested by Mike Fied - - 8/16 - ---- -trap.c - - _run_trap_internal: use {save,restore}_parser_state instead of - {save,restore}_token_state. It's more comprehensive - - 8/23 - ---- -doc/bash.1 - - disown: remove repeated text. Report and fix from Thomas Hood - - - 8/25 - ---- -lib/readline/rltty.c - - set_special_char: fix prototype (last arg is rl_command_func_t *) - -sig.c - - set_signal_handler: return oact.sa_handler only if sigaction - succeeds; if it doesn't, return SIG_DFL (reasonable default). From - https://bugzilla.redhat.com/show_bug.cgi?id=911404 - -bashline.c - - attempt_shell_completion: fix to skip assignment statements preceding - command name even if there are no programmable completions defined. - From https://bugzilla.redhat.com/show_bug.cgi?id=994659 - - attempt_shell_completion: if still completing command word following - assignment statements, do command completion even if programmable - completion defined for partial command name entered so far - - 8/26 - ---- -pcomplete.c - - pcomp_filename_completion_function: make sure rl_filename_dequoting_function - is non-NULL before trying to call it. Bug and fix from - Andreas Schwab - -bashline.c - - bash_command_name_stat_hook: if *name is not something we're going - to look up in $PATH (absolute_program(*name) != 0), just call the - usual bash_filename_stat_hook and return those results. This makes - completions like $PWD/exam[TAB] add a trailing slash - - 9/2 - --- -builtins/read.def - - read_builtin: before comparing what we read to the delim, make sure - we are not supposed to be ignoring the delimiter (read -N). We - set the delim to -1, but it's possible to read a character whose - int value ends up being between -1 and -128. Fixes bug - reported by Stephane Chazelas - -doc/{bash.1,bashref.texi} - - word splitting: crib some language from Posix to make it clear that - characters in IFS are treated as field *terminators*, not field - *separators*. Addresses issue raised by DJ Mills - - -lib/readline/{util.c,rldefs.h} - - _rl_stricmp,_rl_strnicmp: now take const char * string arguments; - changed prototype declarations - - 9/5 - --- -doc/{bash.1,bashref.texi} - - [[: modify description of pattern matching to make it clear that the - match is performed as if the extglob option were enabled. From Red - Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=1002078 - - 9/12 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: if we read an ESC and it's supposed to - terminate the search, make sure we check for typeahead with - _rl_pushed_input_available, since installing a hook function causes - typeahead to be collected in `ibuffer' (input.c). If there is any, - make sure we still use the ESC as a prefix character. Bug and fix - from Mike Miller - - 9/16 - ---- -builtins/{caller,cd,kill,pushd,wait}.def - - builtin_usage(): make sure call to this sets return status to - EX_USAGE - - 9/18 - ---- -terminal.c - - rl_change_environment: new application-settable variable; if non- - zero (the default), readline will modify LINES and COLUMNS in the - environment when it handles SIGWINCH - - _rl_get_screen_size: if rl_change_environment is non-zero, use setenv - to modify LINES and COLUMNS environment variables - -readline.h - - rl_change_environment: new extern declaration for applications - - 9/22 - ---- -configure.ac - - relstatus: bumped version to bash-4.3-beta2 - - 9/24 - ---- - -lib/readline/readline.c - - bind_arrow_keys_internal: added more key bindings for the numeric key - pad arrow keys on mingw32. Patch from Pierre Muller - - - 10/19 - ----- - -bashline.c - - maybe_restore_tilde: version of restore_tilde that honors `direxpand'; - calls restore_tilde after saving directory expansion hook if - necessary. Report from Andreas Schwab - -builtins/cd.def - - -@: new option, allows cd to use `extended attributes' present in - NFSv4, ZFS; idea taken from ksh93. Attributes associated with a - file are presented as a directory containing the attributes as - individual files. Original patch contributed by Cedric Blancher - - - 10/20 - ----- -aclocal.m4 - - BASH_CHECK_MULTIBYTE: check for wcwidth being broken with unicode - combining characters needs a value to use when cross-compiling. - Bug report from Bert Sutherland - -doc/{bash.1,bashref.texi} - - document new -@ option to cd builtin - - 10/28 - ----- -lib/glob/{{gmisc,glob}.c,glob.h} - - extglob_pattern renamed to extglob_pattern_p, declared in glob.h - -subst.c - - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2 - had a typo (& isexp instead of &&) - - 10/29 - ----- -input.c - - getc_with_restart: make sure local_index and local_bufused are - reset to 0 before returning EOF, in case we are running an interactive - shell without line editing and ignoreeof is set. Report and fix - from Yong Zhang - -lib/readline/search.c - - _rl_nsearch_init: take out extra third argument to rl_message; it - only matches prototype (and maybe format) in cases where - PREFER_STDARG and USE_VARARGS are both undefined, which is rare - - 10/31 - ----- -subst.c - - process_substitute: when opening the named pipe in the child, open - without O_NONBLOCK to avoid race conditions. Happens often on AIX. - Bug report and fix from Michael Haubenwallner - - -builtins/ulimit.def - - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is, - use RLIMIT_NTHR (NetBSD) - - 11/5 - ---- -locale.c - - set_default_locale_vars,set_locale_var: if TEXTDOMAINDIR has been - set, and default_dir has a non-null value, call bindtextdomain(3) - when TEXTDOMAIN is assigned a value. Fixes problem reported by - Michael Arlt - - 11/6 - ---- -builtins/cd.def - - cdxattr: only create synthetic pathname in `buf' if NDIRP argument - is non-null - - change_to_directory: if we have specified -@ and cdxattr returns - failure, fail immediately. Fixes bug reported by Joshuah Hurst - - - 11/12 - ----- -redir.c - - print_redirection: change r_err_and_out (&>) and its append form, - r_append_err_and_out (&>>) cases to separate redirection operator - from filename by a space, in case we have a process substitution. - Fixes bug reported by admn ombres - - 11/15 - ----- -execute_cmd.c - - execute_simple_command: don't close process substitution fds until - we are finished executing any current shell function. Partial fix - for bug reported by John Dawson - -support/shobj-conf - - add support for Darwin 13 (Mac OS X 10.9, Mavericks). Based on a - report by Ludwig Schwardt - - 11/20 - ----- -[bash-4.3-rc1 frozen] - - 11/24 - ----- -builtins/printf.def - - bind_printf_variable: make sure that the variable assigned to is - no longer marked as invisible. Fixes bug reported by NBaH - - - 11/28 - ----- -jobs.c - - delete_old_job: fix off-by-one error in job index in call to - internal_warning. Bug report from Peter Cordes - - 11/30 - ----- -doc/bashref.texi - - add string to description of special parameters with name of - special parameter prefixed by a $, so you can search for $#, - for instance - - 12/2 - ---- -lib/readline/{histexpand.c - - get_history_event: account for current_history() possibly returning - NULL. Report and fix from Pankaj Sharma - - - 12/11 - ----- - -lib/readline/parse-colors.c - - get_funky_string: don't call abort if we see something we can't - parse; just return an error - - _rl_parse_colors: if we encounter an error while parsing $LS_COLORS - we need to leave _rl_color_ext_list as NULL after freeing its - elements, then turn off _rl_colored_stats. Report and fix from Martin - Wesdorp - - 12/13 - ----- - -lib/readline/parse-colors.c - - _rl_parse_colors: if we encounter an unrecognized prefix, throw an - error but try to recover and go on to the next specification - -variables.c - - make_local_variable: for new variables this function creates, set - the att_invisible attribute. All callers from declare_internal. - Indirectly, this is a fix for bug with `declare -n var; var=foo;' - reported by Pierre Gaston - - bind_variable: if assigning to nameref variable that doesn't have - a value yet (e.g., with `declare -n var; var=foo'), don't try to - use the unset name. Fixes a segfault reported by Pierre Gaston - - -execute_cmd.c - - execute_command_internal: make sure last_command_exit_value is set - to 0 after any command executed in the background. Fixes bug - reported by Martin Kealey - - 12/17 - ----- -support/config.{guess,sub} - - updated to latest versions from git - - 12/19 - ----- -parse.y - - struct STRING_SAVER: now has a new `flags' element, to identify the - caller: alias expansion, double-paren parsing, or parse_and_execute - - push_string: now sets flags to PSH_ALIAS if `ap' argument is non-NULL - - push_string: now doesn't attempt to call strlen on a NULL string to - set shell_input_line_size - - parser_expanding_alias, parser_save_alias, parser_restore_alias: new - functions to provide an external interface to push_string and - pop_string; parser_save_alias sets flags element to PSH_SOURCE (could - be renamed PSH_EXTERN someday) - - shell_getc: when yy_getc returns '\0', instead of just testing - whether the pushed_string_list is not-empty before popping it, don't - pop if if the saved string has flags PSH_SOURCE, indicating that - parse_and_execute set it before setting bash_input to the string. - We should continue reading to the end of that string before popping - back to a potential alias. Partial solution for the problem of aliases - with embedded newlines containing `.' commands being executed out of - order reported by Andrew Martin - - shell_getc: when yy_getc returns '\0' and there is a saved string of - type PSH_SOURCE, restart the read without popping the string stack - if we have not read to the end of bash_input.location.string. Rest - of fix for out-of-order execution problem - -externs.h - - parser_expanding_alias, parser_save_alias, parser_restore_alias: new - extern function declarations - -builtins/evalstring.c - - pe_prologue: if the parser is expanding an alias, make sure to add - an unwind-protect to restore the alias; undoes the work that will be - performed by parse_and_execute/parse_string - - parse_and_execute,parse_string: after calling push_stream to save - bash_input, check whether or not the parser is currently expanding - an alias (parser_expanding_alias() != 0). If it is, we want to save - that string in the pushed_string_list, which we do with - parser_save_alias. - - 12/23 - ----- -execute_cmd.c - - execute_for_command: make sure to set line_number before expanding - the word list, so expansion errors have the right line number. - From a report from Ben Okopnik - -expr.c - - exp2: save token pointer before calling readtok(), arrange to use - saved token pointer when printing error token on a division by 0 - error - - 12/27 - ----- -lib/readline/display.c - - rl_redisplay: when calculating effects of invisible characters in a - prompt that is split across physical screen lines to set the indices - of linebreaks, don't bother testing local_prompt_prefix (line 751). - That prefix doesn't matter when calculating prompt visible and - invisible characters. Fixes problem reported by Jinesh Choksi - - -Makefile.in - - install: make sure to use $(DESTDIR) when installing OTHER_DOCS. - Report and fix from Matthias Klose - -doc/texinfo.tex - - updated to version of 2013-09-11 - - 12/28 - ----- -lib/readline/undo.c - - rl_do_undo: if we are undoing from a history entry (rl_undo_list == - current_history()->data), make sure the change to rl_line_buffer is - reflected in the history entry. We use the guts of - rl_maybe_replace_line to do the work. Fixes problem reported by - gregrwm - - 12/30 - ----- -sig.c - - sigint_sighandler: if we get a SIGINT (and this signal handler is - installed) while the wait builtin is running, note that we received - it in the same way as jobs.c:wait_sigint_handler and return. The - various wait_for functions will look for that with CHECK_WAIT_INTR. - This fixes the wait builtin not being interruptible in an interactive - job control shell - - 12/31 - ----- -trap.c - - set_signal_hard_ignored: rename set_signal_ignored to this, since it - both sets original_signals[sig] and sets the HARD_IGNORE flag - - set_signal_ignored: new function, now just sets original_signals[sig] - -trap.h - - set_signal_hard_ignored: new external declaration - -sig.c - - initialize_terminating_signals: call set_signal_hard_ignored instead - of set_signal_ignored for signals with disposition SIG_IGN when the - shell starts - -execute_cmd.c - - setup_async_signals: make sure we get the original dispositions for - SIGINT and SIGQUIT before starting the subshell, and don't call - set_signal_ignored because that sets original_signals[sig]. If we - don't, subsequent attempts to reset handling using trap will fail - because it thinks the original dispositions were SIG_IGN. Posix - interpretation 751 (http://austingroupbugs.net/view.php?id=751) - - 1/2/2014 - -------- -lib/sh/stringvec.c - - strvec_mcreate, strvec_mresize: versions of create and resize that - use malloc and realloc, respectively, instead of xmalloc/xrealloc - -braces.c - - expand_amble,mkseq: use strvec_mcreate/strvec_mresize so we can - catch and handle memory allocation failures instead of aborting - with the xmalloc/xrealloc interface - -lib/sh/strdup.c - - strdup replacement function for ancient systems that don't have it - -lib/sh/itos.c - - mitos: new function, itos that uses strdup instead of savestring - -externs.h - - strvec_mcreate/strvec_mresize: new extern declarations - - mitos: new extern declaration - -configure.ac - - bash version moved to 4.3-rc2 - - 1/6 - --- -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - separate the description of what happens when readline reads the - tty EOF character from the description of delete-char, leaving a - note in the delete-char description about common binding for ^D. - From suggestion by Parke - -lib/readline/doc/{version.texi,history.3,*.texi} - - updated email addresses and copyright dates - - 1/7 - --- -variables.c - - delete_var: new function, just removes a variable from a hash table - and frees it, without doing anything else - - make_variable_value: if we are trying to assign to a nameref variable, - return NULL if the value is null or the empty string or not a valid - identifier - -variables.h - - delete_var: new extern declaration - -subst.h - - ASS_NAMEREF: new define for assignments, means assigning to a nameref - variable - -builtins/declare.def - - declare_internal: if we are creating and assigning to a nameref - variable, make sure the value is a valid variable name (checks done - by make_variable_value via bind_variable_value) and display an - error message, deleting the variable we just created, if it is not. - Fixes bug reported by Peggy Russell - - 1/9 - --- -builtins/declare.def - - declare_internal: turning on nameref attribute for an existing - variable turns off -i/-l/-u/-c attributes (essentially the ones - that cause evaluation at assignment time) for ksh93 compat - -builtins/setattr.def - - show_name_attributes: if asked to display attributes and values for - a nameref variable, don't follow the nameref chain to the end. More - ksh93 compat - - 1/10 - ---- -trap.c - - _run_trap_internal: use {save,restore}_parser_state instead of - {save,restore}_token_state, like in run_pending_traps(); don't - need to save and restore last_command_exit_value as a result - - _run_trap_internal: call {save,restore}_pipeline like in - run_pending_traps() - - run_pending_traps: since we no longer run traps in a signal handler - context, do not block and unblock the trapped signal while the - trap is executing - - run_pending_traps: allow recursive invocations (basically, running - traps from a trap handler) with only a warning if the shell is - compiled in debug mode. If a caller doesn't want this to happen, - it should test running_trap > 0. signal_in_progress (sig) only works - for the signals the shell handles specially - -bashline.c - - bash_event_hook: make sure we clean up readline if interrupt_state - is set, not only when SIGINT is not trapped. check_signals_and_traps - will call check_signals, which calls QUIT, which will longjmp back - to top_level, running the interrupt trap along the way. Fixes the - problem of signal handlers being reset out from under readline, and - not being set properly the next time readline is called, because - signals_set_flag is still set to 1. XXX - might need to do this - for other signals too? - - 1/11 - ---- -subst.h - - SD_GLOB: new define for skip_to_delim; means we are scanning a - glob pattern. - -subst.c - - skip_to_delim: if flags include SD_GLOB, assume we are scanning a - glob pattern. Currently only used to skip bracket expressions - which may contain one of the delimiters - - 1/12 - ---- -subst.c - - parameter_brace_expand: when expanding $@ as part of substring - expansion, pattern substitution, or case modification, don't turn - on the QUOTED_NULL flag. The code that constructs the word to be - returned from expand_word_internal expects a different code path - when $@ is being expanded. Fixes bug reported by Theodoros - V. Kalamatianos - - 1/19 - ---- -subst.c - - list_dequote_escapes: new function; analogue of list_quote_escapes - -pathexp.c - - quote_string_for_globbing: fix case where unescaped ^A is last char - in string; need to pass it through unaltered instead of turning it - into a bare backslash - - quote_string_for_globbing: when quoting for regexp matching in [[, - don't treat backslash as a quote character; quote the backslash as - any other character. Part of investigation into reports from - Eduardo A. Bustamante López - - 1/25 - ---- -builtins/gen-helpfiles.c - - write_helpfiles: add prototype - - make sure to #undef xmalloc/xfree/xrealloc/free if USING_BASH_MALLOC - is defined. the code does not use them, and we don't link against - xmalloc.o. Report from Linda Walsh - -Makefile.in - - variables.o: add dependency on builtins/builtext.h; helps with - parallel builds. Report from Linda Walsh - -support/shobj-conf - - darwin: combine the stanzas into one that will not require them to - be updated on each Mac OS X release. Report and fix from Max Horn - - - 1/27 - ---- -support/shobj-conf - - darwin: changed the install_name embedded into the shared library - to contain only the major version number, not the minor one. The - idea is that the minor versions should all be API/ABI compatible, - and it is better to link automatically with the latest one. Idea - from Max Horn - - 1/29 - ---- -[bash-4.3-rc2 released] - - 1/30 - ---- -lib/readline/readline.h - - rl_clear_history, rl_free_keymap: add extern declarations. Report - from Hiroo Hayashi - -general.c - - include trap.h for any_signals_trapped() prototype - -lib/sh/unicode.c - - include for sprintf prototype - - 1/31 - ---- -execute_cmd.c - - execute_simple_command: only posix-mode shells should exit on an - assignment failure in the temporary environment preceding a special - builtin. This is what the documentation and code comments have - always said - - execute_simple_command: make sure redirection errors, word expansion - errors, and assignment errors to Posix special builtins cause a - non-interactive posix mode shell to exit. Previously the shell - would not exit if the failed special builtin was on the LHS of || - or && - -pathexp.c - - quote_string_for_globbing: when quoting a regular expression - (QGLOB_REGEXP), allow an unquoted backslash to pass through - unaltered. Don't use it as a quote character or quote it. More - investigation from 1/24 and report by Mike Frysinger - - - quote_string_for_globbing: when quoting a regular expression - (QGLOB_REGEXP), turn CTLESC CTLESC into CTLESC without adding a - backslash to quote it. We should not have to quote it because it is - not a character special to EREs. More investigation from 1/24 - -lib/glob/glob.c - - glob_testdir: now takes a second flags argument (currently unused); - changed prototype and callers - - 2/1 - --- -lib/glob/glob.c - - glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use - lstat so we skip symlinks when traversing the directory tree. - Originally reported by Chris Down - - 2/2 - --- -lib/readline/undo.c - - rl_do_undo: make sure CUR is non-zero before dereferencing it to - check cur->data against rl_undo_list. Report and fix from - Andreas Schwab - -doc/{bash.1,bashref.texi} - - added slight clarifying language to the description of $*, - describing what happens when the expansion is not within double - quotes - - 2/4 - --- -test.c - - unary_test: add code to -v case so that it interprets `bare' array - references (foo[1]) and returns true if that index has a value - - 2/5 - --- -trap.c - - restore_default_signal: fix SIGCHLD special case for SIG_TRAPPED flag - off but SIG_INPROGRESS mode set and handler IMPOSSIBLE_TRAP_HANDLER; - continue with resetting handler in this case. maybe_set_sigchld_trap - will check these things before resetting sigchld trap from - run_sigchld_trap. Fixes (apparently long-standing?) problem reported - by Alexandru Damian - - 2/6 - --- -lib/sh/strtrans.c - - ansic_quote: fixed a bug when copying a printable character that - consumes more than one byte; byte counter was not being incremented. - Bug report from jidanni@jidanni.org - - 2/7 - --- -input.c - - getc_with_restart: if read(2) returns -1/EINTR and interrupt_state or - terminating_signal is set (which means QUIT; will longjmp out of this - function), make sure the local buffer variables are zeroed out to - avoid reading past the end of the buffer on the next call. Bug report - from Dan Jacobson - - 2/9 - --- -bashline.c - - command_word_completion_function: if a directory in $PATH contains - quote characters, we need to quote them before passing the candidate - path to rl_filename_completion_function, which performs dequoting on - the pathname it's passed. Fixes bug reported by Ilyushkin Nikita - - - 2/11 - ---- -parse.y - - xparse_dolparen: save and restore shell_eof_token around call to - parse_string, intead of just leaving it set to ')' - - shell_getc: when -v is set, only print the command line when - shell_eof_token is 0, so we don't print it multiple times when - recursively entering the parser to parse $(...) commands. Fixes - bug reported by Greg Wooledge - -[changed release status to 4.3-release] - - 2/13 - ---- -lib/sh/strtrans.c - - ansic_quote: handle case where mbrtowc reports that the multibyte - sequence is incomplete or invalid. Fixes bug reported by - Eduardo A. Bustamante López - - 2/14 - ---- -variables.c - - find_variable_nameref_context: fix a problem that caused the loop - to go one context too close to the global context. In some cases, - simple variable assignment would set a variable in the global - context instead of a local context. Bug report from - Geir Hauge - - 2/26 - ---- -[bash-4.3 released] - - 2/27 - ---- -aclocal.m4 - - broken wcwidth check: fix typo reported by David Michael - - - 2/28 - ---- -support/bashbug.sh - - add ${BUGADDR} to error message printed if sending mail fails - -trap.c - - _run_trap_internal: don't call {save,restore}_pipeline if running - DEBUG trap; run_debug_trap calls them itself. Fixes bug reported - by Moe Tunes - -test.c - - unary_test: fix 'R' case by using find_variable_noref instead of - find_variable - - test_unop: add back missing 'R' case. Fixes bug reported by - NBaH - - 3/2 - --- -jobs.c - - end_job_control: if job control is active, we changed the terminal's - process group, so make sure we restore it. Fixes bug reported by - Eduardo A. Bustamante López - - 3/7 - --- -pcomplete.c - - pcomp_curtxt: new variable, holds the original text to be completed - as passed to the programmable completion code - - pcomp_filename_completion_function: if we are running compgen - (presumably in a shell function completion) and performing readline - completion, check the word being completed. If it's not empty, but - the original word passed to the programmable completion code is an - empty string (""), call a dequoting function if one is available. - This compensates for an assumption in bash-completion. Reported by - Albert Shih - -lib/readline/readline.c - - _rl_dispatch_subseq: when deciding whether or not to set vi mode's - idea of the last command, use whether or not the dispatching keymap - is vi_movement_keymap instead of the key sequence length. The `c', - `d', and `y' commands all take motion commands as `arguments' and - will produce key sequences longer than 1 character. The arrow keys - will end up dispatching out of a different keymap, so the test will - prevent arrow keys from setting the last command (the problem in - bash-4.2). Bug report from Daan van Rossum - -lib/readline/vi_mode.c - - _rl_vi_motion_command: convenience function to test whether a key is - a vi-mode motion command - -lib/readline/rlprivate.h - - _rl_vi_motion_command: extern declaration - -parse.y - - parse_matched_pair: we should not skip processing single quotes in - posix mode if dolbrace_state == DOLBRACE_QUOTE2 (pattern - substitution). Fixes bug reported by David Sines - - - 3/10 - ---- -lib/readline/readline.c - - _rl_dispatch_callback: treat a return value of -1 as the end of - a command dispatch sequence if the current context doesn't - indicate that we're reading a multi-key sequence - ((cxt->flags & KSEQ_SUBSEQ) == 0). Turn off the multikey flag - and free the context chain in this case. Fixes one bug reported - by Felix Yan to bug-readline list - - _rl_dispatch_callback: treat a return value of > 0 the same as 0 - and return from the function, since only values < 0 cause us to - simulate recursion. Rest of fix for bug tracked down by - Anatol Pomozov - - 3/11 - ---- - -execute_cmd.c - - execute_in_subshell: if a longjmp occurs, set result to - EXECUTION_FAILURE only if last_command_exit_value == EXECUTION_SUCCESS; - use value of last_command_exit_value otherwise. Fixes cosmetic - issue reported by Dennis Lambe Jr. - -doc/bash.1 - - shell-kill-word and shell-backward-kill-word should be documented - as unbound by default. Report from Oliver Hartley - - -trap.c - - run_pending_traps: save value of $? before running trap commands in - trap_saved_exit_value, like run_exit_trap - - _run_trap_internal: save value of $? before running trap commands in - trap_saved_exit_value, like run_exit_trap - -builtins/common.c - - get_exitstat: when running `return' in a trap action, and it is not - supplied an argument, use the saved exit status in - trap_saved_exit_value. Fixes Posix problem reported by - Eduardo A. Bustamante López - - 3/13 - ---- -lib/sh/shquote.c - - sh_contains_quotes: new function, returns true if a given string - contains any of the shell quote characters (single quote, double - quote, or backslash) - -externs.h - - sh_contains_quotes: new extern declaration - -pcomplete.c - - pcomp_filename_completion_function: more changes for the benefit of - bash-completion: if the argument is not the same as the original - argument passed to the programmable completion code (pcomp_curtxt), - and we are being run by compgen as part of a completion, dequote the - argument as bash-completion expects. Fix for the complete-word- - with-quoted-special-chars problem with bash-completion - - 3/17 - ---- -execute_cmd.c - - execute_intern_function: when in posix mode, make defining a function - with the same name as a special builtin a fatal error only when the - shell is not interactive. Interactive shells display an error - message and go on. From a discussion with Doug McIlroy - - - 3/18 - ---- -arrayfunc.c - - assign_compound_array_list: when using expand_assignment_string_to_string - to expand the value in a ( [x]=y ) compound assignment, make sure - that we convert 0x0 to "" when expanding [x]= so it doesn't appear as - if the index is unset. Fixes bug reported by Geir Hauge - - -builtins/common.c - - get_exitstat: update fix of 3/11 to allow the DEBUG trap to use the - current value of $? instead of the value it had before the trap - action was run. This is one reason the DEBUG trap exists, and - extended debug mode uses it. Might want to do this only in Posix - mode - -doc/{bash.1,bashref.texi} - - return: add language cribbed from Posix saying what happens when - return is run without an argument from a trap, including the DEBUG - trap exception - - 3/19 - ---- -lib/glob/gmisc.c - - extglob_pattern_p: make sure ?(patlist) is flagged as an extglob - pattern - -lib/glob/glob.c - - extglob_skipname: rewrite to handle patterns that begin but do not - end with an extglob pattern; change test for easy case and loop - through patterns accordingly. Fixes problem with matching filenames - with a leading dot reported by Stephane Chazelas - - - wextglob_skipname: make analogous changes - - 3/20 - ---- -Makefile.in - - pass -DDEBUG down to builds in readline and history directories - -lib/readline/util.c - - _rl_trace and related functions are now only compiled in if DEBUG - is defined - -lib/readline/Makefile.in - - substitute @DEBUG@ and pass -DDEBUG, if necessary, to compilation - in LOCAL_CFLAGS - - 3/21 - ---- -parse.y - - shell_getc: when checking whether or not to reallocate - shell_input_line to add trailing newline, don't try to subtract from - shell_input_line_size. size_t is unsigned, so if its value is less - than 3 (like, say, 2), size-3 is a very large number and the string - will not be reallocated. Use len+3 > size instead of len > size-3. - Fixes bug reported in - https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1295467 - - 3/27 - ---- -lib/readline/display.c - - _rl_clean_up_for_exit: don't bother to call _rl_move_vert to whatever - readline thinks the last displayed line is if it's 0. Two reasons: a - minor optimization, and it protects against unwanted moving if this - function is called twice, as it is when ^C is pressed. Fixes bug - reported by Egmont Koblinger - - 3/28 - ---- -bashline.c - - invalid_completion: new function, used to identify attempts to - complete words that are syntax errors - - attempt_shell_completion: if invalid_completion returns true for a - word in a command position, punt on all completions. Fixes cosmetic - issue reported by Uwe Storbeck - - attempt_shell_completion: add clause so that in_command_position - remains set to 1 for an empty word following a command separator like - (, &, or | - -lib/readline/kill.c - - rl_yank, rl_yank_nth_arg_internal: don't return -1 from bindable - functions, return 1 instead - -lib/readline/text.c - - rl_rubout, _rl_rubout_char, rl_delete, rl_change_case, - rl_transpose_chars, rl_transpose_words, _rl_set_mark_at_pos, - rl_exchange_point_and_mark, _rl_insert_next, _rl_char_search, - _rl_char_search_internal: - don't return -1 from bindable functions, return 1 instead - -lib/readline/vi_mode.c - - rl_vi_end_word, rl_vi_rubout, rl_vi_delete, rl_vi_char_search, - rl_vi_match, _rl_vi_set_mark, _rl_vi_goto_mark: - don't return -1 from bindable functions, return 1 instead - -lib/readline/macro.c - - rl_start_kbd_macro, rl_end_kbd_macro: - don't return -1 from bindable functions, return 1 instead - -builtins/setattr.def - - set_var_attribute: honor setting of no_invisible_vars when setting - att_invisible on a variable - - include "../flags.h" for no_invisible_vars - -builtins/declare.def - - declare_internal: honor setting of no_invisible_vars when setting - att_invisible on a variable - - include "../flags.h" for no_invisible_vars - -Makefile.in,builtins/Makefile.in - - make sure declare.o and setattr.o depend on flags.h - -execute_cmd.c - - decpoint: new function, returns locale's decimal point or `.' default - - mkfmt: use decpoint() to get decimal point instead of unconditionally - using `.'. Fixes bug reported by Andrey Tataranovich - in debian bug 741669 - - 4/10 - ---- -lib/readline/rltypedefs.h - - add back old Function/VFunction/etc typedefs, since other packages - (python, samba) use them. Mark as deprecated using gcc and clang - attributes. Report and fix from Max Horn - - 4/14 - ---- -jobs.c - - run_sigchld_trap: unwind-protect value of this_shell_builtin, since - it matters in some cases whether or not we are running `wait' or - `eval'. Fixes bug reported by Eduardo A. Bustamante López - - - 4/18 - ---- -shell.h - - sh_parser_state_t: add `need_here_doc' flags member, since - xparse_dolparen (via parse_command) sets it to 0 - -parse.y - - gather_here_documents: make sure need_here_doc is > 0, since we - don't want to just decrement it forever if it ends up < 0. Partial - fix for bug reported by Jared Yanovich - - {save,restore}_parser_state: save and restore need_here_doc flag. - Rest of fix for bug reported by Jared Yanovich - - 4/19 - ---- -subst.c - - cond_expand_word: since we are not supposed to be performing word - splitting here, set expand_no_split_dollar_star to 1 in addition to - setting W_NOSPLIT2 - - expand_word_internal: if we have a case where we have an unquoted - $@ but we are in a case where we don't want to split (W_NOSPLIT2), - make sure we return a list consisting of a single word with the - arguments separated by spaces and don't do word splitting. Fixes - bug reported by Greg Wooledge from an IRC - discussion - -builtins/hash.def - - print_portable_hash_info: single-quote pathnames and hashed filenames - that contain shell metacharacters. Fixes bug reported by - in debian bash bug #739853 - - 4/20 - ---- -lib/readline/display.c - - When using horizontal scrolling, the redisplay code erases too much - of the line containing successful results, so make sure we only - erase to the end of the line after making sure we move the cursor - to the end. Fixes bug reported by - - 4/23 - ---- -{bashhist,bashline}.c -builtins{bind,help,type}.def -lib/glob/glob.c, lib/intl/{loadmsgcat,localealias}.c,lib/sh/mktime.c - - fixes to memory leaks uncovered by coverity scan - - 4/24 - ---- -{bashhist,subst,redir,assoc,jobs,array,trap}.c -lib/intl/l10flist.c -builtins/complete.def - - fixes to memory leaks and other resource usage problems uncovered by - coverity scan - -redir.c - - do_redirection_internal: if dup2 fails (presumably because of a - resource limit), close the file descriptor we opened before returning - error - - 4/25 - ---- -config-top.h - - DEFAULT_BASHRC: new define with the name of the default shell - startup file - -bashline.c - - bash_directory_completion_matches: don't dequote the directory name. - If rl_completion_found_quote is non-zero, readline will dequote the - filename itself. Fixes bug reported by Clark Wang - - - 4/27 - ---- -subst.c - - parameter_brace_expand_rhs: if parameter_brace_find_indir returns - NULL or "", or if it returns something that is not a valid identifier, - report an error and return &expand_wdesc_error so the error can - propagate up. Fixes bug reported by Andre Holzhey - - - 4/29 - ---- -subst.c - - parameter_brace_substring: don't short-circuit right away if the - value is NULL but we are looking at the positional parameters. Part - of fix for bug reported by Pierre Gaston - - pos_params: if there are no positional parameters, only short-circuit - if we are looking for $1 and above. Rest of fix for bug reported - by Pierre Gaston - -subst.h - - SD_NOPROCSUB: new flag for skip_to_delim, means to not allow any - process subsitutions (should not have overloaded SD_NOSKIPCMD) - -subst.c - - skip_to_delim: honor SD_NOPROCSUB flag - -make_cmd.c - - make_arith_for_expr: set W_NOPROCSUB flag in the created word - - make_arith_for_command: set SD_NOPROCSUB in the flags argument to - skip_to_delim so we don't treat <( or >( as a process substitution - (we won't evaluate them in eval_arith_for_expr anyway). Fixes - bug reported by Pierre Gaston - - 5/1 - --- -lib/glob/gmisc.c - - glob_dirscan: new function, takes a pattern and a directory separator - argument and advances the pattern to the last occurrence of the - separator. Like strrchr, but understands extended glob patterns and - uses glob_patscan to skip over them - -lib/glob/glob.c - - extglob_skipname: if the extended globbing pattern is invalid, don't - skip the name - - glob_filename: if there is a slash in the pattern to be matched, and - extglob is enabled, use glob_dirscan to find the real last occurrence - of `/' to avoid being confused by slashes in extglob patterns. Fix - for bug reported by Pierre Gaston - - 5/6 - --- -variables.c - - make_local_variable: only set the att_invisible attribute if - no_invisible_vars isn't set - - find_variable_for_assignment: new function, intended to be called by - code that eventually wants to assign a value to the variable; will not - skip invisible variables; currently identical to find_variable - - find_variable_no_invisible: new function, finds the first visible - instance of variable with a given name in the variable context chain; - eventually will be used to replace find_variable; separate right now - for testing - -variables.h - - find_variable_for_assignment: extern declaration - - find_variable_no_invisible: extern declaration - - 5/7 - --- -variables.c - - make_local_variable: don't clear `invisible' attribute if we are - returning an existing local variable at the right context. Let the - upper layers do that. Fixes bug reported by Dan Douglas - - - 5/8 - --- -lib/readline/input.c - - rl_getc: call RL_CHECK_SIGNALS if a read(2) is interrupted (-1/EINTR) - by SIGALRM or SIGVTALRM (placeholder for non-keyboard-generated - signals of interest) - -builtins/read.def - - edit_line: call bashline_set_event_hook and - bashline_reset_event_hook around call to readline(), so the right - signal handling happens - - read_builtin: make sure we add an unwind_protect call to - bashline_reset_event_hook. These changes fix bug reported in - https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476 - -bashline.c - - bash_event_hook: make sure we clean up the readline state by calling - rl_cleanup_after_signal if sigalrm_seen is non-zero. The read builtin - sets this when it times out - - 5/12 - ---- -doc/{bash.1,bashref.texi} - - clarify language to make it clear that changing attributes of a - nameref variable (e.g., export), actually changes the attributes of - the referenced variable. Fixes omission noted by Jeff Haemer - - -arrayfunc.c - - bind_array_var_internal: make sure ENTRY no longer has invisible - attribute before returning. Fixes bug reported by Geir Hauge - - - 5/22 - ---- -execute_cmd.c - - shell_execve: if execve fails and we return 127 or 126, make sure to - set last_command_exit_value if a call to file_error or report_error - causes the shell to exit. This ensures that the shell exits with - the right value. - - 6/6 - --- -shell.c - - drop_priv_mode: print an error message on setuid() failure, optionally - exit if errno == EAGAIN, as it can be on Linux when RLIMIT_NPROC for - the target user is exceeded. - -config-top.h - - EXIT_ON_SETUID_FAILURE: new settable define, will cause the shell to - exit if setuid fails with errno == EAGAIN - - 6/10 - ---- -parse.y - - time_command_acceptable: fix so time is accepted everywhere the - grammar is looking for a `compound_list'. Fixes bug reported by - Dale Worley - - 6/12 - ---- -subst.c - - clear_fifo_list: new function, clears FDs associated with open pipes - in current FIFO list without closing the file descriptors. Can - possibly be used when shell_execve fails and the shell jumps back - to top_level and we don't want the shell to close the open FIFOs - each time through the read-execute loop. Bug reported by Harald - Koenig - - - 6/16 - ---- -builtins/shopt.def - - compat42: make sure the `compat42' option sets the correct variable - for compatibility level. Fixes bug reported by Ondrej Oprala - - -support/bashbug.sh - - fix typo when echoing $USAGE. Report from Shantanu Kulkarni - - -execute_cmd.c - - shell_execve: before longjmp back to subshell_top_level, clear out the - FIFO fd list by calling clear_fifo_list so the FDs (which we inherited - from our parent) aren't closed every time through the read-eval loop. - Fix for bug reported by Harald Koenig - - 6/18 - ---- -subst.c - - extract_process_subst: add additional argument: xflags, allow callers to - pass flags like extract_command_subst - - extract_process_subst: call xparse_dolparen like command substitution - to avoid problems when parsing commands constructs with embedded open - parens. Fixes bug reported by Tim Friske - -subst.h - - extract_process_subst: modified prototype for extern declaration - - 6/19 - ---- -execute_cmd.c - - execute_pipeline: if running with lastpipe enabled, make sure that we - check whether or not the job id is valid using INVALID_JOB before - calling job_exit_status. the jobs list can get frozen and unfrozen in - the presence of nested pipelines and loops and wait_for can clear a - job table entry. Fixes bug reported by - -jobs.c - - freeze_jobs_list: now returns old value of jobs_list_frozen; unused at - current time - -jobs.h - - freeze_jobs_list: change return value - - 6/20 - ---- -lib/glob/smatch.c - - MEMCHR: single-byte and wide character defines (memchr/wmemchr) - -lib/glob/sm_loop.c - - GMATCH: when the wildcards are the last element of the pattern, make - sure they do not match a string containing a `/' if FNM_PATHNAME is - set in FLAGS - - GMATCH: when recursively calling GMATCH after we see a `*', don't - try to consume the rest of the pattern with `*' if FNM_PATHNAME is - set in FLAGS, just consume up to the next slash and then see whether - or not the rest of the pattern matches. Fixes bug reported by Ian - Kelling - - GMATCH: when processing `*' in the pattern, after skipping consecutive - wildcards, if we hit a literal `/' in the pattern and we're looking - for a pathname, skip characters in the string until we find a `/' - (no slash means the match fails), and try to match the rest of the - pattern against the portion of the string after the next `/'. Picked - up from gnulib/glibc - -pathexp.c - - split_ignorespec: since split_ignorespec gets globbing patterns, - make sure we call skip_to_delim with the SD_GLOB flag so delimiters - that occur within bracket expressions don't delimit the pattern. - Fixes problem with [[:digit:]] in GLOBIGNORE reported by Ian Kelling - - -unwind_prot.c - - unwind_protect_tag_on_stack: new function, returns 1 if unwind-protect - frame corresponding to `tag' argument is on unwind-protect stack - -unwind_prot.h - - unwind_protect_tag_on_stack: extern declaration - - 6/30 - ---- -lib/readline/misc.c - - _rl_revert_all_lines: set entry->data to 0 after assigning it to - rl_undo_list to avoid pointer aliasing problems that would result - in entry->line being freed by an undo. The subsequent free would - be a double free. Report and fix from Jared Yanovich - - -subst.c - - command_substitute: other shells do not appear to inherit the -v - option when reading and executing command substitutions. Reported - by Ondrej Oprala - - 7/1 - --- -config-top.h - - CHECKHASH_DEFAULT: new define that supplies the default value for - check_hashed_filenames (`checkhash' shopt option); still 0 by default - -findcmd.c - - check_hashed_filenames: initialize using CHECKHASH_DEFAULT - -lib/readline/histexpand.c - - history_expand: double quotes can inhibit recognition of the history - comment character if history_quotes_inhibit_expansion is non-zero - -lib/readline/doc/{history.3,hstech.texi} - - history_quotes_inhibit_expansion: expand definition to note that it - inhibits scanning for the history comment character as well; correct - typo to make it clear that it only works on double-quoted strings - -lib/sh/zgetline.c - - add new fourth argument: DELIM, allows delimiter to be something - other than newline (if DELIM != '\n', UNBUFFERED_READ should be - non-zero) - - UNBUFFERED_READ is now fifth argument - - check character against DELIM rather than strictly newline - -externs.h - - zgetline: change function prototype for extern declaration - -builtins/mapfile.def - - mapfile: change calling sequence for zgetline calls - - mapfile_builtin: new -d option: DELIM, like in read builtin - - mapfile_builtin: pass `delim' to mapfile() as new argument; default - to '\n' unless -d option supplied - - mapfile: take new DELIM argument, pass to zgetline - - mapfile: if DELIM != '\n', set unbuffered_read to 1 - -doc/{bash.1,bashref.texi} - - mapfile: document new `-d DELIM' option - - 7/5 - --- -lib/readline/histfile.c - - history_truncate_file: if there is an error writing the truncated - history list back to the history file, use the same strategy as - history_do_write: create a backup file, rename the history file to - the backup file, and restore the original history file from the - backup file name if the write or the close fails. Suggestion from - Chen Gang to bug-readline - -execute_cmd.c - - evalnest, evalnest_max: new variables establishing maximum number of - recursive `eval' calls; current max is 4096 - - execute_builtin: unwind-protect value of evalnest around calls to - eval builtin. Suggested by Oliver Morais - - {initialize_subshell,execute_subshell_builtin_or_function}: reset - evalnest to 0 in a subshell - -builtins/setattr.def - - show_name_attributes: show a variable's attributes even if it's - invisible (don't show any value since it has none). This means that - declare -p var will display VAR's attributes even when var marked - as invisible. Feature request from Peggy Russell - - - show_var_attributes: don't print assignment if array or assoc - attribute is set but variable marked as invisible - -tests/array.right - - special note: changed all declare -a output tests because the shell - will no longer print out values for invisible array variables. This - is a change, but one for correctness: - - declare -a foo='()' - and - declare -a foo - are not equivalent - - 7/22 - ---- -subst.c - - parameter_brace_expand: after calling parameter_brace_expand_indir, - turn off the W_ARRAYIND flag in the word it returns, because there - is no way for it to return the index that should be used, and the - rest of the function assumes that IND is valid if W_ARRAYIND is set. - Fixes bug reported by Corentin Peuvrel - - 8/2 - --- -parse.y - - read_token_word: if we read a character that will end a command - substitution, don't skip over quoted newlines when we read an - additional character to figure out whether it's a two-character - token. This lets the higher layers deal with quoted newlines after - the command substitution. Fixes bug reported by EmanueL Czirai - - - 8/11 - ---- -execute_cmd.c - - execute_pipeline: check whether lastpipe_jid corresponds to a valid - job before calling append_process, for the same reason as fix from - 6/19. Fixes bug reported by - - 8/12 - ---- -lib/sh/unicode.c - - stub_charset: use strncpy instead of strcpy because we are copying - into a local fixed-length buffer. Fixes vulnerability reported by - - -execute_cmd.c - - execute_pipeline: if we don't call append_process, call - wait_for_single_pid to get the status of `lastpid', since that will - check the status of already-reaped processes. Fixes spurious error - message about non-existent process from fix of 8/11 - - 8/15 - ---- -jobs.c - - running_in_background: new variable, keeps track of whether or not we - are running in the background (not perfect yet) - - initialize_job_control: even if we are not turning on job control, - get the terminal pgrp so we can use it later - - {set_job_control,initialize_job_control}: set running_in_background - to 1 if terminal pgrp != shell pgrp - - {stop_pipeline,make_child,wait_for}: if we are running in the - background, don't mess with the terminal's process group; assume that - the parent shell will do that. Fixes bug reported by Greg Wooledge - - -shell.c - - shell_reinitialize: reset running_in_background back to 0 - - 8/24 - ---- -execute_cmd.c - - {execute_connection,execute_command_internal}: make sure that - asynchronous commands always set $? to 0 and are not affected by the - command's exit status being inverted using `!'. Fixes bug reported - by Vincent Lefevre - -lib/readline/display.c - - rl_message: call vsnprintf with full msg_bufsiz, since it counts - one fewer than the buffer length passed as an argument. Bug report - and fix from Dylan Cali - - 8/26 - ---- -builtins/evalstring.c - - evalstring: if CURRENT_TOKEN == yacc_EOF, reset it to newline. This - is instead of calling reset_parser(); that might still be needed. - Fixes bug with eval and a subsequent statement ending with EOF - reported by - -pcomplete.c - - filter_stringlist: when extglob is on, a leading ! in the filter - pattern should be left alone when it introduces a !(pat) pattern; - otherwise it messes up the pattern. Fixes bug reported by David - Korn - - 8/27 - ---- -doc/{bash.1,bashref.texi} - - clarify the behavior of bash when given the -c option, since $0 is - technically not a positional parameter. Bug reported by Stephane - Chazelas - - 8/28 - ---- -lib/readline/history.c - - add_history: use history_max_entries (if history is stifled) or - DEFAULT_HISTORY_INITIAL_SIZE if not (new define, defaults to 502) - to size the initial allocation of the history array. Assumption - is that this will reduce the number of allocations - - 8/29 - ---- -execute_command.c: - - sourcenest, sourcenest_max: new variables used to track level of - sourced files and (maybe) one day catch infinite source recursion - - execute_builtin: if current source level exceeds sourcenest_max, - trigger an error and jump back to the top level - - {initialize_subshell,execute_subshell_builtin_or_function}: reset - sourcenest to 0 in a subshell - - 9/2 - --- -variables.c - - bind_variable: if a nameref expands to an array reference, make - sure that assign_array_element gets called (maybe even - recursively) instead of bind_variable_internal, so invalid variable - names (like arr[0]) don't get created. Fixes bug reported by - - - 9/3 - --- -execute_cmd.c - - evalnest_max,sourcenest_max: initialize from EVALNEST_MAX and - SOURCENEST_MAX, respectively. Feature suggested by - - -config-top.h - - define EVALNEST_MAX and SOURCENEST_MAX to 0 - - 9/6 - --- -bashline.c - - find_cmd_start: fix to (crudely) deal with >| token; even though - skip_to_delim finds `|' as a delimiter, we call it again and use - what the second call finds. Fixes bug reported by Dan Jacobson - - -findcmd.c - - find_in_path_element: if in posix mode, do not expand a literal - tilde in a $PATH element - -doc/bashref.texi - - add change to tilde expansion in $PATH elements to posix mode - description - -builtins/common.h - - ISHELP: new define for builtins that do their own option parsing - and don't use internal_getopt(); checks whether argument is --help - - CHECK_HELPOPT: convenience define to help builtins that do their - own option parsing to check for --help with one line of code - - CASE_HELPOPT: convenience define to help builtins that use - internal_getopt() check for --help with one line of code - -builtins/help.def - - builtin_help: new function, prints out --help output for current - builtin - -builtins/{kill,let,pushd}.def - - add CHECK_HELPOPT to builtins that use ISOPTION; call builtin_help - and return EX_USAGE (kill/let/pushd/popd/dirs) - -builtins/{caller,fg_bg}.def - - use CHECK_HELPOPT to recognize --help, since these builtins perform - checks that can cause them to return before calling no_options - (caller/fg/bg) - -builtins/{exit,return}.def - - use CHECK_HELPOPT to recognize --help before calling get_exitstat() - (return/exit/logout) - -builtins/{break,shift}.def - - use CHECK_HELPOPT to recognize --help before any other checks - (break/continue/shift) - -builtins/bashgetopt.h - - GETOPT_EOF: convenience define - - GETOPT_HELP: new define, to indicate internal_getopt saw --help - -builtins/bashgetopt.c - - internal_getopt: return GETOPT_HELP for --help - -builtins/common.c - - no_options: recognize --help, call builtin_help and return 2 - (builtin/eval/source/./times) - -builtins/command.def - - use CASE_HELPOPT() to handle --help after calling internal_getopt() - (command) - -builtins/{colon,echo,test}.def - - do not recognize --help (:/true/false/echo/test) - - 9/8 - --- -sig.c - - termsig_sighandler: if readline is active now, set the bashline event - hook. Old code just set it for interactive shells. Part of fix for - bug reported by - -bashline.c - - bash_event_hook: call rl_cleanup_after_signal if terminating_signal - is non-zero, since check_signals_and_traps() will cause the shell to - exit if it is and we want to clean up the readline state first. Rest - of fix for bug reported by - - 9/9 - --- -jobs.c - - waitchld: when running the wait builtin in posix mode, with a trap set - on SIGCHLD, use queue_sigchld_trap instead of trap_handler (SIGCHLD), - otherwise you will lose SIGCHLDs when children_exited > 1. Fixes bug - reported by - -builtins/read.def - - read_builtin: if we are changing the tty settings, call - initialize_terminating_signals so we have a chance to catch all - terminating signals and potentially clean up the terminal before - exiting - - read_builtin: tty_modified: new variable, set to 1 if we change the - terminal attributes and have to call ttyrestore() to restore them - - if one of the `reads' returns -1/EINTR due to a terminating signal, - and we have modified the terminal, call ttyrestore before calling - CHECK_TERMSIG - - ttyrestore: set tty_modified to 0 when called - - 9/10 - ---- -builtins/read.def - - termsave: now global to file so other functions can use it - - read_tty_cleanup: if tty_modified is non-zero, call ttycleanup to - restore old terminal settings and turn off tty_modified - -sig.c - - termsig_handler: call read_tty_cleanup if currently executing read - builtin; it does the right thing. Final piece of fix for bug reported - by Jan Rome - - 9/11 - ---- -general.c - - printable_filename: general function to return a printable - representation of a string (presumed to be a filename) - -general.h - - extern declaration for printable_filename - -execute_cmd.c - - execute_disk_command: use printable_filename - -builtins/{bind,cd,enable,hash,source}.def - - use printable_filename as appropriate when printing error messages. - From a suggestion by Vincent Lefevre - -builtins/bind.def - - use CASE_HELPOPT() to handle --help after calling internal_getopt() - (bind) - - 9/12 - ---- -builtins/common.h - - SEVAL_FUNCDEF: new flag for parse_and_execute; it means that we only - accept a single function definition command, as when we are importing - functions from the environment - - SEVAL_ONECMD: new flag for parse_and_execute; for future use - -builtins/evalstring.c - - parse_and_execute: if the SEVAL_FUNCDEF flag is set, disallow anything - but a function definition command - -variables.c - - initialize_shell_variables: don't allow functions with invalid names - to be imported from the environment, even though we still allow them - to be defined - - initialize_shell_variables: when importing function definitions from - the environment, call parse_and_execute with the SEVAL_FUNCDEF flag - to force the command to be just a function definition - -subst.c - - param_expand: when expanding a $name variable expansion, make sure that - the variable is visible and set before following the nameref chain - - param_expand: when expanding a $name variable expansion and following the - nameref chain, make sure the resulting variable is visible and set - before using it - - 9/13 - ---- -variables.c - - initialize_shell_variables: when importing function definitions from - environment, use SEVAL_ONECMD flag for parse_and_execute. Part of - CVE-2014-6271 - -builtins/evalstring.c - - parse_and_execute: if SEVAL_ONECMD flag set, return immediately after - calling execute_command_internal. Final piece for fix for bug - reported by Stephane Chazelas . Part of - CVE-2014-6271 - - 9/24 - ---- -parse.y - - reset_parser: reset eol_ungetc_lookahead to 0 here, since we don't want - shell_getc returning it on the next call. Fixes problem reported by - Tavis Ormandy and Michal Zalewski - . Potentially part of CVE-2014-6271; fix for - CVE-2014-7169 - - 9/25 - ---- -parse.y - - push_heredoc: new function, pushes a here-doc redirection onto - redir_stack handling overflow of redir_stack. Exits on overflow. - Original fix from Florian Weimer . Fix for - CVE-2014-7186 - - change straight assignments to redir_stack to call push_redir - - add one to size of word_lineno stack to avoid off-by-one error - below in read_token_word. Overflow just results in line numbers - being wrong. Fix for CVE-2014-7187 - - 9/27 - ---- -{execute_cmd,trap}.c - - changes to make minimal-config builds work again, mostly missing - #ifdefs for optional features - -builtins/common.c - - builtin_help: dummy version to be included if HELP_BUILTIN not - defined, for minimal-config builds - -variables.c - - initialize_shell_variables: incorporated patches from Florian - Weimer to change the strings bash looks - for when importing shell functions from the environment. It - adds a prefix (BASH_FUNC_) and a suffix (%%) to the name to - mark it as having been created by bash as an exported function. - Fix for remote attacks part of CVE-2014-6271 and CVE-2014-7169 - - mk_env_string: takes new argument, indicating whether we are - constructing a function - - mk_env_string: encodes function names as described above, so - initialize_shell_variables can find them - - 9/28 - ---- -copy_cmd.c - - copy_redirects: before calling savestring on here_doc_eof, make - sure it's not NULL (it could have been the result of a here - document delimited by EOF or EOS). Fixes bug reported by - Michal Zalewski . Fix for CVE-2014-6277 - -make_cmd.c - - make_redirection: initialize here_doc_eof member to NULL. Rest of - fix for CVE-2014-6277 - - 9/29 - ---- -parse.y - - current_input_line_state: return a sh_input_line_state_t containing - the current shell_input_line and its index and size variables - -shell.h - - current_input_line_state: extern declaration - -builtins/evalstring.c - - parse_and_execute: call reset_parser() before returning if - SEVAL_ONECMD set. Fixes bug reported by Michal Zalewski - and designated CVE-2014-6278 - - parse_and_execute: if we parse a function definition when - SEVAL_FUNCDEF is set, but don't consume the entire passed string, - throw an error, reset the parser, and return. Part of fix for - CVE-2014-6278 - - parse_and_execute: if parsing the shell function definition when - SEVAL_FUNCDEF is set transforms the function name (e.g., if it - begins with a newline or begins or ends with whitespace), throw - an error, reset the parser, and return. Fixes bug reported by - Eric Kobrin - - 10/2 - ---- -jobs.c - - bgp_prune: don't do anything if bgpids.npid == 0 or - bgpids.list == NULL. This can happen if something gets run before - the job control framework is initialized. Bug report from - - - 10/3 - ---- -parse.y - - xparse_dolparen: don't set token_to_read to newline after calling - parse_string() and cleaning up when the shell is not interactive. This - makes the parser think it's ok to read new commands even if it's not in - a state where that should be possible. Underlying fix for bug reported - by Michal Zalewski and designated CVE-6278 - - parser_remaining_input: new function, returns the portion of - shell_input_line that hasn't yet been read - - current_input_line_state: removed - -shell.h - - parser_remaining_input: extern declaration - - current_input_line_state: removed - -builtins/evalstring.c - - parse_and_execute: change code that checks whether parse_command has - consumed the entire passed string when SEVAL_FUNCDEF is used to use - parser_remaining_input instead of messing around with (new) - current_input_line_state. Part of fix for CVE-2014-6278 - -variables.c - - initialize_shell_variables: if we don't call parse_and_execute, free - the temporary string, since parse_and_execute won't. Report and fix - from Eric Kobrin - - 10/4 - ---- -print_cmd.c - - print_function_def: when in posix mode, print shell function - definitions as posix specifies them, without the leading - `function' keyword - -general.c - - exportable_function_name: return 1 if the passed string can be - added to the environment as an exported function name. Currently - prohibits function names containing `/' and `=' from being - exported - -general.h - - exportable_function_name: extern declaration - -builtins/setattr.def - - set_or_show_attributes: if exporting a function with export -f, - call exportable_function_name to determine whether the function - should be exported; don't export function if it returns 0 - - 10/7 - ---- -builtins/setattr.def - - set_or_show_attributes: don't show identifiers that are invisible - and imported from the environment, since that combination of - attributes means that the imported variable is not a valid shell - identifier. Report from Stephane Chazelas - - - 10/8 - ---- -shell.c - - shell_initialize: set new variable should_be_restricted, which - says whether or not the shell will be a restricted one based on the - shell name; use in calls to initialize_shell_variables (to inhibit - importing shell functions) and initialize_shell_options (to inhibit - parsing $SHELLOPTS) and initialize_bashopts (to inhibit parsing - $BASHOPTS). Report from - - 10/12 - ----- -execute_cmd.c - - execute_function: unwind-protect loop_level, set loop_level to 0 - when entering a function so break and continue in functions don't - break loops running outside of the function. Fix picked up from - dash via Herbert Xu - - 10/13 - ----- -doc/Makefile.in - - bashref.pdf: create using texi2dvi --pdf rather than postprocessing - the dvi file, so we have PDF bookmarks and links. Fix from - Siep Kroonenberg - - 10/14 - ----- -subst.h - - Q_ARITH: new quoting flag. Semantics are per Posix's spec for - arithmetic expansion: act as if string is quoted, but don't treat - double quotes specially (in this case, they will be removed by quote - removal) - - Q_ARRAYSUB: new quoting flag, indicates we are expanding an indexed - array subscript - -subst.c - - expand_arith_string: if we are not expanding the string, but we saw - a quote with Q_ARITH specified as one of quoting flags, perform - quote removal even if Q_DOUBLE_QUOTES is specified - - param_expand: change calls to expand_arith_string for $[ and $(( - cases to specify Q_ARITH. Now $(( "$x" )) and $(( "x" )) work if x - has a value that evaluates to a valid number, as Posix specifies - - expand_word_internal: add test for quoted&Q_ARITH to the tilde case, - so we continue to perform tilde expansion in arithmetic contexts - - expand_word_internal: if quoted&Q_ARITH, continue processing when we - see a `"', acting as if the double quote isn't present (already - Q_DOUBLE_QUOTED) - -arrayfunc.c - - array_expand_index: pass Q_DOUBLE_QUOTED|Q_ARITH|Q_ARRAYSUB as quoted - argument in call to expand_arith_string. This inhibits word - splitting (Q_DOUBLE_QUOTED) while discarding double quotes (Q_ARITH), - identical to the quote flags passed while expanding $(( )) and $[ ]. - Q_ARRAYSUB reserved for future use. Fixes problem reported by - Stephane Chazelas - - 10/16 - ----- -subst.c - - parameter_brace_expand_word: if the PF_ASSIGNRHS flag is set and we - are expanding what looks like an array subscripted with @ or *, - make sure the variable we're expanding is actually an array before - we add Q_DOUBLE_QUOTES to the flags. If we don't, things like - scalar[@] will remain quoted. Fixes ubuntu bug 1381567 - https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1381567 - - 10/17 - ----- -{jobs,nojobs}.c - - get_original_tty_job_signals: get original signal dispostions for - SIGTSTP, SIGTTIN, SIGTTOU before we start manipulating them in - make_child - - default_tty_job_signals: make sure we set SIGTSTP, SIGTTIN, or - SIGTTOU to SIG_IGN if they were ignored at shell startup instead of - unconditionally setting them to SIG_DFL. Fixes bug reported by - idallen@idallen.ca - -jobs.h - - get_original_tty_job_signals: extern declaration - -trap.c - - initialize_traps: add call to get_original_tty_job_signals - - 10/22 - ----- -subst.c - - expand_string_for_rhs: when expanding in this context (rhs of a word - expansion or pattern removal), we don't perform word splitting, so - we don't want to split $* if IFS is empty. Fixes bug reported by - Stephane Chazelas - - 10/23 - ----- -subst.c - - param_expand: when expanding $* in a pattern context where the - expansion is quoted (Q_PATQUOTE), don't quote the expansion -- - the outer quotes don't make the characters in the expansion of - $* special. Posix interp 221. Reported by Stephane Chazelas - - - 10/28 - ----- -lib/readline/bind.c - - enable-bracketed-paste: new bindable variable, enables support for - a terminal's `bracketed paste mode'. Code contributed by - Daniel Colascione - -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - enable-bracketed-paste: add description - -lib/readline/{readline.c,rlprivate.h} - - _rl_enable_bracketed_paste: declarations - - #defines for use by bracketed paste implementation - -lib/readline/rltty.c - - rl_prep_terminal: send BRACK_PASTE_INIT string to terminal if we - are supposed to enable bracketed-paste mode; change terminal_prepped - to indicate we sent that string and need to clean up - - rl_deprep_terminal: if terminal_prepped indicates we sent the - bracketed-paste mode init string to the terminal, send the cleanup - string before restoring the terminal modes - -lib/readline/kill.c - - rl_bracketed_paste_begin: function to read bracketed paste until - BRACK_PASTE_SUFF; discard the suffix, and insert the rest of the - paste as a single (undoable) object. Bound to BRACK_PASTE_PREF - -lib/readline/funmap.c - - bracketed-paste-begin: new bindable command, executes - rl_bracketed_paste_begin - -lib/readline/readline.c - - bind_bracketed_paste_prefix: new function, sets up to recognize - the bracketed paste prefix sequence (BRACK_PASTE_PREF) in emacs - keymap and vi insertion keymap - - readline_initialize_everything: call bind_bracketed_paste_prefix - - 11/1 - ---- -builtins/ulimit.def - - RLIMIT_POSIXLOCKS: now synonym for RLIMIT_LOCKS - - -k: new option: RLIMIT_KQUEUES, max kqueues allocated for this - process - - -P: new option: RLIMIT_NPTS, max number of pseudoterminals available - to this process - -doc/{bash.1,bashref.texi} - - document `ulimit -k' option - - document `ulimit -P' option - -parse.y - - `timespec list_terminator' production: if the list terminator is `;' - set last_read_token to `;' to allow things like `time ; command' to - time null commands and not throw a syntax error. Patch from - Piotr Grzybowski - - `BANG list_terminator' production: do the same thing - -variables.c - - sv_optind: use find_shell_variable and get_variable_value so we can - have the variable's context in the case we need to do something - when we are restoring a previous variable context's value - -builtins/getopt.h - - sh_getopt_state_t: struct to save sh_getopt's internal state so we - can restore it around function calls in the event that we have a - local copy of OPTIND - -builtins/getopt.[ch] - - sh_getopt_{save,restore}_istate: new functions to save and restore - getopt's internal state - - sh_getopt_{alloc,dispose}_istate: new functions to allocate and - deallocate sh_getopt_istate_t objects - -execute_cmd.c - - maybe_restore_getopt_state: restore sh_getopt state after executing - function body iff the funtion declared a local copy of OPTIND - - execute_function: save sh_getopt state before executing function body - - execute_function: note in getopt_state->flags whether or not the - function declared a local copy of OPTIND; used by - maybe_restore_getopt_state - - execute_function: maybe restore sh_getopt state before returning via - call to maybe_restore_getopt_state. Fixes bugs with getopts and - state between calls reported in 2011 by Bernd Eggink - and in 2014 by Oyvind Hvidsten - - -configure.ac - - enable-function-import: new option, controls whether function imports - are included. Enabled by default. Patch from David Galos - - -config.h.in - - FUNCTION_IMPORT: define controlled by enable-function-import above - -variables.c - - initialize_shell_variables: include code to import function - definitions from the environment if FUNCTION_IMPORT is defined - -doc/bashref.texi - - --enable_function-import: document new configuration option - - 11/5 - ---- -lib/readline/history.c - - history_lines_read_from_file: new variable, set by read_history and - read_history_range to the actual number of lines read from the - history file. The value is valid immediately after a call to one - of those functions - - history_lines_written_to_file: new variable, set by write_history, - history_do_write, and history_truncate_file to the actual number of - lines written to the history file. The value is valid immediately - after a call to one of those functions - -variables.c - - sv_histsize: set history_lines_in_file after history_truncate_file() - only if hmax < history_lines_in_file (lines we've already read); a - cosmetic change only - -bashhist.c - - load_history: set history_lines_in_file after read_history() from - history_lines_read_from_file, since read_history reads all of the - lines from the history file even if it's more than $HISTSIZE - - maybe_save_shell_history: after calling write_history(), set - history_lines_in_file to history_lines_written_to_file, since we - can assume that we read everyhing we just wrote - -builtins/history.def - - history_builtin: after calling read_history (history -r), set the - new value of history_lines_in_file, for the same reason as above - - history_builtin: after calling read_history_range (history -n), set - history_lines_in_file from history_lines_read_from_file - - 11/6 - ---- -lib/readline/histfile.c - - history_truncate_file: since we move the old file to a backup copy - before truncating, make sure the new file is owned by the same uid - as the old - - history_do_write: use chown in the same way as history_truncate_file - - 11/12 - ----- -lib/readline/display.c - - expand_prompt: takes a new `flags' argument; only one flag defined - so far: PMT_MULTILINE - - expand_prompt: changed all callers to add new flags argument - - rl_expand_prompt, redraw_prompt: make sure to set PMT_MULTILINE in - FLAGS argument to expand_prompt if expanding parts of a prompt - containing embedded newlines - - expand_prompt: only add mode char to last line of a prompt with - embedded newlines, so mode indicator doesn't get lost and gets - updated properly. Fixes problem reported by Renlin Li - - - 11/13 - ----- - -lib/readline/display.c - - prompt_modestr: changed prompt_modechar to return a string denoting - the editing mode; default strings for emacs and both vi modes are - #defines in this file. prompt_modestr takes an argument in which - it returns the length of the mode string - - expand_prompt: if expanding mode strings in the prompt, get the - mode string to use and add it at the beginning of the prompt string, - before expanding it. This will allow future work allowing the mode - string to contain invisible characters - - 11/15 - ----- -lib/readline/rlprivate.h - - _rl_{emacs,vi_cmd,vi_ins}_mode_str: extern declarations for - variables to hold current values of user-settable mode strings; - variables to hold lengths - -lib/readline/rlconf.h - - defines for default values of the mode strings for each editing mode - and keymap - -lib/readline/display.c - - _rl_{emacs,vi_cmd,vi_ins}_mode_str: new variables to hold values of - user-settable mode strings - - _rl_{emacs,vi_cmd,vi_ins}_modestr_len: new variables to hold lengths - of corresponding mode string variables - - prompt_modestr: return appropriate user-settable mode string - variables - -lib/readline/bind.c - - {emacs,vi-ins,vi-cmd}-mode-string: new user-settable mode string - variables - - sv_{emacs,viins,vicmd}_modestr: variable handling functions for user- - settable mode string variables. Non-null values are run through - rl_translate_keyseq so users can include invisible character - sequences in the mode strings; null values restore the default - - _rl_get_string_variable_value: handle values for new user-settable - mode string variables. Original code contributed by Dylan Cali - - -lib/readline/doc/rluser.texi - - {emacs,vi-ins,vi-cmd}-mode-string: document, including the fact that - you can use \1 and \2 to bracket sequences of non-printing - characters - - 11/16 - ----- -lib/readline/history.c - - add_history: replace loop that copies history list down one item - with call to memmove to take advantage of whatever efficiencies - libc can offer. Won't be any slower than current loop - -lib/readline/display.c - - rl_redraw_prompt_last_line: new function, calls redraw_prompt if - the prompt contains multiple lines; calls rl_forced_update_display - if not - -lib/readline/readline.h - - rl_redraw_prompt_last_line: extern declaration, undocumented in - texinfo manual until I get it a little more work - -bashline.c - - bash_execute_unix_command: instead of unconditionally calling - rl_forced_update_display, call rl_redraw_prompt_last_line if we - cleared the last line before executing the command. This keeps - commands that don't display any other output but just manipulate - the contents of the line buffer from redisplaying the prompt lines - before the last newline multiple times. Fixes bug reported by - Jesper Nygards and Rob Foehl - . This means that commands that display output - will *only* display the final line of the prompt - - bash_execute_unix_command: if the command returns 124, we redraw - the line unconditionally, including all lines of the prompt - - 11/18 - ----- -builtins/mapfile.def - - mapfile_builtin: don't allow a valid array reference through to - mapfile(), since it will just create a shell variable with that name. - Bug and fix from Eduardo A. Bustamante López - - 11/19 - ----- -lib/readline/complete.c - - _rl_colored_completion_prefix: new variable, if non-zero, and color - support is compiled in, and the $LS_COLORS variable exists and - contains color definitions, display any common prefix of a set of - completions in blue when displaying all the possible completions. - Doesn't work with menu-complete, which inserts possible completions - inline - - colored_prefix_start(), colored_prefix_end(): new functions, used to - bracket colored completion prefixes - - fnprint: if prefix_bytes is non-zero, and _rl_colored_completion_prefix - is > 0, display the first PREFIX_BYTES bytes of the word bracketed - by calls to colored_prefix_start and colored_prefix_end - - print_filename: if _rl_colored_completion_prefix is > 0, compute the - length in bytes of the common prefix and pass that to fnprint - -lib/readline/readline.c - - readline_initialize_everything: initialize the colors from $LS_COLORS - if _rl_colored_completion_prefix is non-zero - -lib/readline/colors.c - - _rl_print_prefix_color: new function, changes text color to that - defined for the common prefix of a set of possible completions - (currently cyan, same as directories); currently uses C_PREFIX, - defined in colors.h as C_DIR - -lib/readline/colors.h - - _rl_print_prefix_color: new extern declaration - -lib/readline/bind.c - - colored-completion-prefix: new bindable variable, if set, common - prefix of a set of possible completions is displayed in color. - Feature requested by several, most recently by Richard Neill - (in a slightly different form) and - Duy Nguyen - - 11/20 - ----- -builtins/printf.def - - printf_builtin: allow null (empty) format strings supplied with - -v var to set `var' to the empty string. That is, printf -v var "" - is now the same as var="". Change suggested by Mike Frysinger - - -pathexp.h - - FNMATCH_NOCASEGLOB: macro to decide whether or not to pass - FNM_CASEFOLD flag to strmatch depending on whether glob_ignore_case - is set; analogout to FNMATCH_IGNCASE - -pathexp.c - - glob_name_is_acceptable: use FNMATCH_NOCASEMATCH to determine flags - passed to strmatch; if nocaseglob is used to generate glob matches, - it should be used to generate ignored matches - - 11/21 - ----- -pcomplete.c - - filter_stringlist: the call to strmatch now honors the setting of - nocasematch. Feature request from Ville Skytta - back in 2010 - -doc/bash.1,lib/readline/doc/rluser.texi - - complete -X: document that filtering the list of possible completions - honors the nocasematch option when performing matching - -lib/glob/gmisc.c - - include chartypes.h and strmatch.h for new defines - - match_pattern_{wchar,char}: now take new third FLAGS argument, flags - have same meanings as strmatch(); intent is to handle case - insensitive comparisons under same conditions as strmatch - - FOLD: imported case-folding define from sm_loop.c; wide and single- - byte character versions - - match_pattern_{wchar,char}: use FOLD when comparing characters to - honor FNM_CASEFOLD if set in FLAGS argument - -externs.h - - match_pattern_{wchar,char}: updated extern declarations - -subst.c - - match_{upattern,wpattern}: update strmatch/wcsmatch calls to include - FNMATCH_IGNCASE in flags argument - - match_{upattern,wpattern}: update match_pattern_{char,wchar} calls - to include FNMATCH_IGNCASE in flags argument (consistent with calls - to strmatch). This makes pattern substitution word expansion honor - nocasematch shell option. Feature requested by Davide Baldini - - - match_wpattern: make sure to fold case if necessary when doing simple - matching - -doc/{bash.1,bashref.texi} - - pattern substitution: updated description to include honoring setting - of nocasematch when performing matching - -subst.c - - expand_word_internal: optimize handling of "$@" idiom by calling - list_rest_of_args() and quote_list() directly at the top of the - function instead of going through normal code path - - cached_quoted_dollar_at: WORD_LIST of quoted positional parameters, - used by same code above that optimizes "$@"; if non-null we just - return a copy of the list; if null, we save a copy of the list we - create - - invalidate_cached_quoted_dollar_at: convenience function to allow - other parts of the shell (e.g., remember_args()) to destroy the - cached list of quoted positional parameter when the positional - parameters change - -builtins/common.c - - remember_args: call invalidate_cached_quoted_dollar_at() - -builtins/shift.def - - shift_builtin: call invalidate_cached_quoted_dollar_at after modifying - dollar_vars[] - -builtins/source.def - - maybe_pop_dollar_vars: call invalidate_cached_quoted_dollar_at just - to be safe - - 11/23 - ----- -builtins/evalfile.c - - _evalfile: return -1 if errno == ENOENT and the flags don't include - FEVAL_ENOENTOK. If we print an error message we should return an - error - - force_execute_file: new function, reads and executes commands from - a file but returns an error if file doesn't exist - -builtins/common.h - - force_execute_file: new extern declaration - -shell.c - - main: call start_debugger even if dollar_vars[1] == 0 if the shell - isn't interactive (interactive_shell == 0) - - start_debugger: call force_execute_file instead of maybe_execute_file; - turn off debugging mode if it returns value < 0 - - 11/24 - ----- -hashlib.h - - DEFAULT_HASH_BUCKETS: doubled to 128, cost in memory use is small but - changes traversal order when not sorting results - - 11/25 - ----- -doc/{bash.1,bashref.texi} - - make it clearer, by breaking it out into a separate paragraph, that - referencing an array without a subscript is equivalent to referencing - it with subscript 0 - - add text saying that referencing any variable using a valid subscript - is OK - - 11/28 - ----- - -arrayfunc.c - - bind_array_variable, bind_assoc_variable: allow binding value to a - readonly variable if the ASS_FORCE flag is set in the FLAGS - argument - -subst.h - - ASS_FORCE: new assignment flag; means to allow assignment even if - variable is marked readonly - -builtins/declare.def - - when assigning a value to an array or assoc variable using - something like `declare -r foo=bar' where foo is an existing array - variable, pass the ASS_FORCE to assign_array_var_from_string so - the assignment is allowed. Fixes debian bug 765759 - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765759 - -builtins/setattr.def - - var_attribute_string: new function to return (as argument) a char - array with attribute flag values for a given variable; returns the - length of the array - -lib/sh/shquote.c - - sh_quote_reusable: function returning a version of its string - argument that is quoted for reuse - -externs.h - - sh_quote_reusable: extern declaration - -builtins/common.h - - MAX_ATTRIBUTES: define used to size arrays for attribute flag - characters - - var_attribute_string: new extern function declaration - -subst.c - - array_remove_pattern: fixed a bug where `var' instead of `v' was - tested for invisible attribute - - get_var_and_type: fill in a valid *VARP if returning VT_VARIABLE - because callers may need to use it - - parameter_brace_transform: family of functions to implement the new - mksh-inspired ${param@spec} transformation word expansions. Some - of the operators transform the (expanded) value of the parameter, - the rest expand to information about the parameter itself - (array_transform, parameter_list_transform, list_transform, - string_transform, pos_params_assignment, array_var_assignment, - string_var_assignment) - - parameter_brace_expand: changes to parse the new `@' word expansion - operator and call parameter_brace_transform appropriately - - parameter_brace_expand: make sure we handle ${#@} as we have before - even in the presence of the new `@' operator - -variables.c - - push_temp_var: make sure to call bind_variable_internal with the - ASS_FORCE flag so we override readonly variables created with - something like `tempvar=foo declare -r foo'. - - bind_variable_internal: honor ASS_FORCE flag to allow binding even - if a variable is readonly - -execute_cmd.c - - struct func_array_state: new state to save state of BASH_LINENO, - BASH_SOURCE, and FUNCNAME during function execution so it can be - restored on a jump to top level - - restore_funcarray_state: new function to restore func_array_state - - execute_function: fill in func_array_state variable, add unwind- - protect to restore it on jump to top level, call explicitly at - end of function if subshell != 0 (may not be necessary, but safe - for now). Fixes bug with local assignments to FUNCNAME reported - by Arfrever Frehtes Taifersar Arahesis - - 11/29 - ----- -arrayfunc.c - - assign_compound_array_list: turn off ASS_APPEND flag when processing - each individual assignment inside the parens in var+=(...). The - outer += should not affect assignments to existing subscripts; - those should be treated like usual assignments unless += supplied - inside the parens. Bug report from Maarten Billemont - , fix from Eduardo A. Bustamante López - - -config.h.in - - HAVE_PSELECT: define if pselect(2) available - -configure.ac - - check for pselect(2), define HAVE_PSELECT if found - -lib/readline/input.c - - rl_getc: use pselect(2) to wait for input ready on readline's - input fd or for a signal to arrive, will handle SIGWINCH (which - does not interrupt read(2)) and thus allow resize to happen without - having to wait to read more input. Only works if pselect available - and returns -1/EINTR on a signal even if the signal was installed - with SA_RESTART. From a suggestion from Egmont Koblinger - - - 12/3 - ---- -variables.c - - flush_temporary_env: new function, disposes all temp variables in - temporary_env hash table - - bind_variable: only try to update a temporary variable's value in the - temporary env if the value argument is not null. Fixes bug reported - by - -variables.h - - flush_temporary_env: new extern declaration - -subst.c - - command_substitute: if running command substitution as part of - expanding a redirection (expanding_redir == 1), flush any temporary - environment we've inherited as part of this command, since we are not - supposed to have access to the temporary environment. Since - expanding_redir only controls access to the temporary environment for - variable lookup and binding, we can turn it off in the subshell - - 12/4 - ---- -builtins/printf.def - - printstr: make sure a missing precision specifier after a `.' is - treated as 0, as printf(3) specifies. Fixes ubuntu bash bug - 1399087 (https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1399087) - - 12/5 - ---- -subst.c - - skip_to_delim: if scanning past process substitution (skipcmd == 1, - noprocsub == 0), use extract_delimited_string instead of - extract_process_subst, which was changed a while back (bash-4.3.23) - to use xparse_dolparen. xparse_dolparen complains if the command - or process substitution is unterminated, since it runs the parser, - which is not what we want here. Command substitution does the same - thing. Fixes bug reported by Daniel Kahn Gillmor - as Debian bash bug 771968 - (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771968) - - 12/6 - ---- -subst.c - - command_substitute: short-circuit without forking on a command string - that consists entirely of s and newlines - -jobs.c - - make_child: changes to allow interrupts through if fork fails and - we are sleeping for `forksleep' seconds - - waitchld: make things a little more resilient if CHILD ends up NULL - - 12/12 - ----- -lib/readline/complete.c - - rl_display_match_list: when calculating common prefix to display in - color, make sure we correctly handle a common prefix with a trailing - `/' as we do when checking whether or not to add an ellipis. - printable_part() doesn't return the whole pathname if it ends in a - slash, to avoid printing null strings, so we have to make sure we - have the entire prefix - -lib/readline/complete.c - - _rl_complete_display_matches_interrupt: new variable, set to 1 by - _rl_complete_sigcleanup to let rl_display_match_list know it has - freed the match list - - display_matches: check for signals during the printing loops with - RL_SIG_RECEIVED(), return immediately if there is a pending signal - (might not want to do this if it's SIGWINCH -- CHECK) - - rl_complete_internal: if _rl_complete_display_matches_interrupt - set after calling display_matches, just null out `matches' since - it's already been freed and call any application-set signal hook - - 12/14 - ----- -parse.y - - time_command_acceptable: if the token before a newline is `|', - return 0, since it's not really valid to time inside a pipeline. - Only handles a single newline but allows things like - echo a | - time cat - to invoke /usr/bin/time, which is probably enough to catch the - stray carriage return. Fixes bug reported by Andre Majorel - - -builtins/declare.def - - declare_internal: don't try to perform compound assignments unless - the WORD_DESC has flags including W_COMPASSIGN (maybe should check - W_ASSIGNMENT as well), avoiding unexpected evaluation if a word - is of the form (word) and is assigned to an array variable like so: - declare -x var=$value. Bug reported by Stephane Chazelas - . Will eventually be contingent on - compatibility level > 43, but not there yet. TENTATIVE - - 12/15 - ----- -lib/sh/Makefile.in - - add missing dependencies for shmatch.o. Pointed out by Sergey - Mikhailov - - 12/16 - ----- -{execute_cmd,subst}.c - - W_ASSIGNINT: remove, not used any more - -execute_cmd.c - - fix_assignment_words: don't look for `-i' option and set W_ASSIGNINT - flag any more; doing things a different way - - shell_expand_word_list: instead of using W_ASSIGNINT flag, since it - doesn't take into account all options that can transform values on - assignment (-l/-u/-c can also), go through option arguments looking - for options that need special handling and add them to the `opts' - array for make_internal_declare to use. Fixes bug with constructs - like `declare -al foo=(UPONE UPTWO UPTHREE)' not being lowercased on - assignment reported by Linda Walsh - - - - 12/18 - ----- -lib/readline/readline.c - - rl_internal_char: when we read EOF on a non-empty line, check for - signals and invoke any readline signal handling and any application- - installed signal hook - - 12/20 - ----- -lib/readline/readline.c - - rl_internal_char: if we read EOF on a non-empty line, set c to - _rl_eof_char the first time through. If we read EOF the next time, - return EOF from readline(). If callbacks are defined, this returns - EOF immediately, since lastc isn't available. Fix for problem - most recently identified by Jiri Kukacka , - it has come up in the past - - 12/21 - ----- -builtins/declare.def - - declare_internal: keep track of whether or not an assignment statement - argument to declare is an array subscript assignment; need to - differentiate assignments from straight declarations (declare a[4]) - which are accepted for backwards compatibility - - assignment statements like declare a[2]=foo are now treated as - straight subscript assignment statements if a already exists as an - array variable - - declare foo='(1 2 3)' is treated as an assignment to foo[0] if foo - exists and is an array, just as it would be if it were an assignment - statement and `declare' was not present. All this from a proposal - by Stephane Chazelas - - 12/22 - ----- -builtins/read.def - - read_tty_modified: function to tell the rest of the shell if the - read builtin has modified the tty - - read_builtin: make sure to initialize terminating signals before - installing a SIGALRM signal handler in case we modify the tty as - well as ask for a timeout; the subsequent call to - initialize_terminating_signals would overwrite the read-builtin- - local SIGALRM handler - -builtins/common.h - - read_tty_modified: new extern declaration - -shell.c - - exit_shell: if read_tty_modified() returns true, call read_tty_cleanup - to undo the terminal modifications. Extension of previous fixes; - fixes bug with read -s reported by Richard W. Marsden - - - - 12/23 - ----- -builtins/setattr.def - - show_var_attributes: call print_array_assignment and print_assoc_assignment - with a `not quoted' flag so the assignment statements are not - surrounded by single quotes. Caused changes to a lot of test output - - 12/29 - ----- -lib/readline/complete.c - - stat_char: Windows doesn't handle X_OK flag to access(2); use file - extensions to determine whether or not a file is executable. Bug - report and fix from Eli Zaretskii - -configure.ac - - changed version to bash-4.4-devel - -lib/readline/readline.h - - changed version to readline-6.4 - - 12/30 - ----- -readline.h - - struct readline_state: fix types of `ignorefunc' and `attemptfunc' - members - -lib/sh/shquote.c,externs.h - - sh_contains_shell_metas, sh_contains_quotes: now take `const char *' - as parameter - -stringlib.c,externs.h - - strcreplace: `text' argument now `const char *' - -pathexp.[ch] - - quote_globbing_chars: `string' argument now `const char *', accompanying - changes to function local variables - -pcomplete.c - - preproc_filterpat: `text' argument now `const char *' - - filter_stringlist: `text' argument now `const char *' - - 12/31 - ----- -builtins/evalstring.c - - should_suppress_fork: new function, broke code that decides whether - to turn on CMD_NO_FORK flag out of parse_and_execute into a separate - function - -execute_cmd.c - - execute_command_internal: AND_AND, OR_OR: call should_suppress_fork - for the RHS of && and ||, make `make' invocations marginally more - efficient - -flags.c - - get_current_flags: returns a bitmap of all single-letter shell - options with a non-zero value meaning option is enabled - - set_current_flags: set current single-letter options from a passed - bitmap, which has presumably been initialized with get_current_flags - -flags.h - - {get,set}_current_flags: new extern declarations - -builtins/declare.def - - declare_internal: if invoked as `local', interpret name argument of - `-' to mean to save (and restore at shell return) single-letter - shell options - -variables.c - - push_func_var: if we encounter `-' as the name of a local variable, - take the value and call set_current_flags on it to restore old - flag settings - -builtins/set.def - - get_current_options: returns a bitmap of all shell options settable - with `set', with a non-zero value meaning option is enabled - - set_current_options: set current shell options from a passed - bitmap, which has presumably been initialized with get_current_options - - - 1/1/2015 - -------- -lib/readline/parens.c - - _rl_blink_matching_paren: initialize to 0 whether or not select(2) is - available. Inconsistency reported by Mark Karpov - - -builtins/declare.def - - declare_internal: use get_current_options instead of - get_current_flags, so `local -' can be generalized - -variables.c - - push_func_var: use set_current_options instead of set_current_flags - so `local -' can be generalized - -doc/{bash.1,bashref.texi} - - document new `local -' feature; originally inspired by Robert Elz - describing feature in NetBSD sh - - 1/3 - --- -lib/readline/{complete,funmap,kill,histfile,util} -lib/readline/readline.h -lib/tilde/tilde.c - - fixes for filename- and evironment-related issues on Windows. Fixes - from Eli Zaretskii - - Windows can paste to the console from the clipboard like Cygwin - - Windows uses $APPDATA as a pseudo-$HOME - -lib/readline/input.c - - rl_getc: use _getch on Windows to avoid being overridden by a getch - ncurses function - - win32_isatty: replace Windows isatty(3) with a function that does - additional checks, sinces Windows isatty returns non-zero for - every character device. From Eli Zaretskii - -lib/readline/display.c - - delete_chars: if compiled with ncurses on Windows, this code can - work, so build it in if NCURSES_VERSION defined - - open_some_spaces: ditto - - 1/6 - --- -doc/{bash.1,bashref.texi} - - minor grammar and typo corrections from TonyMc - - 1/8 - --- -sig.c - - throw_to_top_level: only attempt to run the interrupt trap if SIGINT - is trapped -- minor optimization - - throw_to_top_level: if we are running a trap, call run_trap_cleanup - to turn off the sigmodes flags - -trap.c - - _run_trap_internal: temporarily suppress pending SIGINTs while running - one of the traps the shell handles internally (e.g., ERR). Fixes bug - reported by Keith Thompson - - 1/10 - ---- -bashhist.c - - bash_history_inhibit_expansion: use skip_to_delim with the history - expansion character to see whether or not the instance of the - history expansion character should be skipped because, for instance, - it is in a command substitution. Fixes issue reported by - Zigmund.Ozean@zig-home.localdomain - - 1/14 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: if we are in a multibyte locale, make sure to - use _rl_find_prev_mbchar when trying to delete characters from the - search string, instead of just chopping off the previous byte. - Fixes bug reported by Kyrylo Shpytsya - -lib/readline/complete.c - - rl_filename_completion_function: if we tilde-expand `dirname', make - sure we use the expanded result instead of throwing it away for the - quote-removed `users_dirname', which still has any leading tilde. - Fixes bug reported by Dave Rutherford - -execute_cmd.c - - select_query: if the read builtin doesn't return anything in REPLY, - return NULL (failure). Fixes bug reported by Etherial Raine - - -builtins/read.def - - read_builtin: if REPLY has the readonly or noassign attribute, return - failure - - 1/16 - ---- -redir.c - - redir_open: if open() returns -1/EINTR, check traps as well as - using QUIT to handle signals - - 1/18 - ---- -jobs.c - - wait_for: make sure queue_sigchld is set to 1 before unblocking - SIGCHLD if MUST_UNBLOCK_CHLD is defined - - 1/19 - ---- -pcomplete.h - - new progcomp option: COPT_NOSORT, means to not sort list of possible - completions - -pcomplete.c - - pcomp_set_readline_variables: if COPT_NOSORT set in compspec flags, - set rl_sort_completion_duplicates to 0 - -builtins/complete.def - - _compopt: new option value: -o nosort, sets COPT_NOSORT in compspec - option flags. Provides new -o nosort option for complete and compgen - -bashline.c - - attempt_shell_completion: make sure rl_sort_completion_matches is - set to 1 before completion is attempted; allow a compspec to turn - it off - -lib/readline/kill.c - - rl_vi_yank_pop: new function, vi-mode version of yank-pop. Original - code from Ian Kelling - -lib/readline/funmap.c - - `vi-yank-pop': bindable name mapped to rl_vi_yank_pop - -lib/readline/readline.h - - rl_vi_yank_pop: extern declaration - - 1/21 - ---- -lib/sh/shquote.c - - sh_backslash_quote: change to understand and handle multibyte - characters, using is_basic, COPY_CHAR_P. See - https://bugzilla.redhat.com/show_bug.cgi?id=1184320 for original - report - - 1/23 - ---- -include/posixjmp.h - - use setjmp_sigs instead of redefined setjmp, it fails on Cygwin. - Report from Eric Blake - -builtins/wait.def,shell.c - - use setjmp_sigs instead of setjmp call, since setjmp no longer - redefined to something known - -include/chartypes.h, lib/readline/chardefs.h - - make sure all ctype.h macros are called with unsigned char args, - casting to make sure - -lib/sh/casemod.c - - sh_modcase: don't assume that the upper and lower case versions of a - character are the same width, so don't try to do the conversion in - place: convert and copy the converted characters one or more at a - time to the returned string - - sh_modcase: since upper and lower case versions of same character - may have different widths in some locales, don't shortcut and assume - that we can do single-byte case modification (toupper) with a - single-byte input character (e.g., `i'). Fix for problem reported - by Stephane Chazelas - - 1/31 - ---- -lib/readline/histfile.c - - history_truncate_file, history_do_write: if the first rename(2) - of the history file to the backup file fails, set the backup file - name to NULL to prevent any later attempts to restore the - original. Report from Jonathan Hankins - - history_do_write: don't attempt to back up non-regular files. - Report from Jonathan Hankins - - 2/2 - --- -trap.c - - run_interrupt_trap: now takes an argument indicating whether or not - it was called just before a longjmp to top_level; change callers - - run_interrupt_trap: if running a trap and we are being called before - a longjmp to top_level, call run_trap_cleanup on running trap so - a QUIT call while running a DEBUG trap, for instance, doesn't leave - sigmodes[DEBUG_TRAP] including SIG_INPROGRESS. Fixes bug reported - by Chih-Chieh Chou - -sig.c - - throw_to_top_level: change call to run_interrupt_trap to pass arg 1 - - termsig_handler: change call to run_interrupt_trap - -trap.h - - run_interrupt_trap: update extern prototype declaration - - 2/4 - --- -lib/readline/histfile.c - - histfile_backup, histfile_restore: new functions to back up and restore - history file to `filename-', following (one level of) symlinks through - so we don't rename the symlink itself. From a suggestion by - Jonathan Hankins - -assoc.c - - assoc_to_assign: if an index happens to be `@' or `*', make sure it's - double-quoted. Bug report from Greg Wooledge - - 2/5 - --- -lib/readline/bind.c - - rl_bind_key: if we are rebinding a key that is not bound to a - function or a macro, construct a key sequence and pass it to - rl_bind_keyseq. Make sure that '\' when it is used as a key is - changed to "\\" so it can survive rl_translate_keyseq. Fixes - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776743 - - 2/8 - --- -include/posixjmp.h - - _rl_longjmp, sh_longjmp: new defines, expand to siglongjmp or longjmp - depending on autoconf results, used to avoid redefining longjmp, - remove _OPENNT conditional code. Report from Eric Blake - - -{bashjmp,quit}.h,{execute_cmd,expr,jobs,sig,trap}.c,builtins/{evalstring.c,return.def} - - change calls to longjmp to use sh_longjmp - -lib/readline/util.c - - change calls to longjmp to use _rl_longjmp - - 2/18 - ---- -variables.c - - bind_int_variable: make sure `v' is non-null before making it visible - - 2/19 - ---- -arrayfunc.c - - assign_array_var_from_word_list: after assignment, mark variable as no - longer invisible - - assign_array_var_from_string: after assignment, mark variable as no - longer invisible - -builtins/declare.def - - declare_internal: add warning if an attempt is made to use a quoted - compound assignment as an argument to declare (declare -a foo='( 1 2 )'); - backwards compatible with bash-4.3. Still a tentative change - - 2/20 - ---- -lib/glob/smatch.c - - is_wcclass: check malloc() return value, return -1 if it fails - Report from Tobias Stoeckmann - -lib/sh/shmatch.c - - sh_regmatch: check malloc() return value, handle NULL value if it - fails. Report from Tobias Stoeckmann - - 2/22 - ---- -lib/readline/doc/rltech.texi - - rl_callback_handler_install: note that the handler function should - free the line it receives, as with readline. Suggested by - Ulf Magnusson - - Readline Signal Handling: note that application needs to clean up - readline's terminal state if it wants to handle a signal before - the line handler restores it. Suggested by Ulf Magnusson - - - 2/24 - ---- -lib/readline/histfile.c - - history_do_write,history_truncate_file: if the write fails, make sure - to set history_lines_written_to_file to 0 so we don't lose those - history entries - - 2/27 - ---- -execute_cmd.c - - execute_function: unwind-protect the value of line_number_for_err_trap, - so a function that returns a non-zero value and triggers an ERR trap - has the right value for LINENO. Any simple command in the function - body can change it. Bug report from Paul Donohue - - 3/5 - --- -lib/sh/shquote.c - - sh_backslash_quote: cast `c' to `unsigned char' before using as - index into backslash_table. Report and fix from - alexeyv.90@gmail.com - -arrayfunc.[ch] - - valid_array_reference: added second `flags' argument for future use; - currently unused - -parse.y,{redir,subst,variables,test}.c -builtins/{declare,printf,read,set}.def - - valid_array_reference: changed callers - - 3/7 - --- -lib/readline/signals.c - - _rl_handle_signal: if readline gets a SIGTSTP or SIGTTIN, block - SIGTTOU so a backgrounded readline can reset the terminal settings - appropriately, otherwise the terminal state and readline's idea - of it can get messed up. Original report from Dave Wysochanski - and Dave Anderson - -trap.c - - run_pending_traps: don't allow recursive SIGWINCH trap invocations; - they're wasteful and trying to handle a stream of signals while a - user resizes the terminal can lead to malloc errors trying to save - and restore the_pipeline multiple times. Problem reported most - recently by Martin M. S. Pederson (Fedora bash bug 1197768 - https://bugzilla.redhat.com/show_bug.cgi?id=1197768) - - reset_or_restore_signal_handlers: set pending_traps to 0 for all - signals when forking a child. TENTATIVE fix - -jobs.c - - {save,restore}_pipeline: block SIGCHLD while manipulating the_pipeline - like cleanup_the_pipeline does. XXX - may not be necessary - -lib/readline/display.c - - rl_redisplay: fixed case where multibyte character in the prompt - (e.g., \u03bb) in the last screen column causes problems with line - wrapping because the newline marker is put in the middle of the - multibyte char. Most recently reported on Ubuntu by - - -pathexp.c - - quote_string_for_globbing: if a bracket expression doesn't have a - closing right bracket, rescan it from just after the opening - bracket without treating it as a bracket expression. Bug report - from Stephane Chazelas - - 3/9 - --- -subst.c - - process_substitute: keep the last pipeline created to run a process - substitution in LAST_PROCSUB_CHILD; discard it when another one is - created - -jobs.[ch] - - discard_pipeline: now global, so process_substitute can call it - -jobs.c - - last_procsub_child: new variable, set and modified only by the process - substitution code - - find_pipeline: if the requested pid is in LAST_PROCSUB_CHILD, return - it; analogous to the way this code handles the_pipeline - - waitchld: if we find a child via find_pipeline that is a part of the - last process substitution child, mark that child appropriately. If - the child is dead, add it to the bgp list. This and the previous - change allow waiting for the most recent process substitution (the - one corresponding to $!). Original report from Stephane Chazelas - - - 3/10 - ---- -arrayfunc.c - - unbind_array_element: make sure skipsubscript() doesn't try to parse - embedded quotes in the subscript, since this has already been through - one round of word expansion before calling the unset builtin. (This - function is only called by the unset builtin). Fixes bug reported by - - - 3/17 - ---- -jobs.c - - waitchld: move code that adds the last process substitution pid to - the bgpids array from waitchld (where it can call malloc in a signal - handler context) to cleanup_dead_jobs - - 3/19 - ---- -subst.c - - parameter_brace_expand: if expanding an array in a context where word - splitting will not take place (W_ASSIGNRHS only for now), make sure - to pass the double-quoted flag to chk_atstar so we don't get the - unquoted $* behavior, which will cause unwanted word splitting. - Fixes bug reported by isabella parakiss - -arrayfunc.c - - unbind_array_element: don't assume that caller will check and pass - only array variables; don't allow non-array variables to be unset - using the `@' or `*' subscripts and don't allow any subscripts other - than 0; return -2 in those cases - - unbind_array_element: unset a non-array variable if passed a subscript - of `0' (e.g., `unbind "scalar[0]"'). This is new functionality that - parallels the ${scalar[0]} expansion - -builtins/set.def - - unset_builtin: don't check whether a variable is an array if it's - referenced using array syntax (scalar[0]); pass it to - unbind_array_element anyway and check the result. This means that - `unset scalar' and `unset scalar[0]' are equivalent - - 3/20 - ---- -builtins/set.def - - set_builtin: make `-i' an invalid option, unconditionally for now. - From a bug-bash discussion started by Peng Yu - - 3/21 - ---- -lib/readline/colors.c - - _rl_print_color_indicator: handle dangling symlinks (C_ORPHAN) and - the `target' specifier for links (dereference S_ISLNK if the target - exists). Bug report and fix from andreas@stapelspeicher.org - -{arrayfunc,subst}.c - - add code to save and restore this_command_name in places that set - this_command_name to NULL to prevent error messages from arithmetic - evaluation. Fixes bug reported by brian.carpenter@gmail.com - -builtins/mapfile.def - - do_chop: remove a new DELIM argument from the line, instead of - unconditionally removing newline - - mapfile: if -d delim is supplied and we are breaking fields at DELIM, - remove DELIM if the -t option is supplied by passing DELIM to do_chop(). - Suggested by Geir Hauge - -doc/{bash.1,bashref.texi} - - mapfile: document new -t option behavior, defaults are the same - -builtins/alias.def - - print_alias: if the first character of an alias name is `-', add a - `-- ' after `alias' to avoid option errors when trying to reuse the - output. Bug report and fix on savannah from Pasha Bolokhov - - - 3/22 - ---- -builtins/declare.def - - declare_internal: if creating a variable does not return a valid - variable in VAR, check for null variable before dereferencing it. - This happens with nameref variables referencing variables set to - the empty string. - Fixes bug reported by Arthur200000 - - 3/23 - ---- -doc/{bash.1,bashref.texi} - - INVOCATION: add language to make it clear that non-interactive login - shells execute ~/.bash_logout if they run the `exit' builtin. From a - question from Christoph Anton Mitterer - - 4/6 - --- -subst.c - - process_substitute: increment and decrement subshell_level around - calls to parse_and_execute, as in command substitution, so - $BASH_SUBSHELL gets new values in the subshell. Fixes inconsistency - pointed out by Peng Yu - -doc/{bash.1,bashref.texi} - - read: add clarifying text to note that the -N option does not split - on $IFS, but does retain backslash as an escape character subject - to -r. Report from isabella parakiss - -builtins/declare.def - - declare_internal: unless it's the last statement in a {...} block, - NEXT_VARIABLE must be protected by braces. Bug introduced in patch - from 3/22, reported by Eduardo A. Bustamante López - - - 4/7 - --- -parse.y - - shell_getc: if bash is reading input from a string that ends with an - unquoted backslash, add another backslash instead of a newline, since - the backslash and newline will disappear in normal processing. Fixes - bug with `bash -c 'eval \\; echo y' ' skipping the eval command and - setting incorrect exit status, and `bash -ic 'eval \\; echo y' ' - seeing EOF on empty line and exiting before the echo. Keep track of - backslash state with last_was_backslash; set in char reading loop. - Fixes bug reported by Eduardo A. Bustamante López - - 4/8 - --- -shell.c - - main: check for $INSIDE_EMACS as well as $EMACS when deciding whether - or not bash is being run in a GNU emacs shell window. Don't bother - checking whether $TERM is unset because variable initialization sets - it to `dumb' if unset. Fixes from Paul Eggert - -parse.y - - push_token: new function, rotates current_token through last_read_token, - saving old values like yylex() does, sets current_token to argument - -evalfile.c - - _evalfile: if current_token is yacc_EOF, push a newline as the value - of current_token instead, using push_token(). yacc_EOF can result if - sourced file doesn't end with a newline but does end with an unescaped - backslash. Fixes bug reported by Pedro Gimeno - - -lib/readline/histfile.c - - use PARAMS(x) instead of __P(x). Bug reported by Evan Gates - - - 4/9 - --- -execute_cmd.c - - execute_simple_command: if we haven't already forked, and we have - created FIFOs, turn off the no-fork optimization in the simple - command's flags. Originally reported to savannah by Kuang-che Wu as - https://savannah.gnu.org/support/index.php?108732 - - 4/10 - ---- -trap.c - - trap_if_untrapped: new function, sets a trap on a signal if that - signal is not already trapped - - maybe_set_debug_trap: new function, sets DEBUG trap to command string - argument only if it's not already trapped - -trap.h - - maybe_set_debug_trap: new extern declaration - - -builtins/source.def - - source_builtin: if the -T option isn't set, use maybe_set_debug_trap - in the unwind-protect instead of unconditionally restoring the old - trap string. That means if the sourced file changes the DEBUG trap, - that new trap will persist instead of being undone when the old - value is restored. Fixes bug reported by Scott Bronson - - -builtins/evalstring.c - - parse_string: before we jump to top_level, if we are at the `bottom' - of the parse_and_execute stack (parse_and_execute_level == 0), call - top_level_cleanup() before jumping so the right cleanup happens (e.g., - cleaning up redirections and other state). Fixes bug reported by - Sam Liddicott - - 4/15 - ---- -jobs.c - - delete_job: only add J_ASYNC (and not J_FOREGROUND) jobs to the - bgpids array, since Posix says shells only need to save the status - of async jobs. Report and fix from John Fremlin - - 4/17 - ---- -pcomplib.c - - COMPLETE_HASH_BUCKETS: increase to 256 since bash-completion is - over 300 completions by now - -variables.c - - VARIABLES_HASH_BUCKETS: constant used to size shell variables hash - table instead of relying on hash library default. Used in calls - to hash_create in create_variable_tables(), push_temp_var(), and - push_func_var(). Currently set to 1024 because why not? From a - discussion starting at - https://lists.gnu.org/archive/html/bug-bash/2015-04/msg00089.html - - initialize_shell_variables: if FUNCTION_IMPORT is not defined, the - nested conditional compilation causes syntax errors. Bug and fix - from Eric Blake - -configure.ac - - function-import: fix typo, assign to correct variable. Found as the - result of a report by Eric Blake - -shell.c - - open_shell_script: check whether or not file argument is a - directory before opening; Posix says that implementations may open - a directory with O_RDONLY. Bug report from - Eduardo A. Bustamante López - - 4/19 - ---- -ulimit.def - - fix typo in limits[] declaration of `k' - - 4/20 - ---- -configure.ac - - add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report - from Andreas Schwab - -variables.c - - FUNCTIONS_HASH_BUCKETS: constant used to size the hash tables used for - shell functions and the text of shell function definitions. Initially - set to 512, even though it's a really rare case that someone has more - than around 150 functions, even with bash-completion - - 4/21 - ---- -shell.c - - main: malloc_set_register: change arg to 0 to disable keeping track of - allocations and frees in table; change to 1 for malloc debugging on - demand. Table is too small to keep effective track of allocations on - a modern system, need to use something like valgrind - - 4/22 - ---- -shell.c - - main: move cmd_init() (initialize word desc and word list object - caches) after startup files are read so the cache doesn't get filled - up with semi-permanent storage for shell functions and variables - -execute_cmd.c - - execute_function: use maybe_set_debug_trap in the same way as source - builtin change from 4/10 to allow functions to reset a DEBUG trap - when set -T not in effect. From a report by Peng Yu - - - 4/23 - ---- -execute_cmd.c - - execute_disk_command: don't overwrite value of subshell_environment - by assigning SUBSHELL_FORK; just OR in SUBSHELL_FORK so something - like SUBSHELL_ASYNC or SUBSHELL_PIPE is preserved - -jobs.c - - wait_for: don't call give_terminal_to if running in a subshell - environment, not just if running_in_background is set; don't want - shell functions waiting for a process to complete in a pipeline to - give the terminal to the wrong process group. Part of fix for bug - reported by Valentin Bajrami - - make_child: child process should not try to give the terminal to the - pipeline_pgrp if running as part of a pipeline (SUBSHELL_PIPE in - subshell_environment); functions in execute_cmd.c don't set that - flag until after make_child returns and the child process is running. - Rest of fix for bug reported by Valentin Bajrami - - - 4/24 - ---- -redir.c - - redirection_error: if the redirection involves {varname}, only use - `varname' in the error message if the error code is < 0 (one of the - internal redirection errors, like ambiguous or bad variable name); - otherwise the issue is probably with the filename and should be treated - as usual. Fixes problem reported by Dr. David Alan Gilbert - - -configure.ac,config.h.in - - sys/ioctl.h: add check in AC_CHECK_HEADERS macro, define HAVE_SYS_IOCTL_H - -lib/readline/{rltty,terminal}.c - - sys/ioctl.h: include unconditionally for ioctl declaration, avoid - issues with `implicit declaration' warnings. Issue originally - raised on gdb list by Chen Gang - - 4/27 - ---- -lib/malloc/table.c - - mem_table: now a circular buffer showing the state of the last - REG_TABLE_SIZE allocations rather than a hash table that quickly - fills up - -builtins/declare.def - - typeset_builtin: add -n to list of supported options. Omission - reported by Valentin Bajrami - -unwind_prot.c - - use object caches instead of malloc/free to allocate and deallocate - unwind-protect elements - - uwp_init: initialize unwind-protect element object cache - -unwind_prot.h - - uwp_init: extern declaration - -shell.c - - main: call uwp_init right after calling cmd_init -- initialize all the - object caches at the same place - -lib/malloc/table.[ch] - - mlocation_table: new table to keep track of allocation locations by - file and line, functions to initialize table, record an allocation, - and dump the table to stderr - - mregister_alloc: call mlocation_register_alloc to record the location - (source file/line) for each allocation to pinpoint malloc hot spots - by number of calls. More detail than gprof - -parse.y - - set_line_mbstate: replace free/xmalloc pair with xrealloc call - - read_token_word: call alloc_word_desc instead of xmalloc so we can take - advantage of the WORD_DESC cache - - 4/28 - ---- -execute_cmd.c - - execute_simple_command: if command execution fails because the command - is a directory, and the `autocd' option is set, add a `--' argument - to the constructed `cd' command to protect against command names with - the same name as options to `cd'. Report and fix from - isabella parakiss - - 4/30 - ---- -jobs.c - - printable_job_status, j_strsignal: change calls to strcpy and sprintf - that write to retcode_name_buffer to use strncpy and snprintf to - avoid buffer overflows caused by malicious translations. Bug and fix - from Trammell Hudson - - 5/1 - --- -strtrans.c - - ansicstr: make sure the buffer is at least 12 bytes to ensure enough - space for any eventual call to u32cesc for one multibyte char - - 5/4 - --- -jobs.c - - wait_for: if an interactive shell is running a loop and waiting for - a non-builtin command to exit, and the command exits due to SIGINT, - act as if the shell received the SIGINT as well and break the loop. - This matches the behavior when the shell is running a builtin command - in a loop, and when running a non-builtin command outside a loop, and - seems more broadly useful than running the trap handler over and over - again. Report originally from Kaz Kylheku - -builtins/set.def - - unset_builtin: use different variables for keeping the state of the - -f and -v options than the loop uses to decide whether or not to - treat a name as a function or a variable. Fixes problem with - unset_function setting `sticking' after you unset a function when - invoked with no options. Bug report from Dreamcat4 - - -shell.c - - open_shell_script: set running_shell_script to 1, set to 0 in every - other case (new variable) - - main: when checking whether or not to call start_debugger, test - running_shell_script instead of dollar_vars[1]. The goal is to not - invoke the debugger for interactive shells but allow it to run for - things like `bash --debugger -i /tmp/script'. Problem reported by - Rocky Bernstein - -lib/readline/histexpand.c - - history_event_delimiter_chars: new (as yet undocumented) variable - containing by default characters that can delimit a history event - specifier without requiring a `:': "^$*%-" as the documentation has - always said. Fixes bug reported by Anders Granlund - - - 5/10 - ---- -lib/glob/gmisc.c - - match_pattern_char, match_pattern_wchar: if passed an empty string, - return a match if the first character of the pattern is `*' - -subst.c - - pat_subst: change to allow empty strings to be replaced as long as - pattern matches empty string. Report and fix from isabella parakiss - - - 5/12 - ---- -lib/sh/strtrans.c - - ansic_wshouldquote: make behavior consistent in the event of an - invalid multibyte sequence: return 1 to the caller so the string - will be $'...' quoted - -builtins/cd.def - - cd_builtin: print the right error message even if printable_filename - changes errno (e.g., EILSEQ) - -lib/sh/shquote.c - - sh_backslash_quote: in multibyte locales, even if is_basic does not - return true, backslash-quote an ASCII character that backslash_table - says should be quoted. Part of fix for bug reported by Igor - Bogomazov - -bashline.c - - directory_exists: new function, dequotes the string argument, removes - any trailing slash, and returns true if the result is a valid - existing filename - - bash_filename_stat_hook,bash_directory_completion_hook: use - directory_exists instead of calling lstat/stat on the quoted - directory name. Rest of fix for bug reported by Igor Bogomazov - - - 5/15 - ---- -aclocal.m4 - - BASH_CHECK_MULTIBYTE: when checking for locale_charset, add $LIBINTL - to $LIBS. If we're using the included lib/intl/libintl.a, it will - include a version of locale_charset - - 5/17 - ---- -lib/readline/bind.c - - sv_isrchterm: make sure we check for v[end] == 0 while in the loop - looking for whitespace. Bug report and fix from Sergio Durigan - Junior - -lib/sh/shmbchar.c - - mbstrlen,mbsmbchar: move calculation of MB_CUR_MAX out of loop; - calculate it once at beginning - -lib/sh/mbscmp.c - - mbscmp: move calculation of MB_CUR_MAX out of loop; calculate it once - at beginning - -lib/sh/mbscasecmp.c - - mbscasecmp: move calculation of MB_CUR_MAX out of loop; calculate it - once at beginning - -lib/sh/shquote.c - - sh_backslash_quote: move calculation of MB_CUR_MAX out of loop; - calculate it once at beginning - -lib/sh/casemod.c - - sh_modcase: move calculation of MB_CUR_MAX out of loop; calculate it - once at beginning - -subst.c - - expand_word_internal: move calculation of MB_CUR_MAX out of loops; - calculate it once at beginning of function (XXX should use - locale_mb_cur_max) - - 5/22 - ---- -lib/readline/rlmbutil.h - - _rl_wcwidth: new function, short-circuits wcwidth calls for ASCII - printable characters, returns 1 for those - - WCWIDTH: call _rl_wcwidth instead of wcwidth - -lib/readline/display.c - - rl_redisplay: move calculation of MB_CUR_MAX out of loop; calculate - it once at beginning. Report and patch from Ole Laursen - - - 5/24 - ---- -lib/readline/text.c - - rl_insert: change to attempt to batch-insert pending typeahead (not - pushed input or input from a macro) that maps to rl_insert. An - attempt to suppress redisplay until readline reads all typeahead -- - pasted input, for instance. Inspired by report from Ole Laursen - . XXX - need to make this a bindable - variable; already controlled by _rl_optimize_typeahead - -lib/readline/rlprivate.h - - _rl_optimize_typeahead: extern declaration - -lib/readline/doc/{hstech.texi,history.3} - - next_history: clarify under what circumstances the history offset is - incremented; suggestion from Glenn Golden - -print_cmd.c - - print_arith_command: should be compiled in if either DPAREN_ARITHMETIC - or ARITH_FOR_COMMAND is defined. Report from Flavio Medeiros - - -flags.c - - change_flag: new variable verbose_flag, set when `v' flag modified; - sets value of echo_input_at_read correspondingly - -flags.h - - verbose_flag: new extern declaration - -shell.c - - long_options: --verbose now sets verbose_flag - - main: set echo_input_at_read from verbose_flag after parsing any - long options - -builtins/fc.def - - fc_builtin: don't unwind-protect echo_input_at_read directly; set it - to 1 before calling fc_execute_file as before, and reset it to value - of global verbose_flag using set_verbose_flag called from an - unwind_protect. Report from isabella parakiss - -builtins/shopt.def - - shopt_set_debug_mode: new function, called when the extdebug shell - option changes. Right now, it sets function_trace_mode when extdebug - is enabled, and turns off when extdebug is disabled. The - documentation has always said that shopt does this. Report from - Peng Yu - - 5/27 - ---- -findcmd.[ch] - - add support for EXECIGNORE shell variable, list of extglob patterns - that prevent matching filenames from being identified as executable - files - -variables.c - - EXECIGNORE: arrange for findcmd.c:setup_exec_ignore to be called when - $EXECIGNORE changes - -variables.h - - sv_execignore: extern declaration - -doc/{bash.1,bashref.texi} - - document EXECIGNORE variable - - 5/28 - ---- -lib/readline/callback.c - - rl_callback_sigcleanup: new function, cleans up and unsets any state - rl_callback_read_char uses. Intended to be used after a signal - -lib/readline/signals.c - - _rl_handle_signal: call rl_callback_sigcleanup on SIGINT. Fixes bug - reported to python group by Martin Panter - -lib/readline/isearch.c - - _rl_isearch_cleanup: now a public function so rl_callback_cleanup can - call it - -lib/readline/search.c - - _rl_nsearch_cleanup: now a public function so rl_callback_cleanup can - call it - -lib/readline/rlprivate.h - - _rl_[in]search_cleanup: extern declarations - -lib/readline/readline.h - - rl_callback_sigcleanup: new extern declaration - -lib/readline/doc/rltech.texi - - rl_callback_sigcleanup: documented - -lib/readline/readline.h - - bump readline version to 7.0 due to addition of rl_callback_sigcleanup - - 5/29 - ---- -builtins/declare.def - - declare_internal: if we are trying to change attributes or value for - a nameref variable whose value points to an unset variable, make - sure we create a new variable whose name is the value of the nameref - variable. That is, - - declare -n foo=bar - unset foo # unsets bar - declare -i foo - - should create a (invisible) variable named `bar' with the integer - attribute. Fixes problem reported by Greg Wooledge - - -builtins/set.def - - unset_builtin: if we find a nameref variable when we look it up with - find_variable (the returned variable has a name different from what - we looked up), make sure we use that new name for the rest of the - function rather than rely on unbind_variable to do the same thing as - find_variable. Fixes problem reported by Greg Wooledge - - - unset_builtin: if we try to unset a nameref variable whose value is - not a set variable, make sure we don't try to unset the nameref - itself, but rather the variable it points to. This ensures that the - following always works as it should - - declare -n foo=bar - unset foo # unsets bar and leaves foo unchanged - -lib/readline/funmap.c - - vi-insertion-mode: make sure it maps to rl_vi_insert_mode, which is - actually what the `i' keybinding in vi_movement_keymap maps to. - Cosmetic fix from isabella parakiss - - 6/2 - --- -general.c - - conf_standard_path: moved get_standard_path here from command.def; made - public function - -general.h - - conf_standard_path: extern declaration - - - 6/3 - --- -parse.y - - parse_matched_pair: make sure that command substitution constructs - within ${...} expansions are parsed as such using parse_comsub, so - the P_FIRSTCLOSE flag doesn't stop parsing if a right brace appears - within the comsub. Report from Christos Zoulas - -findcmd.c - - search_for_command: take two new flags for FLAGS arg: CMDSRCH_STDPATH, - which means use the command -p path, and CMDSRCH_TEMPENV, currently - unused. Existing flag value of 1 now CMDSRCH_HASH - - search_for_command: don't set `path' to NULL if it wasn't found in - the temporary environment; we can use it later - - search_for_command: look for the hashed file if temp_path == 0, not - if we set path back to 0 (or path lookup failed) - - search_for_command: just call find_user_command_in_path with a - pathlist argument that's set depending on the flags passed - - find_in_path: new function, just calls find_user_command_in_path at - this point - - search_for_command: don't put non-existent files into the hash table - -findcmd.h - - CMDSRCH_*: new flags for search_for_command - - find_in_path: extern declaration - -execute_cmd.c - - execute_disk_command: check for CMD_STDPATH and call search_for_command - with CMDSRCH_STDPATH if it's set - -builtins/command.def - - command_builtin: if -p given without -v or -V, set the CMD_STDPATH - flag in the simple command we construct from the rest of the - argument list. This fixes the command -p cmd issue with changing - $PATH for the duration of `cmd's execution reported by - - -builtins/common.h - - CDESC_STDPATH: new flag for describe_command; means to use standard - path for command -pv or -pV - -builtins/command.def - - command_builtin: if -p given with -v or -V, pass the CDESC_STDPATH - flag to describe_command - -builtins/type.def - - describe_command: if given the CDESC_STDPATH flag, use find_in_path - with the conf_standard_path() result. Since `all' will never be on - with this flag, at least not yet, we can allocate and free the path - list. Fixes the bug of a temporary environment value for PATH - preceding a `command -pv' or `command -pV' persisting when the - command finishes and means we use fewer unwind-protects - - 6/4 - --- -Makefile.in (plus other Makefile.ins) - - VPATH: remove `.' from VPATH value. It's not needed any more and it - trips a GNU make 4.1 bug on Cygwin. Report and fix from Eric Blake - - -lib/readline/histfile.c - - history_tempfile: new function, takes history file name as template - and creates a temp file name including the PID - - history_truncate_file, history_do_write: instead of creating backup - and restoring it on failure, use history_tempfile to create a temp - file name, write to it, then rename to original history filename - (handling symlinks using history_restore()). Original report and - patch from Russell Stuart - -doc/{bash.1,bashref.texi} - - ulimit: clarify that -c and -f are in increments of 512 bytes when - in posix mode. Fix from Robin Johnson via - - - 6/9 - --- -execute_cmd.c - - execute_in_subshell: don't call restore_default_signal for the exit - trap, reset_signal_handlers already does the right thing and keeps - the trap string around; no need to kill trap string. Bug report - from Miroslav Koskar - - 6/11 - ---- -nojobs.c - - find_proc_slot: now takes pid as an argument to avoid finding old - procs when pids wrap around - - add_pid: pass pid to find_proc_slot to avoid multiple instances of - the same pid in the list when pids wrap around. Fixes bug reported - by Roy Keene - -execute_cmd.c - - REAP: test for job_control == 0 also to determine whether or not - to call reap_dead_jobs, since shells without job control enabled - don't report on background process status - -doc/bash.1,lib/readline/doc/hsuser.texi - - history: clarify documentation of -a option to note that it will not - append the same line to the history file more than once. Fixes - problem reported by Reuben Thomas - - 6/12 - ---- -execute_cmd.c - - execute_in_subshell: don't bother decrementing subshell_level before - this returns; the caller will just exit. This means that - $BASH_SUBSHELL will have consistent values in the subshell and any - subsequent exit trap. Fixes bug reported by Miroslav Koskar - - - shell_execve: before longjmp to subshell_top_level, call reset_parser - to free up any input line and stack of pushed strings - -parse.y - - mk_alexpansion: if the last character of the alias is a shell - metacharacter, don't add a space to the string following the alias - value, since that will change the meaning of the command. THIS IS - NOT BACKWARDS COMPATIBLE AND MAY REQUIRE REVERTING. Inspired by an - email message from Jilles Tjoelker to austin - group - - 6/13 - ---- -subst.c - - dequote_string: don't turn strings consisting of a single CTLESC - into empty strings; return them unmodified. The idea is that there - is nothing to quote. This means that something like - c=$'\001' - x=$c - results in x containing '\001' when IFS=$'\001'. See if this will - cause problems by adding a debugging statement in the code - - 6/15 - ---- -parse.y - - CHECK_FOR_RESERVED_WORD: don't return ESAC when you read `esac' - after a `|' while in a case pattern list (parser_state & PST_CASEPAT). - This is Posix grammar rule 4 - (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02) - - 6/16 - ---- -jobs.c - - wait_for: make sure we queue SIGCHLD signals if a SIGCHLD trap - handler is running (signal_in_progress or IMPOSSIBLE_TRAP_HANDLER), - since we allow recursive trap invocations now - - wait_for: make sure we treat SIGCHLD as trapped if the trap handler - is set to IMPOSSIBLE_TRAP_HANDLER so we don't miss signals during - calls to run_sigchld_trap() - -trap.c - - run_pending_traps: since we allow recursive trap handler invocations, - make sure we set pending_traps[SIGCHLD] to 0 while we mark the - signal handler in progress (SIG_INPROGRESS) and don't reset it to 0 - after run_sigchld_trap returns in case more SIGCHLDs have been - queued while it's running - - 6/22 - ---- -lib/readline/readline.c - - _rl_dispatch_subseq: if we shadowed any function, not just self- - insert, bind that function to the key we shadowed and dispatch on it. - This preserves and dispatches off the original key, not ANYOTHERKEY, - and makes sure we are dispatching from a keymap with the right key - binding. Fixes bug reported by Carlos Pita - - - 6/23 - ---- -bashline.c - - attempt_shell_completion: don't read past the end of rl_line_buffer - while skipping assignment statements before command names. Fix for - bug reported by Hanno Böck - -lib/readline/parens.c - - _rl_enable_paren_matching: make paren matching work in vi insert - mode. Really, this time. Bug report from Carlos Pita - - - 6/29 - ---- -parse.y - - parse_comsub: when starting to parse a word, make sure that we set - lex_rwlen to 0 along with lex_wlen if we are in a position where we - can read a reserved word. Fixes bug reported by Nathan Neulinger - - - 6/30 - ---- -sig.h - - include unconditionally and rely on guards in sig.h to - keep from including it more than once. Irix 6.5 defines SIG_DFL - in other files and defeats the test of SIG_DFL. Fixes bug - reported by Klaus Ziegler - -alias.c - - ALIAS_HASH_BUCKETS: table size increased to 64 - - 7/7 - --- - -{jobs,nojobs}.c - - wait_sigint_cleanup: new function, to be called by longjmp targets - for wait_intr_buf. Performs any necessary cleanup of internal waitchld - state before going back to top level - -jobs.h - - wait_sigint_cleanup: new extern declaration - -builtins/wait.def - - wait_builtin: call wait_sigint_cleanup after longjmp back to - wait_intr_buf on interrupt - -[bash-4.4-alpha frozen] - - 7/7 - --- -bashline.c - - attempt_shell_completion: when skipping assignment statements, don't - skip past rl_point to find the word on which to perform programmable - completion. Fixes bug reported by Hanno Böck - - 7/10 - ---- - -pcomplib.c - - compspec_copy: set the refcount on the copy to 1, since it's a freshly - allocated copy and there are no other pointers to it. Fixes memory - leak from gen_progcomp_completions - -lib/readline/complete.c - - printable_part: if the pathname passed is just `/', just return it - instead of potentially reading before the `/'. Fixes bug reported - by Hanno Böck - - 7/11 - ---- -support/man2html.c - - change calls to malloc to use xmalloc; provide standard xmalloc - definition. Report from Bill Parker - -builtins/wait.def - - wait_intr_flag: set to denote validity of wait_intr_buf as target - for longjmp; reset by WAIT_RETURN macro; should always be 0 when - wait_builtin returns - -quit.h - - CHECK_WAIT_INTR: now also checks wait_intr_flag to ensure valid state - of wait_intr_buf before sh_longjmp - -{jobs,nojobs}.c - - wait_intr_flag: extern declaration for use by CHECK_WAIT_INTR - -sig.c - - wait_intr_flag: set back to 0 every place the shell resets state after - a jump to top_level - - sigint_sighandler: only set wait_signal_received if wait_intr_flag - indicates that the wait builtin has correctly set wait_intr_buf. - Final fix for bug reported by Ondrej Oprala - -subst.c - - parameter_brace_expand: fix so that ${!vvv@} is not interpreted as - introducing a `@' operator, but instead retains its meaning as all - variables whose name begins with vvv. Fixes bug reported by - konsolebox - - 7/14 - ---- -execute_cmd.c - - execute_connection: remove the fork optimization from and AND_AND - and OR_OR cases; it has trouble with `a && b && c', since the `&&' - is left-associative. Putting that code here can result in unwanted - fork optimizations since the `b' will end up as `second' on a - recursive call to execute_command. Bug reported by Mike Frysinger - - -builtins/evalstring.c - - optimize_fork: moved code from execute_connection to here; checks - whether the RHS of a && or || passes the suppress_fork() tests and - turns on the NO_FORK bit if so - - parse_and_execute: if suppress_fork() tests fail, check whether the - command to be executed is a connection and attempt to optimize the - fork for the right side using optimize_fork(). The key is dealing - with the entire command passed to `bash -c' or `eval' - -builtins/common.h - - optimize_fork: new extern declaration - -execute_cmd.c - - execute_command_internal: enable code put in to undo redirections - before exiting the shell due to `set -e' in the case of a shell - function that gets command-not-found or a syntax error. Reported - back in May, 2014 by Mark Ferrell - -bashhist.c - - bash_history_inhibit_expansion: enable change from 1/10 that skips - over history expansion character in command and process - substitution - - 7/15 - ---- -lib/readline/{history,undo}.c - - replace_history_data now _hs_replace_history_data - - 7/16 - ---- -lib/readline/readline.c - - make sure _rl_to_lower doesn't ever get characters that are outside - of its valid range by casting arg to unsigned char - -lib/readline/colors.h - - change completion prefix color (C_PREFIX) to be the same as C_SOCK, - which is less likely to collide with file type colorings (magenta) - -lib/readline/complete.c - - fnprint: now takes an additional argument: the full, expanded pathname - corresponding to the `toprint' argument - - fnprint: don't zero out prefix_bytes if we're not printing the - ellipisis but we still want to use prefix_bytes for displaying - the common prefix in a color - - print_filename: move colored-stats display responsibility into fnprint - - fnprint: change so colored-prefix and colored-stats can cooperate - and display filenames with multiple colors: one for the prefix and - one for the file type. The prefix is displayed in the prefix color - and the remainder of the pathname, if any, is displayed in the color - corresponding to the file type. Report and suggestion from Mike - Frysinger - - 7/17 - ---- -lib/readline/readline.[ch] - - rl_readline_state: now unsigned long, prepare for more than 32 states - - - 7/18 - ---- -lib/readline/history.h - - history_offset: now declared here, was always a global variable - - copy_history_entry: now declared here, part of the public interface - - alloc_history_entry: now declared here, part of the public interface - - 7/20 - ---- -lib/readline/readline.h - - RL_STATE_CHARSEARCH: new state, for vi mode character search. Was - previously handled by simply setting _rl_callback_func - -lib/readline/vi_mode.c - - rl_domove_motion_callback: split into two functions, remaining code - after _rl_dispatch call goes into new function - _rl_vi_domove_motion_cleanup - - rl_vi_char_search: set RL_STATE_CHARSEARCH - - rl_vi_char_search: sets `i2' member of callback data to the key used - to invoke the char search - - _rl_vi_callback_char_search: unset RL_STATE_CHARSEARCH after reading - the character to find - - _rl_vi_domove_motion_cleanup: make sure RL_STATE_VIMOTION is unset in - all cases where this function returns - - _rl_vi_domove_motion_cleanup: use `end' member of vi motion context - as value of rl_end to restore after adding blank at end of line in - rl_domove_motion_callback; avoids need to keep `old_end' and somehow - pass it between the two functions - -lib/readline/rlprivate.h - - _rl_vi_domove_motion_cleanup: new extern declaration - -lib/readline/callback.c - - rl_callback_read_char: handle RL_STATE_CHARSEARCH, including case - where char search is vi motion command for d/c/y/m and RL_STATE_VIMOTION - is set when this is called. Last of set of fixes for bug reported - by Carlos Pita with vi-mode `dty' command - in callback mode - - 7/21 - ---- -subst.c - - command_substitute, process_substitute: add QUIT call in the child - after restoring original signal handlers to catch post-fork SIGINT - or terminating signal - -jobs.c,nojobs.c - - make_child: after forking, clear interrupt_state in child - before restoring signal mask so children get their own set of - interrupts - - 7/22 - ---- -lib/sh/shquote.c - - sh_double_quote: since all uses of the return value from this function - are for display and not subject to subsequent expansion, we don't - need to protect CTLESC and CTLNUL with CTLESC. Bug report and fix - from isabella parakiss - -parse.y - - decode_prompt_string: need to protect literal instances of CTLESC - and CTLNUL with CTLESC, even if they are not coming out of one of - the backslash-expansions - -subst.c - - make_internal_declare: fixed memory leak; make_internal_declare should - free the memory it allocates to construct the word list. From Red - Hat bug 1245233; https://bugzilla.redhat.com/show_bug.cgi?id=1245233 - -lib/readline/readline.c - - _rl_dispatch_subseq: when checking whether an ESC in vi insert mode - should be treated as part of a key sequence or as a single char, - make sure we are getting input from the keyboard before we check - _rl_input_queued(). If we are getting input from a macro, this - causes a needless delay. Report from Carlos Pita - - - 7/23 - ---- -input.c - - save_bash_input: before checking to see whether or not a new fd has a - stale associated buffer, make sure that the new fd is within bounds. - Bug report and fix from Alexey Makhalov - - - 7/24 - ---- -doc/{bash.1,bashref.texi} - - note that the `return' builtin accepts arguments beginning with `-' - without requiring `--' - - 7/27 - ---- -examples/loadables/Makefile.in - - add variables and targets to support `make install'; installs - supported builtins in $(libdir)/bash - - 7/28 - ---- -lib/readline/{readline,rlprivate}.h, lib/readline/display.c - - rearrange some structure members for better alignment and to reduce - padding. Fix from - -tests/run-* - - use BASH_TSTOUT instead of hardcoded /tmp/xx as output file - -trap.[ch] - - maybe_set_error_trap: set a trap for the ERR trap if it is not already - trapped; similar to maybe_set_debug_trap back from 4/10 - -lib/malloc/malloc.c - - internal_free: make sure `ubytes' is initialized if MALLOC_WATCH is - defined and we'll be passing it to _malloc_ckwatch. Report from - Flavio Medeiros - -execute_cmd.c - - execute_function: use maybe_set_error_trap in the same way as - maybe_set_debug_trap. Fixes bug reported by David Waddell - - - 7/29 - ---- -jobs.c - - wait_for: no longer need to call job_signal_status when checking - whether a comsub shell reaped a child that died due to SIGINT; code - now uses child_caught_sigint - - 7/30 - ---- -builtins/exec.def - - exec_builtin: after call to restore_original_signals, need to call - default_tty_job_signals to undo changes done by initialize_job_signals. - Fix for problem reported by Andreas Schwab - -doc/{bash.1,bashref.texi} - - clarify definition of metacharacter to explicitly include newline; - prompted by report from George Gallo - - 8/3 - --- -lib/readline/search.c - - _rl_free_history_entry: should be void, not int. Report from - Dilyan Palauzov - -general.h - - sh_load_func_t, sh_unload_func_t: new function pointer types, used by - enable for load and unload hook functions - -builtins/enable.def - - dyn_load_builtin: attempt to execute a function named - BUILTIN_builtin_load, where BUILTIN is the name of the command being - loaded. If that function returns 0, the load fails - - dyn_unload_builtin: attempt to execute a function named - BUILTIN_builtin_unload, where BUILTIN is the name of the command - being unloaded. It offers a dynamic builtin a way to clean up after - itself. Inspired by suggestion from Piotr Grzybowski - in response to a bug report from isabella - parakiss - - 8/6 - --- -lib/readline/colors.[ch] - - _rl_print_color_indicator: now takes `const char *' argument - -lib/readline/complete.c - - colored_stat_start: now takes `const char *' argument - -lib/malloc/table.h - - ma_table_t: `file' member is now `const char *' - -lib/malloc/table.c - - mlocation_register_alloc: make sure variable assigned to `file' in - ma_table_t is of type `const char *'. Fixes from Dilyan Palauzov - - -lib/termcap/termcap.[ch] - - tputs: should return int instead of void - -lib/readline/readline.h - - RL_STATE_DONE: correct value, avoid collision - -lib/readline/vi_mode.c - - _rl_vi_redoing: now global, added _rl_ prefix to `vi_redoing' - -lib/readline/readline.c - - _rl_subseq_result: call _rl_dispatch_subseq instead of rl_dispatch to - avoid changing _rl_dispatching_keymap - - _rl_subseq_result: in the -2 case, set _rl_dispatching_keymap to the - map passed as an argument. Without this, vi mode doesn't call - rl_vi_set_last when it should - - _rl_dispatch_subseq: if redoing a vi mode command with `.' - (_rl_vi_redoing != 0) in callback mode and we're indirecting into - another keymap that has shadowed the key corresponding to the command - we are redoing, just call _rl_subseq_result immediately: vi redo - doesn't need to read any additional input, and rl_vi_redo assumes - that a single call to rl_dispatch is sufficient. Fixes bug reported - by Carlos Pita - - 8/7 - --- -subst.c - - parameter_brace_expand: if a substitution (parameter expansion) error - occurs, and shell_compatibility_level is <= 43, return expansion error - as in all previous versions. If shell_compatibility_level is > 43, - a posix-mode non-interactive shell will consider this a fatal error. - Problem reported by Christian Neukirchen - -doc/bashref.texi - - documented that word expansion errors cause fatal errors in posix mode - non-interactive shells - - 8/8 - --- -subst.h - - SD_COMPLETE: skip_to_delim being called as part of word completion - - SX_COMPLETE: one of the string_extract functions being called as - part of word completion - -bashline.c - - find_cmd_start,find_cmd_end,find_cmd_name: call skip_to_delim with - SD_COMPLETE flag - -subst.c - - skip_double_quoted: takes new flags argument; changed callers - - skip_double_quoted: if flags argument includes SX_COMPLETE, pass it - to extract_command_subst - - extract_command_subst: if flags&SX_COMPLETE, call - extract_delimited_string instead of xparse_dolparen, since completion - may call this for unterminated command substitutions. Fixes - (imperfectly) bug reported by Ingo Ruhnke - - skip_to_delim: if passed the SD_COMPLETE flag, pass the SX_COMPLETE - flag to skip_double_quoted - - char_is_quoted: pass SX_COMPLETE flag to skip_double_quoted - - unclosed_pair: pass SX_COMPLETE flag to skip_double_quoted - - 8/9 - --- -execute_cmd.c - - time_command: catch longjmps to top_level and print command timing - statistics even after a jump to top_level. Fixes issue reported by - Sam Watkins - - 8/10 - ---- -config-top.h - - OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so - each message is tagged with the pid - -bashhist.h - - bash_syslog_history: the first time it's called, call openlog with - OPENLOG_OPTS and SYSLOG_FACILITY - - 8/11 - ---- -doc/{bash.1,bashref.texi} - - GROUPS,FUNCNAME: change description to note that assignments are - silently ignored, but do not return an error (which would constitute - an assignment error and cause posix mode shells to abort). Problem - pointed out by Grzegorz Bajson - - 8/12 - ---- -subst.c - - parameter_brace_expand_indir: if the value of the indirectly expanded - variable isn't something that the shell would expand if it were inside - ${}, error out right away before calling parameter_brace_expand_word. - Fixes problem reported by isabella parakiss - - parameter_brace_expand: handle returning &expand_wdesc_error or - &expand_wdesc_fatal from parameter_brace_expand_indir in case it does - that someday - - 8/13 - ---- -jobs.c - - {save,restore}_pipeline: saved_pipeline now a linked list of pipelines, - new ones allocated in save_pipeline and freed in restore_pipeline. - This allow multiple nested calls to save_pipeline (e.g., in traps - and then in process substitution). Fix for bug reported by isabella - parakiss - -print_cmd.c - - named_function_string: if printing a function with the same name as a - reserved word, add the `function ' keyword before the name to avoid - parsing problems when trying to reuse it as input. Fix for bug - reported by isabella parakiss - - 8/14 - ---- -lib/readline/text.c - - rl_insert: when optimizing typeahead, make sure we set rl_last_func - ourselves if we set pending input, since the mainline code path - won't set rl_last_func if input is pending. Fixes bug reported by - Hiroo Hayashi - - 8/15 - ---- -builtins/type.def - - describe_command: if using the short description (CDESC_SHORTDESC) in - posix mode, describe posix special builtins as such. Requested by - Stephane Chazelas - -builtins/enable.def - - BASH_LOADABLES_PATH: a colon-separated list of directories where bash - looks for loadable builtins specified as arguments to `enable -f' - -doc/{bash.1,bashref.texi} - - BASH_LOADABLES_PATH: document new shell variable - -configure.ac,Makefile.in,builtins/Makefile.in - - loadablesdir: set in configure, substitute into Makefiles. Reserved - for future use - - 8/18 - ---- -subst.c - - shell_expand_word_list: if make_internal_declare fails, make sure to - propagate that error return back and make the assignment statement - fail. Fixes seg fault reported by Sergey Tselikh - - 8/20 - ---- -builtins/declare.def - - declare_internal: made a slight tweak to the warning message about - quoted compound assignments by printing it only if the array (indexed - or assoc) does not already exist - - 8/21 - ---- -braces.c - - mkseq: call strvec_dispose before throw_to_top_level if we saw SIGINT - to avoid a memory leak - -trap.c - - maybe_set_return_trap: set the RETURN trap to string if it's not - already trapped, in the same way as the debug and error traps - -execute_cmd.c - - execute_function: use maybe_set_return_trap to allow functions to set - return traps that persist across calls even if function tracing is - enabled - -lib/readline/input.c - - rl_gather_tyi: make sure errno reset to 0 after select call, for - ioctl and read - - rl_gather_tyi: if read returns -1/EIO, return -1 - - rl_read_key: if rl_gather_tyi returns -1/EIO, return READERR if in - RL_STATE_READCMD (reading command in readline_internal_char), EOF - if not (like rl_getc). Continue to return '\n' on other errors; - rl_done = 1 in any case. Fix for issue reported by - Lubomir Rintel - -lib/readline/{misc,text,vi_mode}.c - - fix return values from rl_read_key to handle < 0 - - 8/22 - ---- - -parse.y - - parsing_redirection: macro that expands to true if the last read - token (always passed as an argument) is a redirection token that - will leave us reading a word that's the target of the redirection - - command_token_position: make sure that even if the parser state - indicates we are reading a simple command (PST_REDIRLIST), we do - not perform alias expansion on a WORD that is part of a redirection, - using parsing_redirection() to do so. Fixes but reported to Red Hat - by Robert Alm Nilsson - https://bugzilla.redhat.com/show_bug.cgi?id=795795 - -builtins/declare.def - - declare_internal: only print the warning now if the variable is not - already an array or if we are not creating an array with -a or -A, - cuts down the spurious warnings - - declare_internal: even if the rhs of the assignment looks like a - compound array, if we're not assigning to an existing array or we're - not creating an array, make it an array subscript assignment. This - means things like declare a[1]='(foo)' and a[1]='(foo)' behave - identically - -builtins/help.def - - wdispcolumn: change use of displen and add new dispchars variable to - deal with locales where each wide character does not take up one - column position. Fix for bug reported by Mingye (Arthur) Wang - - - 8/23 - ---- -sig.c - - sigint_sighandler: if we get a SIGINT while this_shell_builtin == - wait_builtin, perform the special handling only if wait_intr_flag - is non-zero, don't just use it to set wait_sigint_received. This - makes sure we run bashline_set_event_hook. Fixes bug reported by - isabella parakiss - - 8/25 - ---- -subst.h - - SD_HISTEXP: new flag for skip_to_delim, indicates we are looking for - the history expansion character (special double quote handling) - - skip_to_delim: handle SD_HISTEXP flag, changes double quote handling - to be similar to history library: don't call skip_double_quote, make - sure single quotes aren't special in double quotes, but continue to - skip over $(), ${}, and other similar constructs - - 8/27 - ---- -support/bash.pc.in - - new file, pkgconfig template for bash, installed to support nascent - loadable builtins dev environment - -examples/loadables/Makefile.inc - - new file, example Makefile with correct definitions for loadable - builtin development - -configure.ac - - headersdir: directory where headers get installed to support loadable - builtin development - - examples/loadables/Makefile.inc, support/bash.pc: create - -Makefile.in - - INSTALLED_HEADERS, INSTALLED_BUILTINS_HEADERS, INSTALLED_INCFILES, - CREATED_HEADERS: new variables holding names of include files to - install into $(headersdir) for loadable builtin development - - install-headers,install-headers-dirs: new targets to support - installing headers into $(headersdir) and subdirectories for loadable - builtin development - - uninstall-headers: target to uninistall headers in $(headersdir) - - uninstall: call uninstall-headers whether or not install-headers - was done; add uninstall in examples/loadables - - install: add install in examples/loadables - - clean: add clean in examples/loadables - -examples/loadables/Makefile.in - - install-supported, install-unsupported: new targets, make install - chooses one based on $(SHOBJ_STATUS) - - install-supported: now cds to the top level build directory and - installs the header files - - install-supported: now installs Makefile.inc to $(loadablesdir) as - an example - - uninstall-supported,uninistall-unsupported: uninstall targets, - make uninstall chooses one based on $(SHOBJ_STATUS) - - 8/31 - ---- -lib/glob/Makefile.in - - CPPFLAGS: move after ${INCLUDES} so library-specific include paths - take precedence. This is what the other parts of the shell do. - Report from Poor Yorick - -builtins/read.def - - reset_alarm: cancel alarm before restoring signal handler to avoid - possible race condition. Report and fix from Oleg Popov - - -subst.c - - string_extract_verbatim: if SEPARATORS is "'", don't short-circuit - to string_extract_single_quoted unless the SX_NOCTLESC flag is set. - Callers expect this function to honor CTLESC, even to quote a single - quote. Fixes bug reported by isabella parakiss - and several others - - 9/2 - --- -include/chartypes.h - - TOCTRL: handle '?' by special-casing it to 0x7f. Fixes a problem - with $'\c?' reported by Helmut Karlowski - -redir.c - - write_here_string: don't word-split the here string document. The - bash documentation has always said this doesn't happen, even though - bash has done so for years, and other shells that implement here- - strings don't perform any word splitting. The practical effect is - that sequences of IFS characters are collapsed to spaces. Fixes - bug reported by Clint Hepner - - 9/3 - --- -doc/{bash.1,bashref.texi} - - add \? to the list of backslash escapes expanded by $'...' ANSI-C - quoting. It was expanded but not documented - -lib/readline/util.c - - _rl_audit_tty: updated from Red Hat patch - -lib/readline/readline.c - - HAVE_DECL_AUDIT_USER_TTY: correct #define check - - 9/13 - ---- -shell.c - - read_from_stdin: make sure value set to 1 appropriately if the shell - is reading from standard input, as Posix seems to specify (?) - -lib/readline/kill.c - - _rl_copy_to_kill_ring: don't assume that rl_kill_ring has been - allocated if _rl_last_command_was_kill is non-zero; make sure it's - non-null before indexing into it - - 9/15 - ---- -variables.c - - initialize_shell_variables: cope with a NULL env pointer. Fixes bug - reported by ziyunfei <446240525@qq.com> - - 9/16 - ---- -builtins/exec.def - - exec_builtin: if -c is supplied, pass an empty array instead of a NULL - pointer to shell_execve - -variables.c - - set_pwd: only believe $PWD if it begins with a slash; try to - canonicalize it and set it to physical path if canonicalization fails. - Reported by ziyunfei <446240525@qq.com> - - 9/17 - ---- -subst.c - - do_compound_assignment: make sure to dispose of word list generated - by expand_compound_array_assignment; fixes memory leak reported in - https://bugzilla.redhat.com/show_bug.cgi?id=1264101 - -variables.c - - adjust_shell_level: clamp the value of shell_level at 1000 and reset - there, instead of > 1000, since the itos replacement code doesn't - handle the value 1000. Fixes bug reported by ziyunfei - <446240525@qq.com> - -shell.h,parse.y - - save_parser_state,restore_parser_state: now save and restore - redir_stack, short-circuiting if need_here_doc == 0. If we save a - non-zero value for need_here_doc, we have to make sure there is - something valid for gather_here_documents to work on. Fixes bug - reported by Brian Carpenter - - 9/18 - ---- -array.c - - array_to_assign: use ansic_shouldquote to check whether each element - value contains non-printable characters and use ansic_quote to - generate the value instead of using sh_double_quote unconditionally - -assoc.c - - assoc_to_assign: if either the key or the value of an associative - array element contains non-printable characters (ansic_shouldquote - returns true), use ansic_quote to quote them instead of using double - quotes unconditionally - - 9/19 - ---- -subst.c - - pat_subst: handle REP being NULL. Fixes bug reported by Brian - Carpenter - -builtins/evalstring.c - - parse_string: if we get a longjmp to top_level with DISCARD as the - code (in which case we are going to go on), return -DISCARD to our - caller (always xparse_dolparen) after doing our own cleanup instead - of calling jump_to_top_level - -parse.y - - xparse_dolparen: if parse_string returns < 0, do the appropriate - cleanup and then jump_to_top_level with the negative of the return - value. This allows us to do the appropriate parser cleanup in - case we're not going to exit the shell. Fixes bug reported by Brian - Carpenter - -subst.c - - extract_delimited_string: if a recursive call to one of the extract_ - functions or a call to ADVANCE_CHAR leaves i past the end of the - string, cut the loop off at the end of the string. Fixes bug - reported by Brian Carpenter - - 9/20 - ---- -subst.c - - get_var_and_type: return appropriate values if variable indirection - results in a NULL variable. Fixes bug reported by Brian Carpenter - - -lib/readline/history.c - - history_get_time: handle strtol overflows caused by malicious - modifications to timestamps in the history file. Fixes issue - reported by rens@endoria.net - - 9/21 - ---- -lib/readline/rlconf.h - - ENABLE_AUDIT_TTY_SUPPORT: now undefined (off) by default - - 9/24 - ---- -jobs.c - - waitchld: if we get a SIGINT while waiting for a child to exit, but - the kernel doesn't interrupt the waitpid(2) call, assume the child - caught SIGINT if it exited for some reason other than SIGINT. Fix - suggested by Stephane Chazelas - -input.c - - make_buffered_stream: use B_TEXT in buffered stream flags instead - of (typo) O_TEXT. Report and fix from Eric Blake - - 9/27 - ---- -execute_cmd.c - - shell_execve: call reset_parser before calling initialize_subshell, - which calls delete_all_aliases. reset_parser wants to free the - pushed string list, which has pointers back into the alias table - (use after free) - - execute_simple_command: if we fork for an async command, make sure - the child process increments shell_level before performing any - word expansions, so $BASH_SUBSHELL is incremented. Fixes issue - reported by ziyunfei <446240525@qq.com> - - 10/1 - ---- -builtins/kill.def - - kill_builtin: make -L equivalent to -l for compatibility with other - (Linux) versions of kill - -doc/{bash.1,bashref.texi} - - kill: document new `-L' option - - 10/2 - ---- -[bash-4.4-beta frozen] - - 10/5 - ---- -doc/{bash.1,bashref.texi} - - LC_TIME: document that the shell recognizes it and calls setlocale - when it changes; and that the shell uses it for time formatting - - 10/6 - ---- -subst.c - - skip_single_quoted: now takes an additional `flags' argument, like - skip_double_quoted; changed callers - - skip_single_quoted: now pays attention to SX_COMPLETE flag, allows - backslash to escape single quote, like $'...' allows - - skip_to_delim: added case where we are completing and we are - skipping over a $'...' string to call skip_single_quoted with - SX_COMPLETE flag to allow backslash to quote single quote. Fixes - bug reported by Daniel Colascione - - char_is_quoted: make analogous changes to handle $'...' so we can - accommodate $'ab \' cd' - - 10/11 - ----- -subst.c,bashjmp.h - - no_longjmp_on_fatal_error: now global so other parts of the shell can - use it - -arrayfunc.c - - expand_array_index: if no_longjmp_on_fatal_error is non-zero, don't - longjmp to top_level, just return 0. Fixes bug reported by - isabella parakiss - -subst.c - - CQ_RETURN: restore old value of no_longjmp_on_fatal_error (oldjmp); - make sure all callers (skip_matched_pair, skip_to_delim, - char_is_quoted) save no_longjmp_on_fatal_error to oldjmp before - setting it to 1 - -expr.c - - expr_streval: if longjmping after an unbound variable error, jump - back to expr toplevel (evalbuf) if no_longjmp_on_fatal_error is set - in an interactive shell - -variables.c - - push_func_var: if pushing an array variable, such as when a variable - in the temporary environment is promoted to an array by mapfile when - the shell is in posix mode (so variable assignments preceding special - builtins or shell functions persist in the shell environment after - the builtin returns), make sure to copy the array or hash table so - the variable is duplicated correctly. Fixes seg fault reported by - Linda Walsh - - 10/13 - ----- -variables.c - - initialize_shell_variables: add call to sv_shcompat, so BASH_COMPAT - can be set in the initial environment - -execute_cmd.c - - execute_function: set loop_level to 0 only if shell_compatibility_level - is greater than bash-4.3; this was kind of an incompatible change. - Report from Carlos Pita - -COMPAT,doc/{bash.1,bashref.texi} - - compat43: added loop_level changes to description - - 10/15 - ----- -lib/sh/casemod.c,lib/readline/display.c - - make sure mb_cur_max variable is defined outside of HANDLE_MULTIBYTE - if it's used outside HANDLE_MULTIBYTE. Fixes from Greg Wooledge - - -support/Makefile.in - - bash.pc: remove as part of distclean, not clean. Report from Andreas - Schwab - - 10/17 - ----- -subst.c - - array_var_assignment: make sure to call quote_string or quote_escapes - on the assignment string, so spaces in the assignment survive word - splitting. Fixes bug reported by isabella parakiss - - - 10/20 - ----- -doc/{bash.1,bashref.texi} - - word splitting: make sure that newline is listed as one of the IFS - whitespace characters. Fixes omission reported by ziyunfei - <446240525@qq.com> - -lib/readline/histfile.c - - history_do_write: make sure that we only create and use the tempfile - if the history file exists and is a regular file. Reported several - times, most recent check the result of a report from - - - 10/22 - ----- -jobs.c - - delete_all_jobs: if running_only == 0, we are eventually going to - clear the bgpids list, so don't bother to add pids to it in - delete_job (call with DEL_NOBGPID flag if running_only == 0) - - 10/24 - ----- -jobs.[ch] - - bgpids: new implementation from a patch from John Fremlin - , uses an array for the list of the last CHILD_MAX - terminated background pids, and a separate hash table to search it. - The storage can be freed as a unit, and the size of the hash table - (currently 4096) is independent of the size of the bgpids table - -subst.c - - inherit_errexit: new variable to control whether or not command - substitution inherits the -e (errexit) option. Disabled by default - -general.c - - posix_initialize: set inherit_errexit = 1 when Posix mode is enabled - -builtins/shopt.def - - inherit_errexit: new shell option, tracks value of inherit_errexit, - allows command substitution to inherit the setting of errexit without - posix mode. From a request and patch submitted by Christoph Gysin - - -{version,version2}.c - - use #if HAVE_SNPRINTF instead of #if defined in case configure - decides to #define it to 0. Fixes problem reported by Klaus Ziegler - - -configure.ac - - when checking for sys/resource.h, make sure to include - for the benefit of both old systems that require it and new versions - of autoconf that require a header file to compile to report its - presence. Reported by Klaus Ziegler - - 10/26 - ----- -subst.h - - SD_ARITHEXP: new flag value for skip_to_delim, supports parsing - arithmetic expressions in parameter expansions - -subst.c - - skip_to_delim: handle SD_ARITHEXP flag by skipping parentheses for - subexpressions and allowing ?: expression to not terminate an - arithmetic expression delimited by `:' - - skiparith: just call skip_to_delim with the SD_ARITHEXP option and - the right delimiter string and return the right result. Fixes bug - reported by - -include/shmbchar.h - - strip out everything except what is needed to support is_basic and - similar functions, since the mbchar_t typedef apparently conflicts - with some AIX-specific type definition. Problem reported by - Michael Felt - - 10/27 - ----- -builtins/{set,ulimit}.def - - {set,ulimit}_builtin: make sure that --help is treated the same as - -? and prints a message and returns. Fixes bug reported by ziyunfei - <446240525@qq.com> - -builtins/*.def - - make sure to consistently use builtin_help() instead of mix of that - function and builtin_usage() - - 10/29 - ----- -doc/{bash.1,bashref.texi} - - BASH_CMDS, BASH_ALIASES: note that removing elements from these - array variables is not currently reflected in the command hash - table and alias list, respectively. Reported by isabella parakiss - - - 10/30 - ----- -eval.c - - reader_loop: if PS0 is set in an interactive shell, expand and - display it after reading a (complete) command but before executing - it. This differs from the DEBUG trap because the DEBUG trap is - executed once for each simple command (and some others, like each - time through a for loop). From a patch submitted by Dan Stromberg - - -parse.y - - prompt_again: set ps0_prompt from $PS0 in an interactive shell - -doc/{bash.1,bashref.texi} - - PS0: document new prompt string - - 11/3 - ---- -subst.c - - cond_expand_node: if special > 0, remove quoted nulls from the word - list, since no word splitting takes place. Fixes bug reported by - Corentin Peuvrel - - 11/4 - ---- -doc/{bash.1,builtins.texi} - - inherit_errexit: add to shopt description; modify Posix mode - description - - 11/9 - ---- -lib/readline/util.c - - rl_tilde_expand: fix out-of-bounds read caused when this function - is invoked with rl_point == 0. Bug reported by Hanno Böck - - - 11/11 - ----- -{nojobs,jobs}.c - - get_original_tty_job_signals: force the original signal disposition - for SIGTSTP/SIGTTIN/SIGTTOU to SIG_DFL in interactive shells. This - will force child processes to get SIG_DFL even if the shell is - started with those signals ignored. From a bug report from - Keith Thompson - - 11/13 - ----- -make_cmd.c - - make_function_def: if a function is being defined without a source - file, and the shell has not been initialized, assume that the - function is being imported from the environment and set the - source_file struct member to "environment". Set to "main" if the - shell has been initialized. Fixes bug reported on savannah by - Arno-Can Uestuensoez - https://savannah.gnu.org/support/index.php?108903 - -subst.c - - skip_to_delim: if the shell is in posix mode (posixly_correct != 0) - and performing history expansion ((flags & SD_HISTEXP) != 0), allow - double quotes to quote the history expansion character. TENTATIVE - CHANGE, inspired by - https://savannah.gnu.org/support/index.php?108491 - - 11/14 - ----- -jobs.c - - wait_for: modify change from 4/23 to only give the terminal to - shell_pgrp if not running in the background and subshell_environment - indicates we're not in a pipeline and not an async command. Fixes - bug reported by konsolebox - - 11/16 - ----- -doc/{bash.1,bashref.texi} - - document new posix-mode behavior of not giving ! special meaning - within double quotes, even if histexpand is enabled - - 11/17 - ----- -builtins/evalfile.c - - fc_execute_file: pass FEVAL_BUILTIN flag to _evalfile so it returns - the value of parse_and_execute after executing the commands in the - file. Fixes bug reported by Chris Marusich - - 11/20 - ----- -subst.c - - process_substitute: don't unconditionally set pipeline_pgrp to - shell_pgrp; do that only if pipeline_pgrp == 0 (we haven't forked - yet) or if we know we haven't forked for a command, a pipeline, - or an async command. Fixes bug reported by - - as https://savannah.gnu.org/support/index.php?108593 - - 11/24 - ----- -variables.c - - set_pwd: inherit the value of OLDPWD from the initial environment - if it names a directory. From a report from John Wiersba - - -builtins/set.def - - -T: fix help text to note that the DEBUG and RETURN traps are both - inherited if this is set. Report from Grisha Levin - - -doc/{bash.1,bashref.texi} - - HISTIGNORE,GLOBIGNORE: note that the pattern matching is subject to - the setting of the `extglob' variable. Clarification raised by - Aharon Robbins - -builtins/jobs.def,doc/{bash.1,bashref.texi} - - disown: add text to synopsis making it clear that disown takes a - pid argument. From a report from Matthew Stanfield - - -findcmd.c,doc/{bash.1,bashref.texi} - - EXECIGNORE: change pattern matching to use FNMATCH_EXTFLAG like other - IGNORE variables. From a report from Aharon Robbins - -trap.c - - _run_trap_internal: make sure to catch and use return values supplied - as arguments to `return'; instead of just catching return, make sure - we use return_catch_value as well. Fixes bug reported by - Grisha Levit , affects RETURN, DEBUG, ERROR - traps - - 11/30 - ----- -lib/readline/display.c - - rl_redisplay: fix code that deals with prompts that contain - multibyte characters whose physical length is longer than the screen - width (so the prompt line wraps) to deal with invisible characters - in the prompt and set the inv_lbreaks offsets correctly and set - lpos appropriately - - _rl_move_cursor_relative: always called with either visible line or - invisible line. Decide whether we are being called with the invisible - line (or a portion thereof) as the DATA argument; make sure to account - for invisible characters in the last line of the prompt by offsetting - the desired buffer offset (NEW) by where DATA starts in invisible line - and checking whether that is past the last invisible character in - the prompt - - _rl_move_cursor_relative: do the same for the visible line by using - the visible line lbreaks array instead of _rl_screenwidth, since - that fails in the presence of multibyte characters (buffer offset - vs. physical screen position). These fix bug with prompts with - multibyte characters and invisible characters that are longer than - the screen width reported by Ryo Furue - - 12/1 - ---- -parse.y,make_cmd.c - - here_doc_first_line: new variable, set to non-zero to indicate the - first line of possibly multiple here documents associated with the - current command. Set in parse.y:gather_here_documents() before - reading any here documents, set to 0 after reading the first line - of any here document in make_cmd.c:make_here_document(). - -parse.y - - history_delimiting_chars: if parser_state indicates we are reading - a here document, don't use current_command_line_count to see whether - or not we're on the first line of a here document -- it can be fooled - by multi-line commands (or even backslash-escaped newlines). Use - here_doc_first_line to check that directly. Fixes bug reported by - Geoffrey Allott - -shell.h,parse.y - - save and restore here_doc_first_line as part of the shell's parser - state - -lib/sh/tmpfile.c - - use ANSI-C rand() interface if random() not available. Fixes problem - with linking on (ancient) Solaris 2.4 reported by Klaus Ziegler - - - 12/2 - ---- -aclocal.m4 - - RL_LIB_READLINE_VERSION: if cross-compiling, assume current version - of readline if cross-compiling bash while using an external readline - library. Fix from Barry Davis - -execute_cmd.c - - execute_builtin: save and restore value of builtin_ignoring_errexit - instead of assuming we can set it back to 0 -- the ignore-errexit - cases might be nested - - execute_builtin: after a builtin executes and eval_unwind is set, - set exit_immediately_on_error to 0 if builtin_ignoring_errexit is - set, and back to the value of errexit otherwise, just like the - code that sets -e does. Fixes short-circuiting bug reported by - Marcin Swigon - - 12/5 - ---- -builtins/setattr.def - - set_or_show_attributes: instead of using a fixed string for the - options argument to `declare', which results in export adding the - readonly attribute, build the option string dynamically like in - subst.c:shell_expand_word_list() - - set_or_show_attributes: don't add the -r option to declare if the - attribute passed as an argument doesn't include att_readonly; add - -x if the attribute includes att_exported - - set_or_show_attributes: add the -g option to declare so readonly - and export in functions that go through this code path don't create - local variables. Part of fix for bug reported by ziyunfei - <446240525@qq.com> - -execute_cmd.c - - make_internal_declare: if we have an assignment builtin that isn't - supposed to create local variables (export/readonly), make sure to - add the W_ASSNGLOBAL flag to each assignment statement word. - Part of fix for bug reported by ziyunfei <446240525@qq.com> where - readonly can create local variables when invoked with a compound - array assignment as an argument within a shell function - -subst.c - - make_internal_declare: added third argument: command name. Not used - in any useful way yet - - do_compound_assignment: handle attempted assignments to readonly - variables and print error messages, like bind_variable does and the - callers expect. This means that assignments to readonly array - variables can't go through a code path that allows them to fail - silently - -doc/Makefile.in - - uninstall: run install-info --delete after removing the installed - info file to update the directory file - -execute_cmd.c - - execute_disk_command: since we still (and have always) perform - redirections in child processes, we need to mark that state so - we know that we're in a child process. subshell_performing_redirections - is the new variable; non-zero when executing do_redirections() - -subst.c - - process_substitute: if we are executing process substitution in a - redirection expansion context (expanding_redir == 1), the child - process should not have access to any temporary environment the - parent has. Call flush_tempenv() in the child process to get rid - of it. Fix for bug reported by Clint Hepner - - 12/9 - ---- -jobs.c - - waitchld: if in posix mode and attempting to let SIGCHLD interrupt the - wait builtin, make sure wait_intr_flag is non-zero before trying to - longjmp to wait_intr_buf. Fixes bug reported by Aharon Robbins - - - 12/10 - ----- -lib/readline/display.c - - update_line: if a prompt containing invisible characters changes, - and the change is within the prompt string, we need to redraw the - entire prompt. After that redraw, if the cursor position is after - the first index where the old and new lines differ, we can short- - circuit the update if the line length stays the same - - update_line: if we redraw the entire prompt string because the prompt - contains invisible characters and the first difference is in the - middle of the prompt, we possibly need to adjust our idea of the - first differing character in the old and new lines. We punt and do - a dumb update in this case. Fixes bug with dynamic vi-mode mode - strings containing invisible characters reported by Dylan Cali - - - 12/11 - ----- -lib/readline/display.c - - update_line: if we move up to a new screen line, we need to recompute - the number of invisible characters on the new current line - (visible_wrap_offset). Fixes bug reported to bug-readline by - Per Bothner - - update_line: update code that attempts to compute where we are in - the new line buffer. Fixes `vt100' bug reported to bug-readline by - Per Bothner - - 12/18 - ----- -execute_cmd.c - - execute_function: unwind-protect and restore BASH_ARGC and BASH_ARGV - - restore_funcarray_state: now global - -execute_cmd.h - - make func_array_state type global, add extern function declaration - for restore_funcarray_state - -builtins/evalfile.c - - _evalfile: use restore_funcarray_state and pop_args as unwind-protects - to restore BASH_{SOURCE,LINENO,ARGC,ARGV} and FUNCNAME on interrupts. - Fixes bug reported back on 11/10 by Grisha Levit - - - 12/20 - ----- -lib/readline/isearch.c - - _rl_isearch_dispatch: after removing the only character from the - search string with DEL, leaving the search string empty, don't match - the previous line if we didn't have a match before - - 12/22 - ----- -bashhist.c - - enable_history_list,remember_on_history: initialize to 0 instead of 1 - -shell.c - - init_interactive,init_interactive_script: set enable_history_list and - remember_on_history to 1 (defaults) - - 12/23 - ----- -variables.c - - initialize_shell_variables: don't inherit PS4 from the environment - if the shell is running with euid == 0; just reset it to `+ '. This - is a known potential vulnerability, since PS4 expansion performs - command substitution in the root shell's context before displaying - it. Discussion started by up201407890@alunos.dcc.fc.up.pt - -bashhist.c - - bash_history_reinit: initialize remember_on_history to the value of - enable_history_list (set -o history). Fixes bug reported by - Stephane Chazelas with command-line - option `-o history' not having any effect - - 12/28 - ----- -lib/readline/{history.h,histfile.c} - - history_file_version: new int variable, reserved for future use - - history_multiline_entries: new int variable, can be set by the - calling application to enable reading multi-line history entries - from the history file (currently undocumented) - -lib/readline/history.c - - _hs_append_history_line: new function, append a line passed as an - argument to a specified history entry, used to create multi-line - history entries - -lib/readline/histfile.c - - read_history_range: implement a heuristic that temporarily sets the - history comment character if the first line read from the history - file looks like it has is a timestamp (#[:digit:]) so we can read - timestamps from the history file properly. Originally reported - back in March 2015 by Christoph Anton Mitterer - - read_history_range: make sure history_multiline_entries is non-zero - if the history file looks like it has timestamps - - read_history_range: if we think we have a history file with timestamps - and we read more than one non-timestamp consecutive history lines, - assume they are part of a single multi-line history entry and paste - them together using _hs_append_history_line. Feature most recently - requested by james harvey , also suggested - by Christoph Anton Mitterer - -examples/loadables/setpgid.c - - setpgid: new loadable builtin, originally contributed by Jason - Vas Dias - - 12/29 - ----- -bashhist.c - - bash_history_inhibit_expansion: fix cases where a history expansion - should be skipped because it's in a command or process substitution - but there is another history expansion preceding the substitution - on the command line. Don't let the previous history expansion fool - the function into saying the command substitution history expansion - should be performed - -builtins/evalstring.c - - parse_prologue: always unwind-protect history_expansion_inhibited, - since history expansion can be enabled in non-interactive shells, - and calling eval once in a non-interactive shell inhibits history - expansion forever even if `set -o histexpand' was run before the - eval - -builtins/common.h - - SEVAL_NOHISTEXP: new flag for parse_and_execute/parse_string; means - to not perform history expansion (decouple from SEVAL_NOHIST, which - now means to not remember commands on history); changed all callers - that had SEVAL_NOHIST to have SEVAL_NOHIST|SEVAL_NOHISTEXP - -builtins/evalstring.c - - parse_prologue: instead of calling bash_history_disable, set - remember_on_history to 0 if SEVAL_NOHIST and history_expansion_inhibited - to 1 if SEVAL_NOHISTEXP - - 12/30 - ----- -subst.c - - skip_to_histexp: new function, a stripped-down version of skip_to_delim. - Used to skip to the next unquoted instance of the history expansion - character, handles peculiar quoting and command/process substitution - requirements. Better fix for bug reported by - Zigmund.Ozean@zig-home.localdomain back in January, prompted by report - from Keith Thompson - -bashhist.c - - bash_history_inhibit_expansion: use skip_to_histexp instead of - skip_to_delim - -subst.c - - parameter_brace_expand_rhs: if the rhs of an expansion is "$@" and - IFS is null, we need to separate the (quoted) positional parameters - in the returned word with a space, and mark the word as needing to - be split on spaces (W_SPLITSPACE). Fix for issues reported back in - October 2014 as the result of an austin-group discussion, and just - re-reported by Martijn Dekker - - 1/4/2016 - -------- -execute_cmd.c - - execute_simple_command: if autocd is set, invoke a function named - `cd' if one exists, instead of the shell builtin. Feature requested - by transl8czech@gmail.com - -builtins/mkbuiltins.c - - if a command's short description is the same as its name (e.g., `true'), - don't mark the short doc to be translated. Report and fix from - Benno Schulenberg - - 1/6 - --- -subst.c - - command_substitute,process_substitute: before replacing the file - descriptor underlying stdout (fd 1), make sure to purge any pending - stdio output that hasn't been written successfully, even after a - call to fflush(). Fixes bug reported by cks@cs.toronto.edu - - 1/7 - --- -builtins/{echo,printf}.def - - echo_builtin,printf_builtin: don't use terminate_immediately; use - calls to QUIT in the body of the print loop after writes and flushes. - Fixes problem with running the signal handler and exit trap in a - signal context and other bug reported by cks@cs.toronto.edu - -builtins/common.c - - sh_chkwrite: put in calls to QUIT to catch signals that interrupt - writes - -shell.c - - get_current_user_info: protect endpwent() with #ifdef HAVE_GETPWENT. - Fixes bug reported by pb - - 1/8 - --- -lib/readline/bind.c - - _rl_init_file_error: now a varargs function so it can take format - strings and arguments and pass them to vfprintf - - rl_parse_and_bind: print a warning if we encounter a key binding - string with one or more hyphens but we don't find a valid modifier - (`control', `meta', etc.). Prompted by a report from Andrew Kurn - - - rl_parse_and_bind: improve several existing error messages now that - _rl_init_file_error takes a variable number of arguments - - rl_variable_bind: print error message upon encountering unknown - variable - - 1/10 - ---- -lib/readline/bind.c - - rl_parse_and_bind: if a `bare' keybinding is supplied without any - terminating `:' or whitespace separating it from the command to be - bound, signal an error - - 1/11 - ---- -subst.c - - process_substitute: when compiled without job control (JOB_CONTROL not - defined), make sure we call stop_making_children like we do in the job - control code branch, so already_making_children is reset to 0. This - is what command substitution does. Fixes bug reported by Alastair - Hughes - - 1/12 - ---- -execute_cmd.c - - execute_in_subshell: if a user subshell (`(command)') or other shell - compound command has an input pipe, note for later by setting - stdin_redir. This will inhibit the implicit redirection of standard - input from /dev/null for async commands executed as part of this - subshell. Fixes bug reported by Martin D Kealey - - execute_simple_command: if the shell forks to execute this command - because it has an input pipe, set stdin_redir to inhibit later redirection - from /dev/null for async commands - - 1/13 - ---- -execute_cmd.c - - HASH_BANG_BUFSIZE: use #define for size of buffer used in - READ_SAMPLE_BUF instead of straight constant 80 - - HASH_BANG_BUFSIZ: increase to 128 because Linux allows 128 chars in - exec header. Reported by Ludovic Courtès - -configure.ac - - remove support for purify and purecoverage - - change release level to `rc1' - - 1/15 - ---- -builtins/enable.def - - dyn_load_builtin: fix missing argument to builtin_error if load function - returns an error. Fix from Aharon Robbins - - 1/18 - ---- -builtins/history.def - - histtime: display a better error message for invalid timestamps; use - existing `??' string for empty/missing timestamps or invalid history - entries. Suggestion from Reuben Thomas - - 1/21 - ---- -lib/readline/text.c - - rl_insert: when trying to optimize typeahead, make sure to reset the - key sequence and key sequence length when we read a character that is - not bound to self-insert. Bug report from Geir Hauge - - - 1/25 - ---- -doc/{bash.1,bashref.texi} - - word splitting: add example showing how -d'' is equivalent to -d - after word splitting and null argument removal - - 1/27 - ---- -doc/{bash.1,bashref.texi} - - read: modify description to make it more clear that the line is split - using the same rules as word splitting, and use `delimiters' instead - of `separators', which people read the wrong way - - 2/2 - --- -variables.c - - initialize_shell_variables: allow FUNCNEST to set funcnest_max when - imported from the environment. Inspired by - https://bugzilla.redhat.com/show_bug.cgi?id=1274553 - - 2/11 - ---- -bashhist.c - - bash_history_inhibit_expansion: function should be compiled in only if - BANG_HISTORY is defined. Report from isabella parakiss - - -[bash-4.4-rc1 frozen] - - 2/15 - ---- -lib/readline/text.c - - rl_refresh_line: call rl_redraw_prompt_last_line instead of - rl_forced_update_display to avoid redrawing all lines of a multiline - prompt (overwriting the last line of the multiline prompt in the - process). Report from Hugh Davenport - - 2/18 - ---- -subst.c - - parameter_brace_expand: when processing ${!name[@]}, make sure to - free `name' before returning the list of keys to avoid a memory leak. - Fixes bug reported by Emilio PastorMira - - 2/19 - ---- -trap.c - - free_trap_strings: when freeing the `special' traps (NSIG to BASH_NSIG), - check whether or not the `signal' is trapped, as it would be if the - subshell inherited it (errtrace) and don't free the trap string in that - case. Fixes bug reported by Jan Klötzke - - 2/21 - ---- -lib/sh/netconn.c - - isnetconn: return false if getpeername fails with errno == EBADF. - Bug and fix from Andrew Gregory - -builtins/shopt.def - - parse_bashopts: when reading BASHOPTS from the environment, make - sure to call any set functions associated with a variable, instead - of just setting the value to 1. Report and fix from - Vehlow, Jörg - - 2/22 - ---- -lib/readline/complete.c - - rl_display_match_list: don't bother calling strrchr to check the - return value from printable_part() if rl_filename_completion_desired - is non-zero, since in that case printable_part just returns its - argument. Fixes git completion issue reported by - Dilyan Palauzov - - _rl_colored_completion_prefix: default is now 0, testing is complete - - 2/23 - ---- -variables.c - - assign_hashcmd: if the shell is restricted, reject attempts to add - pathnames containing slashes to the hash table, as the hash builtin - does. Fixes bug reported to savannah by Sylvain Beucler as - https://savannah.gnu.org/support/?108969 - - 2/24 - ---- -subst.c - - NEED_FPURGE_DECL: need it before externs.h included, since fpurge - is now used in this file. Fixes warning reported by Mike - Frysinger - - skip_double_quoted: add missing argument to declaration - -parse.y - - shell_getc: in call to internal_warning, use %lu to print an argument - cast explicitly to unsigned long. Fixes warning reported by Mike - Frysinger - - 2/27 - ---- -parse.y - - decode_prompt_string: quote result of \s expansion in case shell has - been invoked with a pathname like '$(id)'. Inspired by report from - Travis Garrell - - decode_prompt_string: quote result of \h and \H expansions in the - (unlikely) case that the hostname has been changed to something - malicious including a command substitution. From report from - Travis Garrell - -builtins/getopts.def - - getopts_unbind_variable: new static function, just calls unbind_variable - for now. Placeholder for any future work to do something special if - OPTARG is readonly. Based on discussion started by Robert Elz - - -lib/readline/vi_mode.c - - rl_vi_unix_word_rubout: new function, implements ^W as Posix specifies - it for vi mode, using whitespace and punctuation characters as word - boundaries. Prompted by question from Carlos Pita - - -lib/readline/vi_keymap.c - - bind rl_vi_unix_word_rubout to ^W by default in both insert and - command mode - -lib/readline/rltty.c - - _rl_bind_tty_special_chars: if in vi mode, bind the WERASE character - to rl_vi_unix_word_rubout - -lib/readline/funmap.c - - vi-unix-word-rubout is new bindable name for rl_vi_unix_word_rubout - -lib/readline/readline.h - - rl_vi_unix_word_rubout: new extern declaration - - 2/28 - ---- -doc/bash.1 - - document readline blink-matching-paren variable - - document readline completion-display-width variable - - document readline completion-map-case variable - - note that the default value of history-size depends on the value of - the HISTSIZE variable. All from a message from Branden Robinson - - -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - convert-meta: modify the description to note that readline will turn - the default to off if the locale contains eight-bit characters - - input-meta: modify the description to note that readline will turn - the default to on if the locale contains eight-bit characters - - output-meta: modify the description to note that readline will turn - the default to on if the locale contains eight-bit characters. From - a message from Branden Robinson - - 3/6 - --- -examples/loadables/Makefile.in - - install-dev: make installdirs a prerequisite; don't rely on the - install-supported target to create it first. Bug with parallel - install (`make -j 4 install') reported by Chris Staub - - - 3/12 - ---- -lib/readline/display.c: - - rl_clear_visible_line: clear all screen lines occupied by the current - visible readline line. Inspired by report from Lauri Ranta - - -lib/readline/readline.h - - rl_clear_visible_line: extern declaration - -lib/readline/doc/rltech.texi - - rl_clear_visible_line: add documentation - - 3/19 - ---- -findcmd.c - - file_status: add inadvertently-dropped test for EXECIGNORE to the - `other' bits check. The check was in the original patch - - search_for_command: if the file should not be considered executable - because it's in the EXECIGNORE blacklist, don't set file_to_lose_on, - since the attempt to execute the last-ditch path will circumvent the - EXECIGNORE setting. Fixes bug reported by Dennis Williamson - - - 3/28 - ---- -lib/readline/display.c - - rl_redisplay: when computing where the cursor should go (and the - physical cursor position) after displaying the prompt, don't adjust - the cursor position by wadjust if there are no multibyte chars in - the prompt. lpos is already a physical cursor position; _rl_screenwidth - is the physical screen width, and we're not calling _rl_col_width and - don't need to take invisible characters into account again. Fixes - bug reported by Andreas Schwab - - 4/1 - --- -parse.y - - parse_comsub: when we read `esac' followed by a break character, - turn on the LEX_RESWDOK flag because we can now read another case - statement or other compound command. Fixes bug reported by - Christian Franke , original version - of patch from Piotr Grzybowski - - parse_comsub: leave the reserved-word-ok flag set for four-char - reserved words (then/else/elif/done/time) that can be followed by - reserved words; set lex_rwlen to 0 so we know to start reading a - new one - - 4/7 - --- -builtins/{alias,complete,jobs}.def - - {alias,compopt,disown}: add missing `CASE_HELPOPT;' so --help option - prints help longdoc instead of builtin_usage() - - 4/8 - --- -arrayfunc.c - - assign_array_var_from_word_list: use bind_array_var_internal instead - of inline code, so value conversions happen on assignment (case - modification, arithmetic evaluation, etc). Fixes bug reported by - Geir Hauge - - 4/9 - --- -shell.c - - main: change the logic that determines whether or not bash is running - under an emacs terminal emulator so it works with future versions of - emacs, which will change to use only $INSIDE_EMACS. Report and fix - from Paul Eggert - -lib/glob/sm_loop.c - - EXT: if we see ?(pat), we can match 0 or 1 times, so if we don't - match, we should consume the extglob pattern and go on to attempt - to match the rest of the pattern against the string. Fixes bug - reported by Isabella Parakiss - - GMATCH: in case `*', don't short-circuit and match anything if the - * is the last character in the pattern until after we check the - special cases for matching a `.'. Fixes bugs reported back on 3/23 - by Isabella Parakiss - - 4/13 - ---- -bashhist.c - - hc_erasedups: fix memory leak by freeing history entry returned by - remove_history. Bug and fix from Seiichi Ishitsuka - - - 4/19 - ---- -config-top.h - - CD_COMPLAINS: now settable in config-top.h; enables (fatal) error - messages if cd is given multiple directory arguments - - 4/20 - ---- -execute_cmd.c - - coproc_setvars: refuse to create variables with names that are not - valid identifiers. Suggestion from Piotr Grzybowski - - -rltty.c - - rl_tty_set_echoing: interface to set _rl_echoing_p, returning old - value. Inspired by gdb use of _rl_echoing_p when switching - between terminal and curses modes described by Doug Evans - - -bashline.c - - bash_execute_unix_command: use rl_clear_visible_line instead of - erasing current line on the screen, inspired by same report from - 3/12. Still tentative change - -configure.ac - - update release status to rc2, may skip this and go directly to - release - - 4/21 - ---- -arrayfunc.c - - convert_var_to_array: make sure that the newly-converted array - variable is not marked as being an associative array. Fixes bug - reported by Grisha Levit - - convert_var_to_assoc: make sure that the newly-converted associative - array variable is not marked as being an indexed array - - 4/22 - ---- -builtins/evalstring.c - - should_suppress_fork: don't suppress the fork if there are any traps - set, since that requires that we hang around to react to a signal or - collect the command's exit status and run something. Fixes bug - reported by Brian Vandenberg - -histexpand.c - - history_tokenize_word: handle >| as a single token. Fix from - Piotr Grzybowski from a report from - idallen@idallen-fibe.dyndns.org - - 4/24 - ---- -execute_cmd. - - coproc_setvars: don't overwrite readonly variables used as coproc - names. From a report from Grisha Levit - -histexpand.c - - history_tokenize_word: handle strings of digits before redirections - beginning with `<' or `>' as part of the redirection word; handle - strings of digits following `<&' or `>&' as part of the redirection - word. Inspired by patch from Piotr Grzybowski - from a report from idallen@idallen-fibe.dyndns.org - -lib/readline/complete.c - - rl_display_match_list: if the common prefix is longer than any of - the possible matches, set the length of the common prefix to 0 so - the entire match gets printed for each match - - rl_display_match_list: make sure to output at least one space - between each displayed match, even if the displayed length is - longer than our computed max - - fnprint: if the length of the prefix (prefix_bytes) is greater than - or equal to the length of the string to be printed (print_len), make - sure to set the prefix length to 0 so the entire string is printed. - From a report from Grisha Levit - - 4/25 - ---- -subst.c - - command_substitute: update the conditions under which we give the - terminal to pipeline_pgrp with give_terminal_to to the same ones - where wait_for uses to decide whether to give the terminal back to - shell_pgrp. This code exists to undo the work wait_for does; it - has to give the terminal back to pipeline_pgrp only under those - conditions when wait_for gives it back to the shell pgrp. Fix for - bug reported by Paulo Bardes - - 4/26 - ---- -bashline.c - - bash_filename_stat_hook: temporarily disable the `nounset' shell - option around calls to expand_prompt_string so we don't get error - messages during completion. Fixes issue reported by Eric Pruitt - - - 4/27 - ---- -doc/{bash.1,bashref.texi} - - extdebug: clarify that having this option enabled at shell startup - acts identically to --debugger. From a report from Grisha Levit - - -jobs.[ch] - - wait_for_single_pid: now takes additional `int flags' argument - -{jobs,execute_cmd}.c,builtins/wait.def - - wait_for_single_pid: changed callers to add extra argument - -jobs.c - - wait_for_single_pid: if (flags & 1) == 0, don't print the error - message if PID isn't found; changed execute_pipeline call when - lastpipe is set - - 4/28 - ---- -general.c - - bash_tilde_expand: try not setting interrupt_immediately or - terminate_immediately; see what happens with networked password - databases - - 4/29 - ---- -subst.c - - parameter_brace_expand, parameter_brace_expand_rhs: now take an - additional `pflags' argument from its caller so we can pass - state - - parameter_brace_expand_rhs: if expand_string_for_rhs returns a - quoted null, but l_hasdollat is set to 1, meaning we saw a quoted - "$@" of some form, we need to turn off special handling of "$@" - so something like "${@-${@-$@}}" expands to an empty string like - Posix says it should. Fixes bug reported by Grisha Levit - - - 5/1 - --- -variables.c - - bind_variable_internal: if we have a nameref variable with a valid - array reference that is invalid for assignment (e.g., a[*]), and - assign_array_element returns NULL, short-circuit and return NULL. - Fixes bug reported by Grisha Levit - -general.[ch] - - valid_nameref_value: new function, return 1 if passed argument is - a valid variable name argument for a nameref variable: a valid - identifier, a valid array reference, or a valid positional - parameter. Second argument indicates whether the value is to be - used for an assignment; in this case, return an error if the name - consists of all digits - -builtins/declare.def - - declare_internal: disallow values for nameref variables that don't - pass the tests in valid_nameref_value. Part of fix for bug - reported by Grisha Levit - -variables.c - - bind_variable_internal: if trying to assign a value to a nameref - variable, throw an error if valid_nameref_value fails (with a second - argument of 1). More fixes for bug reported by Grisha Levit - - - 5/2 - --- -builtins/declare.def - - declare_internal: don't allow nameref attribute to be applied to an - existing readonly variable; it can be used to circumvent readonly - value. Fix for bug reported by Grisha Levit - -variables.[ch] - - find_variable_last_nameref, find_global_variable_last_nameref: takes - a new flags argument. If flags is non-zero, and we find a nameref - variable that is unset (has no value), return that variable instead - of NULL. - -{variables,execute_cmd,arrayfunc,subst}.c,builtins/{declare,set}.def - - find_variable_last_nameref, find_global_variable_last_nameref: change - callers to add flags argument (initially 0) - - 5/3 - --- -variables.c - - bind_variable_internal: make sure we run the value of a namref - variable through valid_nameref_value before doing the assignment. - This can go away if we stop allowing namerefs to refer to positional - parameters - -execute_cmd.c - - execute_select_command: if bind_variable returns NULL, handle it as - an error, as if attempting assignment to a readonly variable - - execute_for_command: use 1 as second argument to - find_variable_last_nameref, so it will return an invisible nameref - to assign for each variable in the list - - execute_for_command: if the current word in the list is an invalid - identifier and the loop variable is a nameref, handle it as an error, - as if attempting assignment to a readonly variable - - 5/4 - --- -variables.c - - bind_int_variable: add warning if assigning an int to a nameref - variable - - assign_in_env: if assigning a variable in the temporary environment - that is a namref, throw an error if trying to assign an invalid - value - - bind_variable_value: use valid_nameref_value instead of calls to - legal_identifier and valid_array_reference - -execute_cmd.c - - coproc_setvars: if we have a nameref variable as the coproc name, but - it can't be assigned to for some reason, remove the nameref attribute - and issue a warning that we are doing so - - coproc_setvars: don't allow assignment to a nameref variable with an - invalid variable name, using same code as find_or_make_array_variable - -general.c - - valid_nameref_value: disallow values consisting solely of digits, - like the positional parameters - -builtins/declare.def - - declare_internal: don't call valid_nameref_value on the existing value - of a variable that's being converted to a nameref -- that value is - going to be thrown away and we've already checked the new value - - declare_internal: call bind_variable_value with the ASS_NAMEREF flag - if we're assigning to an existing nameref variable (for instance, - `declare -n x ; declare x=42') - - 5/5 - --- -variables.c - - make_local_variable: if we are being asked to create a local copy of - a nameref variable from a prior scope (checked by looking up - using find_variable_noref), use the nameref variable, not the variable - it references (which we find using find_variable). Bug report from - Grisha Levit ; fix by Piotr Grzybowski - - -builtins/declare.def - - declare_internal: if asked to do the same thing as above (difference - is declare -n r=foo in previous case; declare -n r in this one), - don't follow reference var from a previous context. Create a new - local variable (using make_local_variable) and inherit attributes - from previous scope's nameref as above - - 5/6 - --- -builtins/declare.def - - declare_internal: if we are assigning a value to an existing - invisible nameref variable, validate value early so we don't end up - removing the variable after the assignment fails - -builtins/shopt.def - - toggle_shopts: don't call set_bashopts here unless $BASHOPTS exists, - since we don't want to set it up before it gets read from the - environment. Keeping BASHOPTS read-only should keep users from - unsetting it. Fix from Grisha Levit - - shopt_set_debug_mode: make sure error_trace_mode reflects the setting - of extdebug. This one is tentative. Fix from Grisha Levit - - - shopt_set_debug_mode: call set_shellopts after setting error_trace_mode - or function_trace_mode. Fix from Grisha Levit - -shell.c - - start_debugger: make sure that function_trace_mode and error_trace_mode - reflect the value of debugging_mode, so they are both disabled if we - disable debugging mode because we can't find the debugger start file. - Fix from Grisha Levit - - start_debugger: set $SHELLOPTS and $BASHOPTS to the option values are - reflected if we change or set them here. Fix from Grisha Levit - - -builtins/set.def - - reset_shell_options: add reset values for: posix, nolog, pipefail. - Fix from Grisha Levit - -builtins/shopt.def - - reset_shopt_options: add reset values for: autocd, checkjobs, - complete_fullquote, dirspell, failglob, globstar, gnu_errfmt, - huponexit, inherit_errexit, interactive_comments, lastpipe, - no_empty_cmd_completion, progcomp. Fix from Grisha Levit - - - reset_shopt_options: make sure the following options have the right - defaults based on #defines: checkjobs, checkwinsize, direxpand, - extglob, globasciiranges. Fix from Grisha Levit - - -flags.c - - reset_shell_flags: add missing flags, re-initialize history_expansion - based on STRICT_POSIX - - 5/8 - --- -lib/readline/histexpand.c - - history_expand: if any expansion returns 1 from history_expand_internal, - indicating that :p was supplied, make it apply to the entire line - like tcsh and csh. Fixes bug reported by Dean Stanton - - -variables.[ch] - - ifsname: move define to variables.h - -execute_cmd.c - - execute_for_command: check whether or not the word in the for command - is IFS; call setifs every time the variable is assigned a value. - Fixes bug report from Grisha Levit - - 5/16 - ---- -general.c - - valid_nameref_value: explicitly handle name == 0 and *name == 0 right - away to save calls to legal_identifier - -builtins/declare.def - - declare_internal: if trying to set nameref attribute on a variable - with a null value, flag as invalid assignment, just as if running - `declare -n r=""'. Fixes bug report from Grisha Levit - - - declare_internal: when creating a variable with a temporary value - (""), use ASS_FORCE in the assignment flags to bypass name validity - checks on nameref variable names - -variables.c - - bind_variable_internal: don't call valid_nameref_value if we're - forcing assignment with (flags & ASS_FORCE) - -builtins/read.def - - read_builtin: handle bind_variable returning NULL when setting REPLY. - Report and fix from Grisha Levit - -builtins/setattr.def - - set_var_attribute: handle bind_variable returning NULL - -lib/sh/tmpfile.c - - sh_seedrand(): call srandom() to seed the random number generator - - sh_mktmpname, sh_mktmpfd: if we have random(), assume we have - srandom() and seed the random number generator. Still looking for - better value to see random number generator with - -variables.c - - check_unbind_variable: use internal_error instead of builtin_error - -{execute_cmd,variables}.c - - fix some places where bind_variable could return NULL and it was not - checked. Fix from Piotr Grzybowski - - 5/17 - ---- -arrayfunc.c - - convert_var_to_{array,assoc}: make sure to turn off nameref attribute, - since namerefs can't be arrays - -execute_cmd.c - - coproc_setvars: if the coproc name names a nameref, resolve the - nameref and use it as the name of the coproc. Suggested by Grisha - Levit - -subst.c - - command_substitute: don't bother calling QUIT after calling - reset_signal_handlers in the child, kill the child with SIGINT in - case we just reset the signal handler to SIG_DFL and we should just - exit instead of throwing to top level. Fixes bug reported by - Grisha Levit - - 5/18 - ---- -variables.c - - find_variable_nameref_for_create: find a nameref variable whose value - doesn't resolve to an existing variable and see whether or not that - value is appropriate for a new variable to be created - - find_variable_nameref_for_assignment: find a nameref variable whose - value doesn't resolve to an existing variable and see whether or not - that value is appropriate for a new variable to be created. - Difference between _assignment and _create is that _assignment - allows the nameref value to be a subscripted array reference - -builtins/setattr.def - - set_var_attribute: if variable lookup doesn't return anything, check - for a nameref and make sure that any reference value is something we - should be working on here, using find_variable_nameref_for_create(). - If it fails, error out and return, otherwise it's probably a reference - to a variable that hasn't been set yet, so let bind_variable take care - of that. Report from Grisha Levit - -arrayfunc.c - - bind_array_variable: if find_shell_variable returns NULL, check for a - nameref using find_variable_nameref_for_create and create a new array - variable with the value if it returns a valid nameref variable. - Makes `unset var; declare -n ref=var ; ref[0]=foo' work right. - Report from Grisha Levit - - 5/19 - ---- -variables.[ch] - - unbind_variable_noref: unset a variable NAME without following any - nameref chain. If the first instance of the variable with that name - is a nameref, just unset that nameref variable. - -builtins/getopts.def - - getopts_unbind_variable: if OPTARG is going to be unbound, use - unbind_variable_noref to unbind that name even if it is a nameref - variable. Issue raised by Grisha Levit - -execute_cmd.c - - coproc_unsetvars: use unbind_variable_noref in case someone sets the - coproc _PID variable as a nameref pointing to something read-only or - strange. Issue raised by Grisha Levit - -builtins/set.def - - set_ignoreeof: use unbind_variable_noref to unset "IGNOREEOF" and - "ignoreeof" - - set_posix_mode: use unbind_variable_noref to unset "POSIXLY_CORRECT" - -variables.c - - make_vers_array: use unbind_variable_noref to unset "BASH_VERSINFO" - -lib/sh/shmatch.c - - sh_regmatch: use unbind_variable_noref to unset "BASH_REMATCH" - -bashline.c - - bash_execute_unix_command: use check_unbind_variable to unset - READLINE_LINE and READLINE_POINT - -pcomplete.c - - unbind_compfunc_variables: use unbind_variable_noref to unset - COMP_LINE, COMP_POINT, COMP_WORDS, COMP_CWORD, COMP_TYPE, COMP_KEY - - gen_shell_function_matches: use unbind_variable_noref to unset - COMPREPLY - -config-top.h - - USE_MKTEMP/USE_MKSTEMP: define by default to use libc version of - mktemp and mkstemp in lib/sh/tmpfile.c. Recommended by Mike - Frysinger to fix a FreeBSD problem - -configure.ac,config.h.in - - mkstemp: check for mkstemp, define HAVE_MKSTEMP if available - -config-bot.h - - USE_MKSTEMP: #undef if HAVE_MKSTEMP not defined - - 5/22 - ---- -variables.c - - assign_in_env: if appending to a variable's value, make sure we call - make_variable_value with the empty string if expand_assignment_string_to_string - returns NULL, as do_assignment_internal does. Fixes bug with - `str=''; val=foo ; val+=str printenv val' reported by Grisha Levit - - - assign_in_env: if assigning to a nameref variable in the temporary - environment, and the nameref has a valid value for assignment (even - if the target variable is not set), resolve the nameref and create - a variable in the temporary environment named by the nameref's value. - If the nameref variable is invisible or isn't set to a valid value - for assignment, just create a regular temporary variable with the - nameref's name. This provides a degree of ksh93 compatibility. - Suggested by Grisha Levit - - find_variable_nameref_context,find_variable_last_nameref_context: - instead of returning NULL when detecting a loop, return a - distinguished value: &nameref_maxloop_value - - bind_variable: catch nameref_maxloop_value so we can do different - things based on whether or not we get it. Right now we don't do - anything different, but we could - - 5/24 - ---- -lib/readline/display.c - - update_line,_rl_move_cursor_relative: save value of MB_CUR_MAX in a - variable and use it throughout the functions instead of recomputing it - every time (which possibly costs a function call) - - 5/25 - ---- -builtins/declare.def - - declare_internal: only check whether the value being assigned to a - nameref variable is a valid identifier if we're not appending to an - existing value. Suggested by Grisha Levit - - declare_internal: add a couple of more checks on nameref names: - o make sure `declare -n x[3]=y' is an error - o nameref variable self-references now produce a warning when - in function scope - o nameref variable self-references using subscripted arrays - (a=a[0]) now produce warnings at function scope and errors at - global scope - - 5/29 - ---- -builtins/declare.def - - declare_internal: use name of readonly variable when calling sh_readonly - instead of name passed as argument to declare in case we've followed - a nameref chain - - declare_internal: when turning off attributes on a nameref variable - after following the nameref chain and turning them off on the target - variable, don't allow the readonly attribute to be removed. This is - primarily intended to turn off the nameref attribute. Issue pointed - out by Grisha Levit - - declare_internal: if we are attempting to modify an existing global - nameref variable, and the -n option is supplied, operate on the - nameref variable itself, not the variable it references - -doc/{bash.1,bashref.texi} - - change the descriptions of namerefs and declare -n slightly to note - that using the -n option to declare will operate on the nameref - variable itself rather than the variable it references - -variables.c - - bind_variable_internal: if trying to assign to a read-only variable, - print the error message using the variable's name instead of the - name passed to bind_variable in case we followed a nameref - -builtins/declare.def - - declare_internal: when we're creating a (possibly invisible) variable - as part of another operation, assigning NULL, make sure to use - ASS_FORCE to avoid warning messages from any existing nameref - variables we follow - - declare_internal: allow the nameref attribute to be removed from a - readonly nameref variable without a value but do not allow it to be - removed from a readonly nameref variable that has a value, even if it - doesn't reference an existing variable. This distinction is for ksh93 - compatibility. Pointed out by Grisha Levit - - 5/31 - ---- -builtins/declare.def - - declare_internal: if the call to bind_variable_value fails for some - reason, make sure to restore the nameref attribute to flags_on and - flags_off before calling NEXT_VARIABLE - -subst.c - - make_internal_declare: handle += append op - - shell_expand_word_list: when transforming assignment statement - arguments to `declare', make sure to handle += append op to avoid - passing invalid identifiers to declare. Report by Grisha Levit - - - 6/1 - --- -builtins/declare.def - - declare_internal: if a nameref assignment fails, only call delete_var - to delete the variable if we created it in declare_internal in the - first place - -general.c - - check_selfref: new function, checks a NAME against a VALUE for nameref - self-reference - -general.h - - check_selfref: extern declaration - -builtins/declare.def - - declare_internal: call check_selfref to determine whether a given NAME - and VALUE constitute an invalid nameref variable self-reference - -variables.c - - bind_variable_internal: call check_selfref to determine whether a - given NAME and VALUE constitute an invalid nameref variable self- - reference - - 6/2 - --- -parse.y - - clear_shell_input_line: new function, clears contents of shell_input_line - and sets index to 0, but doesn't free it - -externs.h - - clear_shell_input_line: extern declaration - -builtins/evalstring.c - - parse_and_execute: call clear_shell_input_line after setting input to - string to be executed. Fixes problem with command substitution and - multi-line aliases reported by Grisha Levit - -eval.c - - parse_command: only execute PROMPT_COMMAND if the shell is not - currently expanding an alias; use the same tests as parse.y:SHOULD_PROMPT - and parse.y:prompt_again() use to decide whether or not to print a - prompt. Fixes problems with PROMPT_COMMAND and multi-line aliases - reported by Grisha Levit - -builtins/set.def - - unset_builtin: changes to fix three problems reported by Grisha - Levit : - o if -n is supplied, we should not try to unset a function if - a variable isn't found - o unsetting namerefs whose values are array references does - not work - o unset -n n[0], where n is a nameref, would unset the - referenced variable instead of `n' - -redir.c - - redir_varvalue: handle case where nameref var points to subscripted - array reference. Reported by Grisha Levit - -variables.c - - bind_variable_value: make sure to call check_selfref only if aflags - includes ASS_NAMEREF and not ASS_FORCE. Reported by Grisha Levit - - -general.c - - valid_nameref_value: now understands a FLAGS value of 2 to mean that - the name will be used to create a variable, so only legal_identifier - matters - -arrayfunc.c - - find_or_make_array_variable: call valid_nameref_value with FLAGS value - of 2 to indicate we will be creating a variable. Fixes mapfile issue - reported by Grisha Levit - - 6/5 - --- -builtins/declare.def - - declare_internal: only pass ASS_FORCE as part of assignment flags to - assignments concerning arrays - - declare_internal: when at the global scope, if we resolve a nameref - and commit to using the new name, go back to to the beginning of the - loop and use the new name in the checks and variable references. - Make sure we construct the new name as a straight substitution of - the nameref value into the old name, including array subscripts and - rebuilding the correct values for `offset' and `value', since they - are relative to the original value of name. - Fixes several issues with checking use of subscripted array variables - as nameref values - - declare_internal: when calling assign_array_element, make sure to - pass ASS_APPEND if aflags includes it, so things like - declare -a var; var[1]=1; declare var[1]+=4 - append to the value appropriately and var[1] ends up being `14' - -arrayfunc.c - - valid_array_reference: make sure the array reference is properly - terminated after the first subscript; return invalid if there is - anything following the closing `]' - - 6/12 - ---- -variables.c - - bind_variable_internal: if asked to perform an array subscript - assignment on a nameref variable, display a warning and remove the - nameref attribute (as bash-4.3 did). Reported by Dan Douglas - - - 6/14 - ---- -test.c - - posixtest: handle four-argument case where argv[1] == '(' and - argv[4] == ')' by performing two-argument test on $2 and $3. - Reported by Joerg Schilling - - 6/15 - ---- -variables.c - - sv_ignoreeof: make sure ignoreeof is set only if IGNOREEOF is set and - has a value (no `local IGNOREEOF'). Reported by Grisha Levit - - - sv_strict_posix: make sure posixly_correct is set only if - POSIXLY_CORRECT is set and has a value. Reported by Grisha Levit - - - 6/16 - ---- -builtins/declare.def - - declare_internal: analogous to 6/12 change; when performing an array - subscript assignment on a nameref, display a warning, remove the - nameref attribute, and go on - - 6/21 - ---- -execute_cmd.c - - shell_execve: make sure errno is (re)set appropriately before - returning error value on exec format error - - 6/23 - ---- -subst.c - - param_expand: when expanding $* in a context where splitting is not - desired (pflags & PF_ASSIGNRHS), make sure to quote the word and the - included separators. Reported by Dan Douglas - - 6/30 - ---- -configure.ac - - release version is now `beta2' - -execute_cmd.c - - execute_simple_command: even if already_making_children is non-zero, - don't call wait_for if last_made_pid == NO_PID. Indirectly inspired - by report from Nicolas Vivet - - 7/2 - --- -subst.c - - expand_word_internal: when adding an IFS character to the accumulated - string, don't quote it if word expansion is not going to be - performed ((word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0) in the - default case. This was already the case everwhere else, when we did - `goto add_ifs_character;'. Fixes bug reported by Ibrahim M. Ghazal - - -subst.[ch],arrayfunc.c - - string_list_dollar_at: now takes a new third argument, currently - reserved for future use; changed callers and declaration - - 7/7 - --- -[bash-4.4-beta2 frozen] - - 7/9 - --- -bashline.c - - check_redir: make sure that index is > 0 before checking previous - char; fixes out of bounds read reported by Hanno Böck - - - 7/16 - ---- -subst.c - - parameter_brace_expand: if ${array[@]} or ${array[*]} is supplied - with an unset (or empty) array, and -u is enabled, don't make it - an unbound variable error, like $@ or $* when there are no - positional parameters. Based on report from Ian Allen - - -lib/readline/signals.c - - rl_pending_signal(): return the number of any signal readline has - caught but is waiting to handle - -lib/readline/callback.c - - rl_persistent_signal_handlers: new variable, restores readline-6.2 - signal handler semantics: installed at rl_callback_handler_install - time and removed with rl_clear_signals when a complete line has - been read - - _rl_callback_newline: call rl_set_signals if rl_persistent_signal_handlers - is non-zero - - rl_callback_read_char: install signal handlers with rl_set_signals - if rl_persistent_signal_handlers is 0 (the default) - - CALLBACK_READ_RETURN: uninstall signal handlers with rl_clear_signals - only if rl_persistent_signal_handlers is 0 (the default) - -lib/readline/readline.h - - rl_pending_signal: new extern declaration - - rl_persistent_signal_handlers: new extern declaration - - 7/19 - ---- -execute_cmd.c - - execute_while_or_until: make sure we decrement `continuing' the way - we decrement `breaking' if the loop test indicates we will be - breaking out of the loop. That keeps `until continue' from - keeping `continuing' set to 1. Reported by Dan Douglas - - - 7/20 - ---- -trap.c - - run_pending_traps,_run_trap_internal: save and restore temporary_env, - set temporary_env to 0 before trap runs so traps don't inherit a - command's temporary env. Fixes bug with IFS assignment in tempenv - and trap reported by Andriy Martynets - -jobs.c - - run_sigchld_trap: save and restore temporary_env, set temporary_env - to 0 before trap runs so traps don't inherit a command's temporary - env (see above) - - 7/21 - ---- -execute_cmd.c - - execute_function: unwind-protect function_line_number, in case we - are executing a function inside another function. Reported by - Grisha Levit in context of evaled functions - and DEBUG traps - - execute_arith_for_command,execute_arith_command,execute_simple_command, - execute_cond_command: make sure line_number doesn't go < 0 when - adjusting it by function_line_number - - 7/23 - ---- -subst.c,command.h - - move the PF_ constants to command.h so other files can see them, now - that PF_ASSIGNRHS has meaning to string_list_dollar_at - -arrayfunc.h - - AV_ASSIGNRHS: new flag, indicate that ${a[@]} is being expanded on - the RHS of an assignment statement - -arrayfunc.c - - array_value_internal: if AV_ASSIGNRHS passed for ${a[@]}, pass - PF_ASSIGNRHS to string_list_dollar_at to support args separated by - spaces even if $IFS does not have the default value. Reported by - Dan Douglas - -subst.c - - string_list_dollar_at: if FLAGS argument includes PF_ASSIGNRHS, obey - rules for $@ on the RHS of an assignment statement: expand to - postitional parameters separated by spaces no matter what the first - character of $IFS is. Reported by Dan Douglas - - parameter_brace_expand_word: pass AV_ASSIGNRHS as flags value to - array_value if PF_ASSIGNRHS is set and we are expanding an array - variable subscripted by @ or * - - param_expand: pass pflags to string_list_dollar_at in case it contains - PF_ASSIGNRHS - - expand_word_internal: if we have an assignment statement argument to - a declaration builtin (W_ASSIGNARG), turn on W_ASSIGNRHS when we see - the `=' to enable special $@ behavior - - expand_word_internal: if W_ASSIGNARG enabled in word flags, pass that - flag and W_ASSIGNRHS to recursive call to expand_word_internal when - expanding double-quoted string; handles "$@" when IFS is not the - default value and word splitting will not be performed - -subst.c - - expand_word_internal: change case that handles '' (single-quoted - empty string) to only discard it if we will not be performing word - splitting (W_NOSPLIT|W_NOSPLIT2), since we need to add a quoted null - argument if the subsequent characters will cause word splitting. - This is how "" (double-quoted empty string) is handled after a bug - fix back in August 2010. Reported by Grisha Levit - , fix for Posix interp 888 - - 7/27 - ---- -subst.c - - param_expand: change fix from 6/23 (expanding $* in a context where - word splitting is not performed) to make sure that $* expands to - something before trying to quote the string. Bug and fix from - Andreas Schwab - -lib/readline/bind.c - - _rl_get_string_variable_value: fix a cut-and-paste error that caused - the emacs mode string to be displayed for both vi insert and command - mode strings. Report and fix from Steve Jones - - 7/28 - ---- -lib/readline/display.c - - update_line: we can't use PROMPT_ENDING_INDEX unless we're testing - against _rl_last_c_pos; if we are testing buffer indices, we need to - use prompt_last_invisible directly. Fixes mode string redisplay issue - with short prompt strings reported by Steve Jones - - 8/4 - --- -nojobs.c - - without_job_control: new function, resets child state that's - eventually used to decide whether or not to wait_for children - -execute_cmd.c - - initialize_subshell: call without_job_control in both the - JOB_CONTROL and no job control paths so we can reset the state in - subshells that will not cause them to wait_for children - inappropriately. Fixes bug reported by Dan Cross - - 8/5 - --- -configure.ac - - release version is now `rc2' - -bashline.c - - command_word_completion_function: if direxpand is set, make sure to - run hint_text through bash_directory_completion_hook, since - readline will do that and we want to be able to match the results - readline returns. Fixes bug reported by Pat Somaru - - -command.h - - W_COMPLETE: new flag word value - - PF_COMPLETE: new flags value for param_expand - -subst.h - - SX_STRIPDQ: new flag, used for string_extract_double_quoted - -bashline.c - - bash_filename_stat_hook,bash_directory_completion_hook: pass W_COMPLETE - flag to expand_prompt_string - -subst.c - - expand_word_internal: if W_COMPLETE in word->flags, pass PF_COMPLETE - to param_expand - - param_expand: if PF_COMPLETE in pflags, pass SX_COMPLETE to - extract_command_subst. This allows `"$(echo ~/' to perform - completion successfully - - string_extract_double_quoted: turn third argument into a flags arg, - old STRIPDQ is now set if flags&SX_STRIPDQ - - string_extract_double_quoted: changed callers, if third argument was - 1, pass SX_STRIPDQ instead - - expand_word_internal: if W_COMPLETE in word->flags, pass SX_COMPLETE - in flags to string_extract_double_quoted for case '"' - - string_extract_double_quoted: if SX_COMPLETE in flags, pass it to - extract_command_subst - - expand_word_internal: if W_COMPLETE in word->flags, make sure W_COMPLETE - is in temp word passed to recursive call to expand_word_internal to - expand double-quoted string. Fixes bug reported by John Passaro - - - 8/9 - --- -[bash-4.4-rc2 frozen] - - 8/10 - ---- -subst.c - - sub_append_string: use size_t variable to store string length to - avoid integer overflow. Report from Siteshwar Vashisht - - - sub_append_string: `size' argument is now pointer to size_t; changed - istring_index in expand_word_internal to accommodate change - -lib/sh/ufuncs.c - - include "posixselect.h" if HAVE_SELECT is defined, make sure that - fd_set and the rest are defined - - 8/11 - ---- -lib/readline/histexpand.c - - history_tokenize_word: use ISDIGIT instead of isdigit for more - argument checking - - "chardefs.h": include for ISDIGIT define and . Fix from - Mike Frysinger - -lib/sh/eaccess.c,externs.h - - sh_eaccess: first argument now const char * - - sh_stataccess,sh_euidaccess: first argument now const char *, since - sh_stat and sh_eaccess call them. - Fix from Mike Frysinger - -lib/glob/glob.c - - sh_eaccess: change local prototype - -general.[ch] - - all_digits,legal_identifier,valid_nameref_value,importable_function_name, - exportable_function_name,check_binary_file,file_exists,file_isdir, - file_iswdir,same_file,make_absolute,valid_nameref_value: first - argument (always identifier or filename) is now a `const char *'; - some second filename arguments now `const char *'. - Fix from Mike Frysinger - -configure.ac,config.h.in - - uintptr_t: make sure it's defined to an integer type wide enough to - hold a pointer - -lib/sh/tmpfile.c - - sh_seedrand: use `uintptr_t' to cast pointer value to int value, - instead of allowing truncation to take place, since srandom takes - an `unsigned int'. - Fix from Mike Frysinger - -arrayfunc.[ch] - - valid_array_reference,array_variable_name,array_variable_part, - array_value_internal,array_value,get_array_value: first argument - (always variable name) now a `const char *' - Fix from Mike Frysinger - - 8/19 - ---- -print_cmd.c - - xtrace_print_word_list: if (xtflags & 2), don't try to quote the - words in the LIST argument. Intended to be used in places where - the list has not yet been expanded - - xtrace_print_for_command_head: call xtrace_print_word_list with - flags argument of 2. Fixes issue reported by Aharon Robbins - - - xtrace_print_select_command_head: call xtrace_print_word_list with - flags argument of 2 - - 8/21 - ---- -lib/sh/netopen.c - - netopen: fix memory leak by freeing allocated path before error - return. Fix from Dmitry Goncharov - -doc/{bash.1,bashref.texi} - - change conditional commands description to make it clearer that - bash doesn't emulate /dev/fd if the OS provides it - - 8/22 - ---- -braces.c - - expand_amble: free partial and tem on failure to allocate memory - for merged partial+result strvec. Fix from Dmitry Goncharov - - - 8/23 - ---- -jobs.c - - wait_for: don't call get_tty_state when a job finishes if we're - running it as part of programmable completion. We test - rl_readline_state. Fixes bug reported by Jaro Punta - - - 8/24 - ---- -subst.c - - pat_subst: fix memory leak (mstr). Fix from Dmitry Goncharov - - - split_at_delims: fix memory leak (d2). Fix from Dmitry Goncharov - - - 8/26 - ---- -subst.c - - match_upattern,match_wpattern: make sure that a trailing `*' is - not escaped (preceded by an odd number of backslashes) before we - append a `*' when checking whether a pattern matches anywhere in - the string - -lib/readline/{input,signals}.c - - protect instances of SIGQUIT with #ifdef SIGQUIT; apparently - MinGW doesn't define it - - protect instances of SIGHUP with #ifdef SIGHUP; apparently - MinGW doesn't define it. From a report from Simon Sobisch - - -xmalloc.o - - allocerr: only try to find the break and report it if we're using - the bash malloc; there's no guarantee that any other malloc is - using sbrk() - -doc/{bash.1,bashref.texi} - - quote removal: add paragraph mentioning quote removal to beginning - of expansions section, referencing later paragraph. Report from - Michel Lanne - - 8/30 - ---- -lib/readline/input.c - - protect instances of SIGALRM and SIGWINCH with #ifdef; apparently - MinGW doesn't define them. From a report from Simon Sobisch - - -subst.c - - SPECIAL_VAR: make sure name is not the empty string before going on, - empty strings can result in unitialized reads - - CHECK_STRING_OVERRUN: semi-general macro to use in *extract* and - similar functions to to check whether a function called to parse an - embedded construct (like a backquoted command substitution) doesn't - consume the entire string because it's unterminated - - skip_double_quoted: make sure other extraction functions don't - consume the entire string (which they can if the construct is - unterminated) before incrementing the index and going on. Uses - CHECK_STRING_OVERRUN - - extract_dollar_brace_string: check for unterminated embedded - constructs consuming the entire string with CHECK_STRING_OVERRUN ('`') - - skip_matched_pair: use CHECK_STRING_OVERRUN to make sure unterminated - embedded "`", $(, ${ don't cause out-of-bounds reads - -parse.y - - parse_comsub: when parsing a here-document delimiter, make sure we - don't try to use `nestret' after freeing it. Fixes bug reported by - Franco Costantini - -[bash-4.4 frozen] - - 9/10 - ---- -trap.c - - run_debug_trap: only give the terminal to pipeline_pgrp if - subshell_environment doesn't include SUBSHELL_ASYNC|SUBSHELL_PIPE. - Fixes bug reported by Matthew Giassa - -execute_cmd.c - - execute_simple_command: if user_subshell is set, check and set - SUBSHELL_ASYNC if asynchronous is set as well as setting - SUBSHELL_PAREN - - 9/17 - ---- -builtins/common.c - - display_signal_list: if 0 is supplied as an argument to kill -l, - display a signal-out-of-range error. Fixes bug reported by - Martijn Dekker - - 9/18 - ---- -print_cmd.c - - print_heredoc_bodies: take a list of redirections, all here documents, - and print the here-document bodies including the ending delimiter, - followed by a newline - - print_redirection_list: print the heredoc headers the first time - through the list of redirections so we print them in the same left- - to-right order they're supplied; print the bodies and delimiters with - print_heredoc_bodies after we print all the redirections if we're - not printing a list of commands (printing_connection == 0). Fix for - problem reported by Isabella Parakiss - - print_deferred_heredocs: don't print heredoc headers, since they're - now printed in print_redirection_list - - print_deferred_heredocs: use print_heredoc_bodies - - 9/20 - ---- -builtins/mapfile.def - - readarray: update usage synopsis to include -d delim. Report and - fix from jhankins@homewood.k12.al.us - -test.c - - test_binop: if op[0] == '-', make sure op[1] != 0 before checking - op[2] or op[3]. Fixes out-of-bounds read reported by Franco - Costantini - -parse.y - - cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0 - before checking word[2] and calling test_unop. Fixes out-of-bounds - read reported by Franco Costantini - - make sure to check all instances of the return value of the - simple_command production before trying to hook redirections onto it, - since it can potentially return NULL. - Reported by Franco Costantini - - 9/21 - ---- -parse.y - - token_is_assignment: make sure to check that the return value from - assignment() finds the `=' we just added at index I to avoid false - positives from g=g=g=g=g=g=(). Reported by Franco Costantini - - - 9/22 - ---- -parse.y - - token_is_assignment: if we're not using the bash malloc (which has - guard bytes after the requested allocation size), use a new - buffer so we can make sure it's big enough to hold the current - token and at least two additional characters. Reported by - Franco Costantini - - 9/23 - ---- -execute_command.c - - execute_in_subshell: call without_job_control for both job control - and non-job-control builds to avoid waiting for last_made_pid - inherited from parent shell. Related to fix from 8/4 to - initialize_subshell. Fixes bug reported by Martijn Dekker - - -builtins/declare.def - - local_builtin: allow `local --help' to work even when not executing - a function. Suggestion from Norm Abramovitz - - 9/25 - ---- -builtins/printf.def - - bexpand: if passed a null or empty string, return a newly-allocated - empty string (so the return value can always be freed) instead of - NULL. - - printstr: if passed a null string, treat it as if it were an empty - string so any precision or fieldwidth arguments are handled - correctly. Report from isabella parakiss - -subst.c - - skip_matched_pair: make the flags argument of 1 affect whether or - not backslash can quote characters in the string, so it affects - all quoting mechanisms - -arrayfunc.c - - unbind_array_element: now takes a third (flags) argument; flags&1 - means to not expand an associative array index. This is only called - from a shell builtin context, which means the argument should have - already undergone word expansion, so it should be ok. Will still - be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid - globbing - - valid_array_reference: pass second flags argument to skipsubscript; - still set to 0 by all callers - -arrayfunc.h - - unbind_array_element: updated prototype - -builtins/set.def - - unset_builtin: add third argument of 1 to unbind_array_element calls - [TEMPORARILY DISABLED] - - unset_builtin: call valid_array_reference with second arg of 1 to - handle unmatched pairs of quotes and [/] - -array.c - - array_reference: optimize access locality as well as sequential - access by adding ability to start from last-accessed element and move - backwards or forwards depending on the desired index. Inspired by - report from Tom McCurdy and followup from - Christian Franke - -variables.c - - all_array_variables: include associative arrays, not just indexed - arrays. Reported by Grisha Levit - -execute_cmd.c - - execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK), - decrement the shell level so we don't end up incrementing it twice. - We should decrement the shell level for an implicit exec like an - explicit one. Reported by Stephane Chazelas - - -builtins/exec.def - - exec_builtin: don't bother to decrement the shell level if we are - already in a `(command)' subshell. Reported by Stephane Chazelas - - -lib/readline/macro.c - - macro_level: count of macro nesting level, maintained by - _rl_push_executing_macro and _rl_pop_executing macro - - _rl_with_macro_input: if current nesting level exceeds - MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal - and return to the top level. Reported by Christian Klomp - - -lib/readine/history.c - - add_history: if allocating the history list for the first time, - make sure the max history list size isn't so large that it will - cause allocation errors. Cap it at MAX_HISTORY_INITIAL_SIZE - (8192). Reported by Sean Zha - -jobs.c - - wait_for: if a foreground job with job control enabled is killed by a - SIGINT and sourcelevel != 0, act as if we received the SIGINT so the - file sourcing can be terminated. Reported by PePa - - - 9/26 - ---- -subst.c - - read_comsub: only warn once for null bytes in command substitution - output, instead of once for every null byte - -arrayfunc.c - - array_variable_part: now takes a `flags' argument; changed all callers - to initially pass 0 - - array_variable_name: now takes a `flags' argument; changed all callers - to initially pass 0 - - array_variable_name: pass `flags' argument to skipsubscript instead - of just passing 0 - -arrayfunc.h - - array_variable_{name,part}: added new argument to prototypes - - 9/29 - ---- -bashline.c - - bash_directory_completion_hook: don't bother to try and expand a - ${ or $( that isn't complete; expand_prompt_string will complain. - Fixes reports from John Passaro and - Valentin Bajrami - -lib/readline/history.c - - _hs_append_history_line: use a strategy that attempts to avoid - realloc copying memory to a newly-allocated block if the history - line we're appending to gets `too long' (currently 256 bytes). - We reallocate in powers of 2 starting at 512, and rely on realloc - not allocating a new block and copying into it if the size is the - same as the last call to realloc. Addresses issue raised by - Hubert Schmid - -trap.h - - check_signals: new extern declaration - - trapped_signal_received: new extern declaration - -builtins/read.def - - read_builtin: if one of the zread* functions returns < 0 (which - usually only happens in Posix mode), make sure we call check_signals() - before eventually calling run_pending_traps() because zread() isn't - going to call it - - include trap.h for correct extern functions and variable declarations - -lib/sh/zread.c - - zread: if executing a builtin, call check_signals_and_traps() for - backwards compatibility. If not, call check_signals() only, because - we don't want to run traps during, for instance, reading command - substitution output. Fixes race condition bug reported by Luiz Angelo - Daros de Luca - - 9/30 - ---- -subst.c - - command_substitute: reset parse_and_execute_level to 0 in the child - process, since it's independent of the other parse_and_execute - calls. Adds command substitution inside other parse_and_execute - calls optimizations to suppress forks, as suggested by - Martijn Dekker - - 10/3 - ---- -configure.ac - - SHOBJ_STATUS: make sure it defaults to unsupported and is substituted - if the shobj-conf script isn't run. Fixes `make install' bug with - a minimal config reported by Andrew Tomazos - - 10/5 - ---- -support/shobj-conf - - darwin: set compatibility_version for a shared build of the readline - library (the standalone readline distribution shares this file) to - $(SHLIB_MAJOR)$(SHLIB_MINOR). Recommendation from Max Horn - - - 10/6 - ---- -array.h - - array_first_index: new convenience define - -array.c - - ADD_AFTER: new define, complement of ADD_BEFORE - - UNSET_LASTREF: now takes an array as an argument, prepping for move - of lastref pointer into the array struct - - array_insert: check whether we are adding at the beginning of the - array and take a fast path if so - - array_insert: use same strategy as array_reference to find the place - to insert, starting from the last-referenced element and moving - forward or back from there; use ADD_AFTER if moving backward - - array_insert: if replacing an existing element, just replace the - value with new->value instead of the entire element - - array_reference: short-circuit quickly if looking for an element - before the first assigned index - - array_reference: if we don't find the element, leave lastref pointing - to the closest element under the assumption we will be assigning or - looking for something close - - array_reference: take advantage of ordered indexes to short-circuit - when looking for element that is not set - - 10/7 - ---- -array.c - - array_remove: short-circuit if asked to remove index after max - index or before first index - - 10/10 - ----- -lib/malloc/malloc.c - - internal_realloc: if we are requesting reallocation to the same size - as the block's current size, short-circuit and return `mem' right - after doing bounds check - - internal_realloc: if we are reducing the size of an allocation, and - the new size fits in the next lower bin, just keep the same block - and adjust the size, so we can avoid some copies - -parse.y - - set_line_mbstate: keep track of the allocated size of - shell_input_line_property, only request reallocation if the size - increases, but don't let it get too big - - 10/11 - ----- -jobs.c - - wait_for_background_pids: make sure we wait for pid in - last_procsub_child since it's not found in any job -- still needs - more work to wait for multiple process substitutions - -subst.c - - process_substitute: if make_child fails, make sure we call - restore_pipeline to undo the previous save_pipeline() - - 10/15 - ----- -subst.c - - process_substitute,command_substitute: leave subshell_level (reflected - as $BASH_SUBSHELL) intact for any exit trap instead of decrementing - it. Suggested by Martijn Dekker - -builtins/evalstring.c - - optimize_subshell_command: new function, framework for optimizing - out forks for command that have already forked and are executing - in a subshell. Not used yet - -expr.c - - readtok: if we have a post-increment or post-decrement, and the - previous token is not a string, check whether the previous token is - a number that results from a pre-increment or pre-decrement, and - make that an error. Report from Conrad Hoffmann - - 10/16 - ----- -aclocal.m4 - - BASH_JOB_CONTROL_MISSING: convert from AC_TRY_RUN to AC_TRY_COMPILE - with existing set of preprocessor defines, so it can work when - cross-compiling. Suggested by Felix Janda - - 10/19 - ----- -variables.c - - get_bashpid: BASHPID is no longer readonly; assignments to it are - just ignored. - -doc/{bash.1,bashref.texi} - - BASHPID: note that assignments are ignored and unsetting BASHPID - causes it to lose its special properties - - 10/28 - ----- -builtins/pushd.def - - popd_builtin: make sure to check the normalized stack offset - (i.e., negatives counting back from the end of the stack) is within - bounds before trying to free that stack entry. Report from - Fernando Muñoz - -lib/readline/histfile.c - - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from - J. Peter Mugaas - -lib/readline/colors.c - - S_ISDIR: add define if missing - - S_ISUID, S_ISGID, S_ISLNK, S_ISSOCK: don't use unless defined. - Fixes for MinGW{64,32} from J. Peter Mugaas - -bashhist.c - - current_command_line_comment: set to the most recent line in a - possibly multi-line command that contains a shell comment; set in - maybe_add_history and bash_add_history to either the current - command number or -2 - - maybe_add_history: set current_command_line_comment for first line - of command - - bash_add_history: chars_to_add set to "\n" if the current command line - is one greater than the previous line containing a comment - (current_command_line_comment). Fixes complaint from back in - January, 2016 from Dave Rutherford - -array.h - - lastref: move last-referenced pointer into each array struct, so all - arrays can have reference locality - -array.c - - array_create: set lastref element to 0 - - array_copy: if copying the lastref in array a, set the new lastref - in the copy to the same element - - IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF, - UNSET_LASTREF: change to use new array `lastref' member - -pathexp.c - - quote_string_for_globbing: if quoting for a regexp, make sure to - skip and copy a leading `^' in a bracket expression, and skip and - copy a subsequent `]' (after an optional `^'), so that leading - bracket doesn't close the bracket expression. Report from - Stephane Chazelas - - 10/29 - ----- -subst.c - - extract_delimited_string: add calls to CHECK_STRING_OVERRUN for - $( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes - - skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${, - process substitution - - extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for - $( - - extract_dollar_brace_string: use skipsubscript to skip over the - array subscript in ${var[sub]} (non-quoted case uses string_extract, - which already uses skipsubscript). Tagged for bash-5.0 - - 10/30 - ----- -variables.c - - EPOCHSECONDS: new dynamic variable, time in seconds since Unix - epoch; assignments are ignored. Can be used on systems where - strftime() doesn't support '%s' - - EPOCHREALTIME: new dynamic variable, time in seconds since Unix - epoch with microsecond granularity - -doc/{bash.1,bashref.texi} - - EPOCHSECONDS documentation - - EPOCHREALTIME documentation - -execute_cmd.c - - decpoint: moved to locale.c, renamed locale_decpoint; changed callers - -{bashintl,externs}.h - - locale_decpoint: extern declaration or #define if support for - localeconv() not there - - 10/31 - ----- -lib/malloc/malloc.c - - posix_memalign: add new posix-mandated interface - -examples/loadables/rm.c - - rm: minimal loadable builtin, removes files and directories, only - handles -r and -f options. Original from Tim Ruehsen - , heavily rewritten for inclusion as loadable - -examples/loadables/Makefile.in - - rm: add rules to build rm as one of the `other' targets - -examples/loadables/stat.c - - stat: new loadable builtin that takes a filename and loads the info - returned by stat(2) into an associative array specified by the -A - argument (default STAT) - - 11/1 - ---- -variables.c - - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets - $0 on assignment. From a suggestion from Rocky Bernstein - a few years ago - -doc/{bash.1,bashref.texi} - - BASH_ARGV0: document - - 11/2 - ---- -lib/glob/sm_loop.c - - parse_collsym: make sure to not return an out-of-bounds read if a - collating symbol is unterminated. Fixes OOB read reported by - Jerzy Kramarz - - brackmatch: after incrementing p, before checking whether it's a - character range, check whether *p was NULL before the increment - and short-circuit the bracket expression if it is - -jobs.c - - discard_last_procsub_child: new function, safely discards - last_procsub_child and sets it to NULL - -subst.c - - process_substitute: call discard_last_procsub_child instead of - calling discard_pipeline directly. Fixes bug reported by - Christian Weisgerber - - 11/3 - ---- -shell.h - - EX_DISKFALLBACK: new special return status available to builtins; - means to attempt to execute a disk command with the same name as - the builtin - -examples/loadables/rm.c - - if we see the -i option, return EX_DISKFALLBACK - -execute_cmd.c - - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK, - try running execute_disk_command instead - -bashline.c - - shell_expand_line: use expand_word to expand the readline line - buffer, which allows us to pass flags with the word. If a numeric - argument is supplied, do not perform quote removal (pass - Q_HERE_DOCUMENT since here-doc quoting does the right thing) and - do not perform command or process subsitution. From a suggestion - by Dabrien 'Dabe' Murphy based on an old bug-bash - discussion - -subst.c - - expand_word_internal: note that we have added a quoted IFS char to - istring by setting sentinel has_quoted_ifs. Usually we only add - one if we are not going to be performing word splitting, but we - will not perform word splitting if there's no expansion, so we need - to take care of that case - - expand_word_internal: when performing final word split, if there are - no expansions but has_quoted_ifs is non-zero, call remove_quoted_ifs() - to remove any quoted ifs characters we added while processing - - remove_quoted_ifs: new function, removes CTLESC chars preceding - (single-byte) chars in IFS. Used when we are not performing word - splitting. Fixes bug reported by Martijn Dekker - - 11/4 - ---- -lib/readline/macro.c - - _rl_peek_macro_key: return the next character from the current - keyboard macro; the next character from the `next' keyboard macro, - if there is one, if at the end of the current macro; or 0 to - indicate that we are at the end of a keyboard macro sequence - -lib/readline/rlprivate.h - - _rl_peek_macro_key: extern declaration - -lib/readline/readline.c - - _rl_dispatch_subseq: add test for ESC at the end of a keyboard macro, - which should cause the keyboard timeout for ESC to kick in. The - previous test didn't run the timeout code if executing from a macro, - even if we had read the last character of the macro. Fixes bug - reported by Clark Wang - -lib/glob/sm_loop.c - - GMATCH: allow trailing backslash in pattern to explicitly match a - backslash that is the last character in the string. Bug report from - Stephane Chazelas - - 11/5 - ---- -builtins/common.c - - display_signal_list: if displaying a signal name corresponding to an - exit status > 128, don't display the SIG prefix at all. Old code - made displaying the SIG prefix dependent on JOB_CONTROL define. - Report and fix from Martijn Dekker - -execute_cmd.c - - execute_subshell_builtin_or_function: call without_job_control even - if JOB_CONTROL is not defined. Similar to fix from 9/23. - Report from Martijn Dekker - -execute_cmd.c - - execute_simple_command: free memory allocated and passed to - make_child in the child process if JOB_CONTROL is defined - - execute_command_internal: free memory allocated and passed to - make_child in the child process created to run a () subshell or a - compound command within a pipeline if JOB_CONTROL is defined - - execute_coproc: free memory allocated and passed to make_child in - the child process if JOB_CONTROL is defined - - execute_disk_command: free memory allocated and passed to - make_child in the child process if JOB_CONTROL is defined. This - series of fixes is the result of reports from - Eduardo A. Bustamante López - - 11/6 - ---- -lib/sh/unicode.c - - u32toutf16: fix to prevent outputting broken surrogate pairs for - Japanese locales (ja_JP.UTF-8) on cygwin (which uses UTF-16 natively). - Report and fix from Koichi MURASE - -builtins/trap.def - - trap_builtin: if OP is `-' (revert), set the SIGINT signal handler - to sigint_sighandler if the shell is interactive and sourcing a - file (interactive_shell && sourcelevel) or running a trap - (interactive_shell && running_trap) even if it's not currently - interactive. Report from Martijn Dekker - -builtins/read.def - - check for and read multibyte characters in all cases, not just when - we are reading a specific number of characters, as long as - mb_cur_max > 1 - -subst.c - - expand_word_internal: some improvements to code that converts istring - into a WORD_LIST * to avoid multiple allocations and copies of - istring, which is already malloc'ed memory -- reduce number of malloc - and free calls - -test.c - - unary_test: make sure if we test -v array[@] or array[*] that we - free the return value from array_value - - 11/8 - ---- -expr.c - - expcond: make sure to set `noeval' before reading tokens depending on - the result of the conditional test, since readtok() can evaluate - identifiers (and recursively those containing expressions). Report - and fix from Koichi MURASE - -builtins/evalstring.c - - should_suppress_fork: make sure to check for traps on EXIT and - ERR, since any_signals_trapped() only checks for `real' signals, - not the fake shell ones. Fixes bug reported by Werner Fink - - - optimize_subshell_command: ditto - - 11/9 - ---- -eval.c - - reader_loop: change so that we don't reset the SIGINT handler every - time through the command loop in an interactive shell if the signal - is trapped (as the comment noted). Reported by Report from Martijn - Dekker - -subst.c - - parameter_brace_{patsub,remove_pattern,transform,casemod}: save and - restore this_command_name while temporarily setting it for use in - error messages. Fixes use-after-free error reported by - Jerzy Kramarz - - string_extract_verbatim: make sure when we increment i by 2 due to - a CTLESC or CTLESC-CTLNUL that we don't read past the end of the - string. This can happen if the string ends with an odd number of - CTLESC chars. Fixes oob-read error reported by - Jerzy Kramarz - - 11/11 - ----- -configure.ac,aclocal.m4 - - BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just - a stub function like on several Linux distributions - -lib/malloc/malloc.c - - malloc_usable_size: return the maximum number of bytes available for - a particular memory allocation (size of block allocated for it) - - 11/12 - ----- -configure.ac - - changes to make --enable-profiling work on Linux (-pg, no static link, - no -static in LDFLAGS) - -Makefile.in - - changes to make --enable-profiling work on Linux (take - ${PROFILE_FLAGS} out of BASE_CCFLAGS, add to CCFLAGS instead; add - BASE_LDFLAGS define that doesn't include -pg or -static; use - BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to - LDFLAGS) - -tests/run-gprof - - changes to make profiling test suite with gprof work on Linux (set - GMON_OUT_PREFIX to handle multiple profiled processes per test; - change default filename to gmon.out from bash.gmon; look for - gprof output files in ${TMPDIR} instead of /tmp; handle multiple - profiling files starting with $GMON_OUT_PREFIX) - -locale.c - - locale_isutf8: use locale_charset() if it's available and nl_langinfo - isn't - - locale_isutf8: add code to parse a locale specification and determine - whether the encoding is UTF-8 (or utf8) in the absence of - nl_langinfo and locale_charset - - set_default_locale: make sure to set locale_utf8locale early on - - locale_utf8locale: set via call to locale_isutf8 wherever LANG, - LC_ALL, or LC_CTYPE is set - - 11/13 - ----- -lib/readline/display.c - - rl_redisplay: handle report of potential integer overflow in - horizontal display mode from Mateusz Lenik - -lib/sh/mbschr.c - - mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking - for an ASCII character, use (essentially) strchr as a shortcut - -lib/sh/shmbchar.c - - utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement - functions (should also be able to use utf8_mblen in subst.c: - string_extract_verbatim) - - mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar - - mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not - used if earlier shortcut taken) - -lib/sh/unicode.c - - u32cconv: don't use nl_langinfo early to call u32toutf8() - - u32cconv: use locale_utf8locale to set utf8locale - - u32cconv: when initializing (u32init == 0), use locale_charset, then - nl_langinfo, then stub_charset to determine the charset - - u32cconv: even if we don't have iconv, if locale_utf8locale is non- - zero, return u32toutf8 - - 11/15 - ----- -lib/readline/nls.c - - _rl_init_locale: new function, split off code that determines current - locale from _rl_init_eightbit, use it to set _rl_utf8locale - -lib/readiline/rlprivate.h - - _rl_init_locale: new extern declaration - -lib/readline/readline.c - - rl_initialize: if not initializing everything the first time, call - _rl_init_locale to check current locale and set _rl_utf8locale - -lib/readline/text.c - - _rl_insert_char: optimize cases where we are inserting a single-byte - character in a locale with multibyte characters - - _rl_insert_char: check whether character is single byte if we know - we are in a UTF-8 locale, optimize single-byte case to avoid calls - to mbrtowc and memmove/memcpy - -lib/readline/mbutil.c - - _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the - current character does not have the eighth bit set ((c & 0x80) == 0), - return that char without bothering to call mbrtowc - - _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8 - locale and the current character is not a multibyte character - - _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that - to avoid calls to mbrtowc - -lib/readline/display.c - - _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid - calls to mbrlen and mbrtowc - - rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid - calls to mbrtowc - - 11/17 - ----- -lib/readline/histlib.h - - PATTERN_SEARCH: new flag for history search interfaces, means to - search for a pattern as Posix specifies - -lib/readline/histsearch.c - - history_search_internal: now takes a `flags' argument instead of just - an `anchored' argument to accommodate PATTERN_SEARCH - - _hs_history_patsearch: new internal interface to use when flags - specify PATTERN_SEARCH - -lib/readline/rlprivate.h - - SF_PATTERN: new flag for non-incremental search contexts, means to - treat search string as a pattern (maps to PATTERN_SEARCH) - -lib/readline/search.c - - noninc_dosearch: takes an additional `flags' argument for SF_PATTERN - - noninc_search_from_pos: takes an additional `flags' argument for - SF_PATTERN - - noninc_dosearch: pass flags argument through to noninc_search_from_pos - - _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used - to invoke the search) is `?' or `/', add SF_PATTERN to the flags - to conform to Posix spec for vi-mode editing - - _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a - pattern search, pass SF_PATTERN to noninc_search_from_pos - - rl_noninc_forward_search_again: if in vi command mode and key == `N', - make sure flags arg passed to noninc_dosearch includes SF_PATTERN - - rl_noninc_reverse_search_again: if in vi command mode and key == `n', - make sure flags arg passed to noninc_dosearch includes SF_PATTERN - - rl_history_search_internal: pass extra flags arg to noninc_search_from_pos - - 11/18 - ----- -lib/readline/search.c - - noninc_search_from_pos: takes a new argument, a pointer to int where - it stores the offset of the match in the history line (if non-NULL), - modified callers - - rl_history_search_internal: pass newcol pointer to - noninc_search_from_pos to avoid having to recompute the match offset - in the matching history entry - -config.h.in - - define HAVE_FNMATCH if we have the fnmatch function (configure was - already checking for it) - -lib/readline/histsearch.c - - _hs_history_patsearch: transform the pattern into one ending in a - `*' to avoid having to perform multiple match attempts from each - index in the history line - - history_search_internal: changes to handle pattern matching if - PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined. This - makes vi-mode history searching treat the user-specified search - string as an fnmatch pattern, as Posix requires. Fixes issue - reported by - - 11/19 - ----- -builtins/shopt.def - - shopt_enable_hostname_completion: only declare this if READLINE - defined, since that's the only time it's used. Reported by - isabella parakiss - - 11/20 - ----- -builtins/common.c - - display_signal_list: make `kill -l 0' print `EXIT', modifying change - from 9/17 - - 11/21 - ----- -subst.c - - expand_word_internal: when the shell encounters a backslash as the - last character of the string, don't try to add a '\'0' to the end - of the string if the string is quoted, just add a <\> and - skip to the end of string processing. Fixes oob-read error - reported by Jerzy Kramarz - -test.c - - two_arguments: check argv[pos][1] before checking argv[pos][2] when - looking for a unary argument. Fixes oob-read error on single `-' - in unary operator position reported by Jerzy Kramarz - - - ANDOR: check s[1] before checking s[2] in case s[1] == end of string. - Fixes oob-read error reported by Jerzy Kramarz - -subst.c - - command_substitute: now takes additional flags argument, changed one - caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers - pass 0 - - command_substitute: pass through flags argument to read_comsub - - read_comsub: now takes additional new flags argument to indicate - whether or not the word is in a context where word splitting will - eventually be performed - - read_comsub: if we are running in a context where word splitting - will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is - in $IFS, add a CTLESC to make sure it gets through a round of - dequoting - - 11/23 - ----- -parse.y - - xparse_dolparen: since reset_parser frees the pushed string list, - and this is supposed to be a separate parsing context, we need to - save and restore pushed_string_list around the call to parse_string - and reset_parser. Fixes bug reported by Dan Douglas - - -bashhist.h - - HISTEXPAND_DEFAULT: default value of history_expansion, moved here - from flags.c - -flags.[ch] - - histexp_flag: new variable, this is what set -H/set -o histexpand - sets; history_expansion set to value of this variable; defaults to 0 - - history_expansion: now set to HISTEXPAND_DEFAULT - -bashhist.c - - bash_history_reinit: if interact == 0, set history_expansion to the - value of histexp_flag, to allow -H option to enable history - expansion - - bash_history_reinit: if interact == 0, make sure - history_expansion_inhibited is set opposite of histexp_flag, so - enabling history expansion with -H invocation option turns off - inhibited expansion. If interactive shell, we turn it off so - history_expansion controls whether or not history expansion takes - place. In practice, this function is always called with interact == 0, - and -c command still doesn't perform history expansion - -shell.c - - init_interactive: make sure histexp_flag and history_expansion are - identical in an interactive shell; allows both -H/+H option and - default compilation options (HISTEXPAND_DEFAULT) to work - - 11/24 - ----- -subst.c - - get_word_from_string: take advantage of the fact that SEPARATORS is - always a (possibly local) copy of IFS, so build a local charmap of - separators and use it instead of the (cached and possibly stale) - ifs_cmap map and isifs macro. Fixes bug with -N stripping leading - whitespace reported by Clark Wang - - 11/25 - ----- -builtins/read.def - - read_builtin: make `i' volatile, since auto variables are technically - undefined after a longjmp, and a timeout on SIGALRM causes one. - Fix suggested by Dmitry Goncharov - - 11/27 - ----- -parse.y - - shell_getc: if we are reading input from a string, and we get the - ending '\0', and we are not expanding an alias, return EOF right - away. It might be an eval'ed string that has a syntax error. - Fixes bug reported by Dan Douglas - - 11/28 - ----- -subst.c - - expand_word_internal: if we're expanding a quoted string containing - a tilde as the first character of a word, only expand the tilde if - we're expanding an array subscript (Q_ARRAYSUB), not if we're - expanding any arithmetic expression (Q_ARITH). This fixes a - backwards compatibility issue with expressions like ~0 reported by - Bize Ma - -subst.c - - parameter_brace_expand_indir: if the variable is not special and - the indirect variable is unset (!variable where variable is unset), - report an error. This is a slight incompatibility with previous - versions, which did not differentiate between indirecting an unset - variable and an indirect expansion resulting in an unset variable. - Fixes omission reported by otenba@protonmail.com - - 11/30 - ----- -lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 - - do-uppercase-version: since this doesn't actually exist, replace it - with do-lowercase-version, with the caveat that do-lowercase-version - results in undefined behavior if bound to a character that's - already lowercase. Suggested by Branden Robinson - - -lib/readline/doc/rluser.texi - - history-substring-search-forward: was misspelled as "substr-search"; - ditto for search-backward - -doc/bash.1 - - history-substring-search-{backward,forward}: add documentation, text - straight from readline.3 - -jobs.c - - initialize_job_control: if the terminal's process group is valid, - but the shell is not the foreground process, check for terminating - signals (like SIGHUP, which the kernel would send if the process - group were orphaned) during the loop where we try to stop the shell - if it's not in the foreground. Not a perfect solution; the kernel - might not send SIGHUP - - 12/1 - ---- -jobs.c - - initialize_job_control: only go through the SIGTTIN loop 16 times at - most before deciding we're in the background and probably a member of - an orphaned process group; set original_pgrp to the terminal's pgrp - (so the eventual give_terminal_to doesn't leave the terminal in the - wrong pgrp); and bail on job control initialization - -tests/run-all - - unset SHELLOPTS to avoid its options `polluting' the test - environment. Suggestion from Vladimir Marek - - -tests/execscript - - use $PWD/exec8.sub to protect against someone who has a cd command - in his bashrc. Report from Vladimir Marek - - - 12/2 - ---- -shell.c - - open_shell_script: call end_job_control before exiting the shell in - case we were run as `bash -i script' and there is a problem with - executing `script'. If we don't, the terminal ends up in the wrong - process group. Fix from Clark Wang - - 12/3 - ---- -parse.y - - read_comsub: if we look for a character following a `<' and it's - not `<' (indicating that we don't have to read a here-document), - make sure we push that character back and go through the loop again - so we note the right word start location. Fixes bug reported by - parasite parasite <42parasite@gmail.com> - -subst.c - - parameter_brace_expand_indir: clean up checks for unset variables to - minimize incompatibilities with previous versions - - 12/5 - ---- -lib/readline/history.c - - add_history: don't update history_length until all of the updates to - the_history are complete, so history_length is always consistent. - Report and fix from Hong Cho - -bashline.c - - bash_backward_shellword: fix to work better at the end of the line, - with multiple trailing whitespace characters. Inspired by report - from Kirill Timofeev - -Makefile.in - - bashbug: use `^' as the sed delimiter instead of `%'; some compilers - use `%' in CFLAGS. Report from Vladimir Marek - - - 12/6 - ---- -test.c - - test_unop: make sure op[1] != 0 before testing op[2] - - term: make sure argv[pos][1] != 0 before testing argv[pos][2]. Fixes - oob-read reported by Jerzy Kramarz - - 12/7 - ---- -lib/glob/glob.c - - glob_filename: assign the return value of realloc (results, ...) to - a temp pointer, so if realloc returns NULL, we make sure we free - results. Report from Kirill Timofeev - - 12/12 - ----- -lib/sh/shquote.c - - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte - characters that are in the current locale's character class - -builtins/printf.def - - printf_builtin: when processing the `%q' format, make sure to - backslash quote all characters by making sure that FLAGS - passed to sh_backslash_quote includes 2. Fixes issue for certain - iso-8859-1 locales where character 160 (octal 240, hex 0xa0) is a - non-breaking space. Report from Stephane Chazelas - - -lib/sh/eaccess.c - - sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn - it into a stat on file descriptor N, as if /dev/fd were not - available. This is the case on some old versions of SunOS. Report - and patch from Dmitry Goncharov - -config.h.in - - DEV_FD_STAT_BROKEN: add define - -configure.ac - - --enable-dev-fd-stat-broken: new command-line option, defines - DEV_FD_STAT_BROKEN if supplied at configure time - -doc/bashref.texi - - --enable-dev-fd-stat-broken: document new command-line option for - configure - -arrayfunc.c - - assoc_expand_once: new variable, declared here just because - -arrayfunc.h - - assoc_expand_once: extern declaration - - AV_NOEXPAND: new flag value for the array_value family of functions: - means to not run associative array subscripts through word expansion - -builtins/set.def - - unset_builtin: call unbind_array_element with assoc_expand_once as - third arg, controls whether we expand associative array subscripts - (if 1, we suppress the usual expansion). With accompanying shopt, - provides backwards compatible option to solve problem with quotes - and other characters in associative array subscripts pointed out - most recently by Mingye Wang (Arthur2e5) - -builtins/shopt.def - - assoc_expand_once: new option, controls value of internal variable - with the same name. Currently undocumented because I'm not completely - sold on the name - -expr.c - - evalexp: now takes a second argument, flags. Changed all callers in - multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c, - subst.c,test.c,variables.c) - -externs.h - - EXP_EXPANDED, new flag for second argument to evalexp - -builtins/let.def - - let_builtin: add EXP_EXPANDED to flags passed to evalexp - -execute_cmd.c - - execute_arith_command: add EXP_EXPANDED to flags passed to evalexp, - since the command string is run through expand_words_no_vars before - being evaluated - -expr.c - - set expression-global variable already_expanded if flags arg to - evalexp contains EXP_EXPANDED - - if assoc_expand_once option set and already_expanded flag set, pass - 1 in flags to array_variable_part to skip over quotes and expansions - in the subscript - - if those two variables set, pass AV_NOEXPAND as flag to - get_array_value to prevent word expansions on the subscript - -arrayfunc.c - - if flags passed to unbind_array_element includes 1, pass flag on to - skipsubscript so we don't expect matched quotes or process - expansions in the subscript - - if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag - to array_variable_part to pass along to skipsubscript - - if flags to array_value_internal include AV_NOEXPAND, don't call - expand_assignment_string_to_string; just use the unexpanded subscript - to produce the key [THIS IS A WORK IN PROGRESS] - - 12/14 - ----- -subst.h - - ASS_NOEXPAND: assignment flag that inhibits expansion of associative - array subscripts - -variables.c - - bind_int_variable: takes new flags arg; flags are taken from the - ASS_ set of assignment flags, changed callers (bashline.c, expr.c, - pcomplete.c) - - bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to - valid_array_reference and array_variable_part to pass along to - skipsubscript, so we don't try to skip over quoted strings in the - subscript - - bind_int_variable: pass flags along to assign_array_element - -variables.h - - bind_int_variable: updated extern declaration with new flags arg - -expr.c - - expr_bind_variable: if the assoc_expand_once option is enabled, and - the flags to evalexp indicate that we have already run the expression - through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable - -arrayfunc.c - - assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag - to array_variable_name to pass along to skipsubscript - - assign_array_element: if flags includes ASS_NOEXPAND, don't run an - associative array subscript through word expansion, just use as-is - -subst.c - - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic - substitution because the string has already been expanded with - expand_arith_string - - 12/15 - ----- -builtins/read.def - - read_builtin: use value of assoc_expand_once for valid_array_reference - as with other uses - - bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND - to assign_array_element - -general.c - - assignment: instead of checking whether flags == 0 to allow a `[', - explicitly check for (flags&1) to disallow it. This leaves the door - open for additional flag values - -builtins/printf.def - - printf_builtin: use value of assoc_expand_once for - valid_array_reference as with other uses - - bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND - to assign_array_element - - 12/16 - ----- -builtins/history.def - - change history -d option to handle negative arguments; negative - arguments offset from the end of the history list (last_position + 1 - so history -d -1 deletes the history -d command that just got - added). Original patch from Piotr Grzybowski - -doc/bash.1,lib/readline/doc/hsuser.texi - - documented new behavior of negative offsets for `history -d' - - 12/17 - ----- -lib/readline/history.c - - remove_history: use memmove to move the history list around instead - of a loop that copies pointers one at a time, similar to add_history - - 12/19 - ----- -configure.ac - - linux: make sure PGRP_PIPE is defined unconditionally for all kernel - versions greater than 2.3.* - -lib/readline/history.c - - clear_history: when clearing the history, reset history_base to 1 - (its default) - - remove_history_range: new function, removes a set of history entries - and returns them all for deallocation - -lib/readline/history.h - - remove_history_range: extern declaration - - 12/20 - ----- -execute_cmd.c - - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the - expression through expand_words_no_vars - - 12/21 - ----- -input.c - - b_fill_buffer: when read returns EOF or error, and we reset the - buffer and pointers, reset the input pointer to 0. Fixes issue - reported by Stephane Chazelas - - 12/22 - ----- -arrayfunc.[ch],subst.c - - array_expand_index: added new FLAGS argument, reserved for future use, - changed callers - - - 12/24 - ----- -variables.c - - can_optimize_assignment,optimized_assignment: see if we can detect - whether or not we're trying to append a string to a string variable, - and optimize that using realloc/strcpy. Based on a log-ago - suggestion from Aharon Robbins - - 12/27 - ----- -builtins/help.def - - help_builtin: don't pass return value from ngettext() directly to - printf - - 12/28 - ----- -sig.c - - set_signal_handler: set SA_RESTART for SIGWINCH, so window size - changes don't interrupt open/read/write. Suggested by - Andriy Prystupa back in 10/2016 - - 12/30 - ----- -execute_cmd.c - - coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc - associated with pid, don't remove it from the list with cpl_delete. - Just mark as dead and wait for coproc_reap/cpl_reap to take care - of disposing it - - execute_coproc: NEW FEATURE: run the coproc name through word - expansion before creating the coproc; this allows unique coprocs - to be created in loops. Originally requested way back in 2012 by - Erik Brandsberg - -command.h - - subshell_com: now has a line number member: line - -make_cmd.c - - make_subshell_command: assign current line number (line number of the - ending right paren) to `line' member - -copy_cmd.c - - copy_subshell_command: copy the `line' member - -execute_command.c - - execute_command_internal: when executing a user subshell (`(command)'), - set the line number and line number for the ERR trap from the line - number saved in the subshell command struct. Fix from - Eduardo A. Bustamante López - - execute_arith_command: set line number for ERR trap from line number - saved in the arith command struct. Fix from - Eduardo A. Bustamante López - - execute_cond_command: set line number for ERR trap from line number - saved in the cond command struct. Fix from - Eduardo A. Bustamante López - -variables.c - - bind_variable_internal: move can_optimize_assignment call to the - right place - - 12/31 - ----- -variables.c - - find_variable_nameref: treat a circular variable reference as - referring to a variable of that name in the global scope (for now), - if one exists. PROVISIONAL change: inspired by suggestion back in - 6/2016 by Grisha Levit - - 1/2/2017 - -------- -{expr,general,hashcmd}.c - - include flags.h for flag values - -make_cmd.c - - include shell.h instead of the files it includes - -flags.h - - new extern declarations for want_pending_command, read_from_stdin - -subst.h - - add extern declaration for expanding_redir, assigning_in_environment - -trap.h - - add extern declaration for running_trap - -execute_cmd.h - - added extern declarations for variables declared in execute_cmd.c, - changed files that declare lots of extern variables - -shell.h - - added extern declarations for variables declared in shell.c, - changed files that declare lots of extern variables - -parser.h - - added extern declarations for variables declared in parse.y, - changed files that declare lots of extern variables - -[lots of changes to reduce the number of extern declarations in C and DEF files] - -parse.y - - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to - use STRING_SAVER - - 1/3 - --- -sig.c - - termsig_handler: don't call end_job_control if subshell_environment - indicates that we're in a command or process substitution. - Provisional fix for bug reported by Russell King - -jobs.c - - end_job_control: only attempt to give the terminal back to - original_pgrp if job_control != 0; don't test interactive_shell - -execute_cmd.c - - execute_disk_command: call QUIT after search_for_command, since - the only time QUIT gets called is when the path is actually - searched. It doesn't happen for an absolute pathname. Fix for - bug reported by Russell King - - 1/16 - ---- -lib/glob/glob.c - - extglob_skipname,wextglob_skipname: if we don't find a reason to - not skip the name in any subpattern (r returns 0 for any subpattern), - return 1 because we should skip the name - - extglob_skipname,wextglob_skipname: if we don't find a reason to - not skip the name in any subpattern, but the first part of the extglob - pattern is a wildcard (`*(pat)'), check the rest of the pattern, if - any, to decide whether or not to skip the name. Fixes bug reported - by Grisha Levit - -lib/glob/glob_loop.c - - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR - -lib/glob/glob.c - - wchkname -> wskipname - - wskipname: now takes a third `flags' argument, like the other variants - of skipname - - 1/17 - ---- -redir.c - - here_document_to_fd: set the file descriptor open for writing to the - here document to be close-on-exec. Fixes bug reported by - Siteshwar Vashisht - - 1/18 - ---- -{gmisc,gm_loop}.c - - match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file), - compile twice for single and wide characters as with the rest of - the functions - - umatchlen,wmatchlen: ditto - - extglob_pattern_p: move to gm_loop.c, generalize for regular and - wide-char versions - - 1/19 - ---- -lib/readline/complete.c - - stat_char: fix small memory leak if stat/lstat returns -1 - -bashline.c - - bash_filename_stat_hook,bash_directory_completion_hook: make sure - expand_prompt_string is caled wth W_NOPROCSUB flag - - directory_exists: don't dequote the filename passed as an argument; - this function should never get quoted pathnames - -subst.c - - expand_word_internal: when calling expand_word_internal recursively - after reading a double-quoted string, make sure the W_NOCOMSUB and - W_NOPROCSUB flags make it to the recursive invocation. Fixes bug - reported by Jens Heyens - - 1/23 - ---- -lib/readline/signals.c - - _rl_orig_sigset: original signal mask, set and restored by - rl_set_signals (rl_clear_signals doesn't block signals). If we - are not installing signal handlers, just save signal mask each - time rl_set_signals is called - -lib/readline/input.c - - rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block - the set of signals originally blocked by the calling application. - Fixes bug reported by Frédéric Brière - -parse.y - - yy_readline_get: try to unset NONBLOCK mode on readline's input - file descriptor before calling readline(). Inspired by report from - Siteshwar Vashisht - - 1/30 - ---- -parse.y - - parse_comsub: don't unconditionally set the LEX_WASDOL flag when we - see a `$'; we should toggle it to accommodate things like $$. - Fixes bug reported by Christian Weisgerber - - parse_matched_pair: do the same thing with LEX_WASDOL - - 2/1 - --- -jobs.h - - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of - functions - -jobs.c - - wait_for_job, wait_for_any_job: take new flags argument for use by - the wait builtin - - wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to - terminate instead of change state - - wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for - child process to terminate instead of change state - -builtins/wait.def - - takes a new `-f' option, signifying to wait until the specified job - or process terminates, instead of changes state - -doc/{bash.1,bashref.texi} - - wait: document the new -f option and its behavior when job control - is enabled - - job control: add a paragraph describing how the wait builtin changes - behavior when job control is enabled: it returns when a job changes - state - - 2/2 - --- -examples/loadables/fdflags.c - - fdflags: new loadable builtin to set and unset file descriptor flags - (such as non-blocking, though bash undoes that) for descriptors bash - has open. Developed in consultation with Christos Zoulas - - - 2/3 - --- - -lib/readline/text.c - - rl_previous_screen_line: attempt to move to the same column on the - previous screen line of the current readline buffer by moving back - a number of characters equal to the screen width - - rl_next_screen_line: attempt to move to the same column on the - next screen line of the current readline buffer by moving forward - a number of characters equal to the screen width. Both originally - suggested by Hans Ginzel - -lib/readline/readline.h - - rl_{next,previous}_screen_line: extern declarations - -lib/readline/funmap.c - - {next,previous}-screen-line: new bindable command names - -lib/readline/doc/{rluser.texi,readline.3} - - {next,previous}-screen-line: document behavior, including limitations - - 2/5 - --- -lib/readline/input.c - - rl_read_key: when reading input from a macro, make sure to return - the next character as an unsigned char, so we handle multibyte - character sequences correctly. Report and fix from Grisha Levit - - - 2/6 - --- -shell.c - - --pretty-print: new invocation option, currently undocumented, dumps - a pretty-printed version of a shell script given as an argument to - stdout - - main: call pretty_print_loop() if we're in pretty-printing mode in - a non-interactive shell - -eval.c - - pretty_print_loop: new function, similar to reader_loop, reads - commands and prints them by displaying the result from - make_command_string() - -externs.h - - pretty_print_loop: new extern declaration - - 2/9 - --- -doc/{bash.1,bashref.texi} - - here strings: correct documentation to note they do not undergo - brace expansion. Report from Conor McCarthy - - 2/9 - --- -lib/readline/display.c - - expand_prompt: instead of recomputing the line break offsets for - prompts that span multiple screen lines on every call to rl_redisplay, - do it here. Manage a local array local_prompt_newlines; set an offset - every time `physchars' hits a multiple of the screen width. Inspired - by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819 - - rl_redisplay: don't calculate multi-line prompt line break indices - here; use the values calculated by expand_prompt - - rl_{save,restore}_prompt: save and restore local_prompt_newlines - - 2/11 - ---- -lib/readline/mbutil.c - - _rl_find_prev_mbchar_internal: since we're traversing the string - from the beginning, shortcut non-multibyte characters in a UTF-8 - locale - -parse.y - - parse_comsub: if we are parsing a here document with a quoted - delimiter (LEX_QUOTEDDOC), we should not remove - pairs from the body of the here document. Need to add LEX_QUOTEDDOC - to the values in tflags when calling shell_getc. Fixes bug reported - by Michael Homer , patch was originally - contributed by Geir Hauge - - 2/15 - ---- -jobs.c - - bgp_add: if hashed pid collides with bgpids.head index, print a - warning and move to the next index. Attempt to avoid collision - problem reported by Graham Northup - - 2/17 - ---- -subst.c - - process_substitute: call remove_quoted_escapes on the command string - like command substitution does, since the string will be run through - the parser again. Fixes bug reported by David Simmons - - -config-top.h - - STATIC_PATH_VALUE: new config variable, undefined by default - -variables.c - - shell_initialize: if STATIC_PATH_VALUE is defined, use it to set the - PATH variable at shell startup, overriding the environment and any - value for DEFAULT_PATH_VALUE. Based on a suggestion from - Lonnie Abelbeck - - 2/18 - ---- -shell.c - - maybe_make_restricted: clear the hash table before making the PATH - variable read-only by calling stupidly_hack_special_variables. - Suggestion from Lonnie Abelbeck - -subst.c - - expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word} - to use this new function, initially identical to - expand_string_for_rhs - - getpattern: use expand_string_for_pat to expand the pattern - - 2/19 - ---- -subst.c - - expand_string_for_rhs: now that this is only used to expand the RHS - of the various non-pattern ${paramOPword} expansions, set - expand_no_split_dollar_star depending on whether or not the entire - brace expansion is going to be subjected to word splitting: if it's - quoted or if IFS is set but null, we will not be splitting so we set - this to 1 and let $* expand to separate fields separated by a space. - This was heavily debated back in October 2014 and resulted in Posix - interp 888. Reported by Martijn Dekker - - 2/20 - ---- -subst.c - - expand_string_for_rhs: now takes `op' (brace expansion operator) as - an additional argument; changed call in parameter_brace_expand_rhs - - expand_string_for_rhs: make sure to set expand_no_split_dollar_star - if `op' is `=', since we are supposed to preserve the assignment - statement expansion semantics on the RHS of ${param=word} - -jobs.c - - bgp_delindex: make sure to set ps->pid to NO_PID so we more - effectively remove it from the hash table. It shouldn't matter as - long as nothing in pidstat_table points to it, but better to be safe - - bgp_delete,bgp_search: generalize previous collision detection to - loop detection: abort search if we are going to go back to the - first index we tried - - 2/21 - ---- -lib/readline/vi_mode.c - - rl_vi_bword: if we're trying to move backward to non-whitespace - in a line that begins with whitespace, make sure we don't move - point to 0 and test memory locations before the start of the - buffer. Report and fix from Jason Hood - -lib/readline/display.c - - expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to - initialize it. If it's still 0 after that, guess that the screen - width is 80 and use that to guess how many screen lines the prompt - consumes - -lib/readline/readline.c - - readline_internal_setup: if in emacs editing mode, and we are - showing the editing mode in the prompt, call _rl_reset_prompt() to - make sure that the updated setting of _rl_show_mode_in_prompt - (presumably set in an inputrc file) is reflected in the redisplay - performed by rl_callback_newline via readline_internal_setup. - Fix from Jason Hood - - 2/22 - ---- -builtins/complete.def - - print_one_completion,print_compopts: make sure to display the - `nosort' and `noquote' options if they've been set for a particular - compspec. Fix from Grisha Levit - -builtins/read.def - - read_builtin: if -e is supplied, read needs to free rlbuf before - returning, since it uses discard_unwind_frame at that point. Bug - and fix from ZhangXiao - -execute_cmd.c - - execute_for_command: when using a nameref as the for loop control - variable, make sure we check for readonly namerefs and make sure - that we force bind_variable to enforce restrictions on nameref - assignments. Fix from Grisha Levit - - 2/23 - ---- -general.c - - make_absolute: convert deprecated cygwin_conv_to_full_posix_path - to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...) - -{shell,variables}.c,config-top.h - - modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE; - don't use it in shell_initialize; set PATH to it just before - imposing restricted shell restrictions - - 2/24 - ---- -subst.c - - expand_string_for_rhs: revert change from 2/19 concerning setting - expand_no_split_dollar_star so we are consistent with the Posix - examples. This anticipates Martijn Dekker initiating an austin - group discussion about this case - - 2/25 - ---- -pcomplete.c - - gen_shell_function_matches: if COMPREPLY is an associative array, - don't coerce it to an indexed array, which will fail to produce any - matches anyway. Report from Grisha Levit - - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore - the nameref attribute. Report from Grisha Levit - - -subst.c - - parameter_brace_expand: if expand_no_split_dollar_star is set, make - sure chk_atstar treats ${var[*]} as quoted by passing Q_DOUBLE_QUOTES - as the second argument. Fixes differing treatment of $* and ${v[*]} - reported by Grisha Levit , because otherwise - *contains_dollar_at gets set to 1 and the word is inappropriately - split - - 3/1 - --- -subst.c - - expand_word_list_internal: if a variable assignment fails (e.g., due - to a readonly variable) in a non-interactive posix mode shell, don't - abort the shell if the assignment is being performed by the command - builtin, even if it's something like `command eval v=1'. Fixes - RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838 - (reported by Denys Vlasenko) - - 3/3 - --- -builtins/shopt.def - - set_compatibility_level: make sure that changing the compatibility - level sets or modifies BASH_COMPAT. Fixes bug reported by - Stephane Chazelas - -lib/glob/smatch.c - - is_cclass: broke into two functions: is_valid_cclass and cclass_test, - for future expansion. No functionality change - -lib/glob/sm_loop.c - - BRACKMATCH: when testing a character against a character class name, - use the unfolded (original) character, since we're not performing a - comparison. This is what glibc does. Fixes bug reported by - Lukáš BaÅinka - - 3/4 - --- -doc/{bash.1,bashref.texi} - - note that the arguments to -eq and the rest of the arithmetic - operators are evaluated as expressions when using [[. Report from - Rob la Lau - - - 3/7 - --- -lib/readline/display.c - - update_line: completely rewrote the code that handles line wrapping - in the presence of multibyte/double-width characters; punts to a - dumb update in cases where the number of screen positions doesn't - match - - update_line: in one case, where we are deleting characters from the - line, if we are writing a non-space into the last screen character - position, note that we are no longer using a space as a placeholder - for a line wrap where there is a multi-width character that won't - fit on the screen line (wrapped_line[current_line+1] = 0) - - 3/10 - ---- -lib/readline/readline.c - - bind_arrow_keys_internal: add default key bindings for control- - arrow keys, suggested by Per Bothner - - 3/13 - ---- -doc/{bash.1,bashref.texi} - - clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and - PS4) before being displayed. Based on a report from Grisha Levit - - - 3/14 - ---- -input.c - - bufstream_ungetc: return EOF if being asked to unget a character to - a NULL buffer - - buffered_getchar: check buffered_fd is valid and buffers[buffered_fd] - is non-NULL before trying to dereference. Fixes bug reported by - floyd - -execute_cmd.c - - execute_null_command: if we fork to execute the command, the subshell - is not interactive - - execute_null_command: for safety's sake, if a redirection attached - to a null command affects fd 0 or the fd the shell is reading for - input, and the redirection can potentially change or close that file - descriptor, force a fork so the redirection is done in a subshell - - 3/15 - ---- -lib/readline/display.c - - update_line: if we have to output some bytes, and we are outputting - the prompt string, make sure we correct _rl_last_c_pos if we are - at the wrap offset -- what if all of the characters in the prompt - are invisible, so the visible length is 0? Fixes display bug - reported by Grisha Levit - -execute_cmd.c - - undo_partial_redirects: new function, performs redirections specified - in redirection_undo_list and disposes of them. Intended to be used - to unwind redirections performed before a redirection error - - dispose_partial_redirects: new function, disposes of - redirection_undo_list and nulls the list - - execute_command_internal: use undo_partial_redirects - -execute_cmd.h - - undo_partial_redirects: extern declaration - - dispose_partial_redirects: extern declaration - -subst.c - - exp_jump_to_top_level: if we are throwing an expansion error while - expanding a redirection (expanding_redir != 0), undo any undoable - redirections by calling undo_partial_redirects() so we don't leave - any in place - -variables.c - - initialize_shell_variables: if SHELLOPTS is in the environment, - unset the readonly attribute on any existing variable with that - name. It may have been created by processing a -o option on the - command line. Fixes issue reported by Stephane Chazelas - - - 3/16 - ---- -lib/readline/histfile.c - - read_history_range: short-circuit and do nothing if the history file - is of 0 size - - read_history_range: make sure the buffer is zero-terminated so the - timestamp tests work right for history files of 1 character. Report - and recommended fix from Denis Martinez - -lib/readline/complete.c - - compute_lcd_of_matches: when trying to compute the common prefix - of a set of matches while performing case-insensitive completion - matching, don't sort the match list unless rl_sort_completion_matches - is non-zero. Fixes problem reported by Roee Bar - - 3/18 - ---- -subst.c - - extract_dollar_brace_string: handle process substitution embedded in - a ${...} expansion in the same way as command substitution. Reported - by D630 - -parse.y - - LEX_GTLT: new flag, set by parse_matched_pair when a `<' or '>' is - read - - parse_matched_pair: handle an embedded process substitution like an - embedded command substitution if we are parsing an array index or - a dollar-brace expansion. Reported by D630 - - 3/21 - ---- -subst.h - - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by - make_variable_value - -variables.c - - make_variable_value: ASS_NOEVAL: if this is set, don't attempt - arithmetic evaluation or case modification, just produce the value - (still honor ASS_APPEND) - - make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level - if arithmetic evaluation fails due to a syntax error - - bind_variable_internal: make sure aflags is passed to all calls to - make_variable_value - - push_temp_var: add ASS_NOLONGJMP to the flags passed to - bind_variable_internal. Fixes bug reported by D630 - -bashline.c - - bash_execute_unix_command: don't bother to attempt optimization by - checking whether the call to parse_and_execute changes $READLINE_LINE; - it can be defeated by the new code that optimizes appends to string - variables. Bug reported by Grisha Levit - - 3/22 - ---- -subst.c - - expand_string_for_rhs: re-apply change from 2/19 based on discussion - on the austin-group mailing list about how unquoted ${var-$*} - expands when IFS is null. Originally reported by Martijn Dekker - - - 3/25 - ---- -parse.y - - read_token_word: if we read a WORD immediately after a CASE, FOR, or - SELECT, increment `expecting_in_token' to note that we're going to - be reading IN as the next non-newline token - - special_case_tokens: if we're expecting an IN (expecting_in_token > 0) - and we have an "in", return IN and decrement expecting_in_token. This - is a better implementation of Posix grammar rule 6 than the previous - code in that function (which is still there for posterity, but should - eventually be removed). Fixes bug reported by Torka Noda - - -subst.c - - string_list_pos_params: if the expansion is not quoted, and IFS is - null, return a string containing the quoted positional parameters - separated by spaces. Callers know what to do with the string - - parameter_brace_substring,parameter_brace_remove_pattern, - parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod: - for the VT_POSPARMS case, after calling the operator-specific - expansion function, which eventually calls string_list_pos_params, - leave the returned string alone, since it's already quoted properly - - parameter_brace_expand: after calling the above functions to perform - expansions, if the expansion is being performed on an unquoted $* - when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC - so that splitting on spaces is performed on the already-quoted word. - Fixes bug reported by Grisha Levit - - 3/28 - ---- -subst.c - - process_substitute: change so the subshell doesn't inherit the 'v' - option, like command substitution now does (as of bash-4.4). - Suggested by Grisha Levit - - 3/30 - ---- -subst.c - - parameter_brace_casemod: now takes a pflags parameter, like - parameter_brace_patsub; changed callers - - parameter_brace_transform: now takes a pflags parameter, like - parameter_brace_patsub; changed callers - - pos_params_pat_subst,pos_params_modcase: if mflags indicates we're - on the rhs of an assignment statement and not going to perform - word splitting, we're expanding $*, and $IFS is null, make sure - string_list_pos_params treats the expansion as double-quoted, so - the positional parameters will be concatenated. Fixes bug reported - by Grisha Levit - - 3/31 - ---- -doc/{bash.1,bashref.texi} - - add notes to the description of pipelines emphasizing that each - element of a pipeline is executed in a subshell, referring to the - description of a command execution environment, and that the - lastpipe option can modify that behavior. From a discussion with - Jean Delvare - - 4/1 - --- -subst.c - - expand_word_internal: set had_quoted_null to note for later if we - expand '', "", or "$x" when x is unset - - expand_word_internal: if we expand "$param" (or "${param}") and we - come back with a single word with the W_HAVEQUOTEDNULL flag set, - make sure we set had_quoted_null to remember it for later. In this - case, if we already have seen a quoted null and we expanded $@ in - this (sub)string expansion, we don't want to do any of the special - $@ handling. In particular, we don't want to set *expanded_something, - because that will result in word splitting and quoted null removal. - Fixes bug reported by Grisha Levit - - parameter_brace_patsub: when expanding ${*/pat/sub} in the case - where ifs_is_null != 0 and (pflags & PF_NOSPLIT2) (meaning we aren't - going to be doing word splitting), pass MATCH_ASSIGNRHS so we do - the right thing in this case. Part of a set of cases inspired by - Grisha Levit - - param_expand: case '*': if we are on the rhs of an assignment - (PF_ASSIGNRHS) and ifs is unset, and $1 == " ", we need to make sure - string_list_dollar_at gets called with Q_DOUBLE_QUOTES so it quotes - the positional parameters before joining them into a string with - string_list_internal. Otherwise, that first space gets removed by - the implicit word splitting that gets performed. Reported by - Grisha Levit - -array.c - - array_patsub,array_modcase: handle ${A[*]} identically to $* when - not quoted and IFS is null (separate with spaces). Makes things - like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null - -subst.c - - parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]} - when the match is on the rhs of an assignment statement (PF_ASSIGNRHS) - and ifs is null, make sure the match is performed as if it were - quoted - - parameter_brace_substring: now takes a PFLAGS argument - - parameter_brace_substring: if expanding $* in a context where we - don't want to do word splitting (expand_no_split_dollar_star && - PF_NOSPLIT2), make sure we expand $* as if it were quoted - - parameter_brace_substring: if expanding an unquoted $* on the rhs of - an assignment statement when IFS is null, make sure we expand the $* - as if it were quoted - - 4/4 - --- -doc/{bash.1,bashref.texi} - - read: document that a delim argument of '' terminates each line when - a NUL character appears - - 4/5 - --- -subst.c - - parameter_brace_expand_word: handle case where unquoted $@ is - expanded in a context where word splitting is not performed (PF_NOSPLIT2) - and IFS is not equal to the standard value - - param_expand: handle case where unquoted $@ is expanded in a context - where word splitting is not performed (PF_NOSPLIT2) and IFS is not - equal to the standard value. Fixes bug with IFS == $1 when expanding - unquoted $@ reported by Grisha Levit - - 4/7 - --- -subst.c - - pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $* - as quoted unless expand_no_split_dollar_star is also set. Fixes - expansion bug reported on 4/4 by Grisha Levit - - parameter_brace_transform: if we transform unquoted A[@] or A[*] - when IFS is null, don't quote the result of array_transform in the - same way we don't quote the result of parameter_list_transform, - since it will come back quoted. Fixes bug reported by - Grisha Levit - - list_transform: if we transform unquoted $* or ${a[*]} when IFS is - null and expand_no_split_dollar_star is non-zero, call - string_list_pos_params with Q_DOUBLE_QUOTES to inhibit splitting. - We do this in all cases except @Q, which is inconsistent but more - intuitive. - Fixes bug reported by Grisha Levit - - 4/8 - --- -builtins/read.def - - read_mbchar: if unbuffered == 2, we are running read -N and need to - use zreadn to read the rest of the multibyte char, since the - previous call to zreadn may have buffered characters. Fixes bug - reported by Stephane Chazelas - -pathexp.h - - QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn - CTLESC CTLESC (quoted CTLESC that's usually removed as part of - word splitting or quote removal) into CTLESC - -pathexp.c - - quote_string_for_globbing: if QGLOB_CTLESC is present in flags, - turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded - by a backslash. Callers can't do this because the remaining CTLESC - will be treated as a quoting character and turned into a backslash - -execute_cmd.c - - execute_case_command: if the pattern is not quoted, make sure to tell - quote_string_for_globbing to turn CTLESC CTLESC into CTLESC by - passing QGLOB_CTLESC. Fixes bug reported 4/2 by Martijn Dekker - - - 4/9 - --- -subst.c - - string_transform: after calling ansiexpand for the `E' transformation, - need to call dequote_escapes because ansiexpand assumes it is being - called by the parser and arranges for ansicstr to quote CTLESC and - CTLNUL with CTLESC. Reported by Grisha Levit - -variables.c - - mk_env_string: when exporting functions, run them through - dequote_escapes because any strings containing CTLESC or CTLNUL are - still quoted with CTLESC. Reported by Grisha Levit - - -subst.[ch] - - quote_escapes,dequote_escapes: now take const char * argument - -execute_cmd.c - - execute_intern_function: if the function name contains CTLESC, run - it through dequote_escapes just in case it got CTLESC quoting - CTLESC or CTLNUL from the parser - - 4/11 - ---- -eval.c - - reader_loop: make sure PS0 is expanded and displayed before - incrementing the command number - -parse.y - - prompt_history_number: function to make history number as reported - by \!, or posix mode !!, be the same index that the (possibly multi- - line) command will be stored with. The history library increments - history_offset as soon as a new line is entered, and it's up to the - history code to store the second and subsequent lines of a command - in the same history entry. If we are expanding PS0 or PS4, or - a ${var@P} expansion, we're already past the history entry no - matter what. Inspired by patch from Grisha Levit - - - decode_prompt_string: call prompt_history_number - - decode_prompt_string: if expanding PS4 or ${var@P}, make the - command number the same as reported by PS0/PS1/PS2 - - 4/12 - ---- -support/Makefile.in - - clean: remove man2html.o as part of this production instead of - waiting until `distclean'. Reported by chrlis - -subst.c - - string_list_pos_params: if we are expanding $* in a context where - IFS is null and expand_no_split_dollar_star is set (no word - splitting), use string_list_dollar_star to force the positional - parameters to be joined without first separating them into a list - and attempting to join them later. Fixes problem with constructs - like ${var=${*:1}}, pointed out by Grisha Levit - . This undoes change to @Q from 4/7, so - list_transform change reverted - - 4/19 - ---- -builtins.h - - added BUILTINS_H include guard - -examples/loadables/Makefile.in - - install loadables.h as sample include file, along with Makefile.inc - - 4/23 - ---- -bashline.c - - maybe_make_readline_line: don't try to do anything if the passed - NEW_LINE is NULL. Report from Jaren Stangret , - fix from Eduardo Bustamante - - 4/24 - ---- -parse.y - - xparse_dolparen: if the current token (the last thing read_token - returned to yylex) is shell_eof_token, assume that it is the new - bison lookahead token and clear it. Fixes bug reported by - Werner Fink - - 4/25 - ---- -doc/{bash.1,bashref.texi} - - cmdhist: clarify that this option only has an effect if history is - enabled. Suggested by Matthew Braun - - 4/26 - ---- -jobs.c - - wait_for: if a non-interactive shell with job control enabled (set -m) - detects that a foreground job died due to SIGINT, act as if the shell - also received the SIGINT. Prompted by an austin-group-l discussion - - waitchld: run SIGCHLD trap for each child exited even if job control - is not enabled when in Posix mode. Prompted by an austin-group-l - discussion - - 4/27 - ---- -lib/readline/histfile.c - - read_history_range: if the history file is empty, free the history - filename before returning. Report and fix from Eduardo Bustamante - - -lib/readline/bind.c - - rl_parse_and_bind: make sure there is something, even if it's a - quoted empty string, before the `:' in a key binding. Report from - Eduardo Bustamante - - rl_parse_and_bind: if the right side of a key binding starts with a - quote, make sure there's a matching close quote before treating it - as a macro definition - - rl_translate_keyseq: if a key sequence ends with \C- or \M- (or - \C-\M-) make sure we break out of the loop if moving to the character - to be translated is a NUL. Old code did this only in the \C-\M- - case. Report from Eduardo Bustamante - - 4/28 - ---- -lib/glob/sm_loop.c - - GMATCH: implement a clever technique from glibc that avoids - backtracking past a `*' if we've already chosen to use it and need - matches beyond it. Look at https://research.swtch.com/glob for a - longer explanation. This results in a significant speedup for globs - with multiple instances of `*', especially with more than 4. - - 5/2 - --- -lib/readline/bind.c - - rl_translate_keyseq: make sure a trailing backslash in the key - sequence is preserved. Report from Eduardo Bustamante - - - 5/3 - --- -builtins/builtin.def - - builtin_builtin: make sure to set this_shell_builtin to the builtin - command being executed, overwriting `builtin'. Leave - last_shell_builtin alone. Fixes bug reported by Luiz Angelo Daros - de Luca - -jobs.c - - waitchld: modify change of 4/26 to run SIGCHLD traps even if job - control is not enabled - -lib/readline/misc.c - - rl_get_previous_history: if we didn't find a previous history entry - to use, call rl_maybe_unsave_line before returning because we - aren't going to use the saved line, and it has the same undo list - as rl_undo_list. Fixes fuzzing bug reported by Eduardo Bustamante - - - rl_get_{next,previous}_history: if there is no history list, don't - bother doing anything - - 5/4 - --- -expr.c - - popexp: if we error out due to stack underflow, make sure to zero out - expression and lasttp; they may contain undefined values we don't - want evalerror to print - - expr_unwind: handle expr_depth decrementing below zero - - evalexp: restore the old value of evalbuf even if we error and - longjmp; we may have called evalexp recursively - - evalerror: make sure expression is non-NULL before trying to print it. - These fix fuzzing bug reported by Eduardo Bustamante - , happens only in cases where we don't longjmp on - a fatal expansion error - - 5/5 - --- -parse.y - - read_token_word: when checking for a word that's a target of a - redirection, we can potentially call valid_array_reference, which - can end up calling the parser recursively. If it does that, we - need to make sure that yylval.word doesn't change, so we set it back - to the_word. Fixes another fuzzing bug - -parse.y - - arith_for_command: make syntax errors in the arithmetic for command - (signaled by make_arith_for_command returning NULL) more like - language syntax errors by calling YYERROR. Avoids complicated - attempts at error recovery and dealing with NULL returns from - command productions. Pointed out by Eduardo Bustamante - - -lib/readline/kill.c - - _rl_copy_to_kill_ring: make sure the current slot in the kill ring - has something in it, even if the last command was a kill, before - trying to modify it. Another fuzzing bug - - 5/6 - --- -builtins/read.def - - read_builtin: if we see a backslash when not in raw mode (not -r), - only back up `i' when we read the next character if we know we added - a CTLESC the last time through the loop (skip_ctlesc == 0), - especially if i == 0. Another fuzzing bug from Eduardo Bustamante - - - 5/8 - --- -builtins/read.def - - read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle - of an incomplete multibyte sequence. Fixes another fuzzing bug - - read_builtin: use mb_cur_max instead of constant 4 when deciding - whether the next character can exceed the number of bytes available - in input_string - -lib/readline/input.c - - MinGW: include before . Fix from Eli Zaretskii - - -builtins/read.def - - read_builtin: if we get input from readline, we need to get the - remainder of a multibyte character from rlbuf instead of calling - read_mbchar. Bug reported by Eduardo Bustamante - - 5/9 - --- -parse.y - - token_is_assignment: use the allocated buffer approach in all cases, - not just if we're not using bash malloc. This avoids the assignment - to t[i+1] writing beyond the end of the allocated token if - i == token_buffer_size - 1. Another fuzzing bug - - xparse_dolparen: if parse_string returns < 0, we clear out the - current shell_input_line before performing a longjmp, since we're - abandoning parsing of this command. This is consistent with how - the parser resynchronizes after other syntax errors - - GRAMMAR: add 'error yacc_EOF' production to handle a syntax error - that's immediately followed by an EOF after resynchronization. - Fixes another fuzzing bug - - 5/10 - ---- -lib/readline/text.c - - _rl_set_mark_at_pos: don't let the mark be set to a position < 0. - Fixes a fuzzing bug - - rl_exchange_point_and_mark: don't do anything if the mark is already - less than 0 - - 5/12 - ---- -lib/readline/rlmbutil.h - - wchar_t: make sure this is defined as int if multibyte characters - aren't supported - -lib/readline/text.c - - _rl_change_case: don't force use of ascii toupper and tolower if - isascii returns true; it's not defined to work on characters outside - the 0..255 (really 0..127) range. Bug reported by - Eduardo Bustamante - - 5/14 - ---- -lib/readline/text.c - - rl_change_case: handle case where the old and new characters (after - the case change) are not the same number of bytes. Pointed out in - http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html - -lib/readline/display.c - - expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar - since that needs the base of the array. Bug from fuzzing reported by - Eduardo Bustamante - - 5/15 - ---- -execute_cmd.c - - execute_simple_command, execute_arith_command, execute_cond_command, - execute_arith_for_command: adjust the line number when executing a - function interactively so that the first command in the function is - line 1, not line 0, as Posix requires. Reported by Robert Elz - - - execute_simple_command, execute_arith_command, execute_cond_command, - execute_arith_for_command: ony adjust the line number when executing - a function interactively if we are not sourcing a file - (sourcelevel == 0), so this is consistent everywhere we adjust the - line number - - 5/16 - ---- -bashline.c - - bash_directory_completion_hook: when calling split_at_delims to see - whether a ${ or $( is closed, use the right value for `start' relative - to the substring beginning at `$'. Bug from fuzzing reported by - Eduardo Bustamante - -expr.c - - expassign: if the call to expcond generates a syntax error in a - context when the shell won't longjmp (like when evaluating $PS1), - it will end up NULL and we need to catch it before calling strlen. - Bug from fuzzing reported by Eduardo Bustamante - -examples/bash-completion/ - - new place to include a current or recent version of the - bash-completion package - - 5/19 - ---- -lib/readline/display.c - - CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars, - so the multibyte version can check and increase the size of - line_state_invisible->wbsize and line_state_invisible->wrapped_line, - callers who call CHECK_INV_LBREAKS must update - wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug - reported by Eduardo Bustamante - - 5/24 - ---- -lib/readline/search.c - - _rl_nsearch_callback,noninc_search: handle _rl_search_getchar - returning -1 (EOF or read error) by aborting the search. - Fuzzing bug reported by Eduardo Bustamante - - 5/25 - ---- -variables.c - - localvar_inherit: new variable, controlled by shopt localvar_inherit - option - - make_local_variable: if localvar_inherit is set, the new local - variable inherits a previous scope's variable's value, attributes - (except nameref), and dynamic variable information. If a local - variable inherits a value, the local is not invisible - -builtins/shopt.def - - localvar_inherit: new option - -doc/{bash.1,bashref.texi} - - localvar_inherit: document new shopt option - - 5/29 - ---- -lib/readline/readline.c - - _rl_subseq_result: only return -1 and back up the chain if we are - dealing with a result (r) that's already < 0 and we are at the end - of a multi-key sequence. Otherwise, a failing readline command (e.g., - delete-char at the end of a line) could cause this code to be - executed. Report from Nuzhna Pomoshch - -lib/readline/histfile.c - - read_history_range: if the file isn't a regular file, return an - error. Bug report from Eduardo Bustamante , - relaying from IRC - - 5/30 - ---- -variables.c - - set_pwd: if in Posix mode, and PWD appears in initial environment as - an absolute pathname to the current directory, set PWD to the result - of canonicalizing the environment value, or to the physical path if - canonicalization fails. From a suggestion by Eduardo Bustamante - - - 5/31 - ---- -builtins/read.def - - read_builtin: if -n or -N option is supplied with a 0 argument, - don't attempt to read any characters; bail out right away. Reported - by Eduardo Bustamante , relaying from IRC - - 6/3 - --- -config.h.in - - HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC: add define, used by stat-time.h - to construct a timespec from struct stat. Report and fix from - Siteshwar Vashisht - -variables.h - - att_regenerate: new internal variable attribute: if set, regenerate - dynamic variable's value when it's exported and we are creating the - export environment - -variables.c - - init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set - internal regenerate attribute for these dynamic variables - - make_env_array_from_var_list: if a dynamic variable has the - regenerate attribute set, call the dynamic value function to generate - an updated value before placing it in the environment. From a report - about exporting LINENO from Robert Elz - - 6/4 - --- -lib/glob/sm_loop.c - - BRACKMATCH: at the matched: label, make sure we get the bracket - character we're looking for (char class, collating symbol. etc.) - before we decrement the count of braces we're looking for. Eventually - we could do something about badly-formed bracket expressions - - 6/7 - --- -lib/readline/histlib.h - - strchr: only declare if __STDC__ is not defined, since we already - include . Report from Chi-Hsuan Yen - - 6/9 - --- -lib/readline/display.c - - update_line: when wrapping lines with multibyte chars at the end of - the new line being wrapped, make sure we copy the NULL byte in old - when moving the contents of old around. Fuzzing bug reported by - Eduardo Bustamante - -lib/readline/mbutil.c - - _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no - need to look at the rest of the string when we're just interested in - the length of a single character - - 6/12 - ---- -jobs.c - - wait_for: when waiting for the next child to exit (ANY_PID), make - sure to restore the old SIGINT handler before returning. Fixes - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649 - - 6/14 - ---- -lib/readline/display.c - - expand_prompt: make sure `ret' is NULL-terminated before calling - _rl_prev_mbchar_internal, since that calls strlen, which requires - the passed string to be NULL-terminated. Another fuzzing bug. - - 6/15 - ---- -lib/readline/isearch.c - - _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end - gets set right - - _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so - we don't set rl_point > rl_end. Fixes a fuzzing bug - -lib/readline/mbutil.c - - _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0, - just punt, treat the value as a byte, and advance point by 1 - -lib/readline/util.c - - rl_tilde_expand: rearrange code in the whitespace loop so that - `start' gets tested first and we don't try to dereference - rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com - -bashline.c - - bash_dequote_filename: make sure that pointers that are used as - indices into sh_syntaxtab are cast to unsigned char first, to - avoid problems with signed chars > 128. Fixes a fuzzing bug. - -lib/readline/kill.c - - _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to - allocate one more than the max number of kills so the loop that - copies the kill ring entries down runs right (and to mirror the - initial allocation). Fixes a fuzzing bug. - -lib/readline/isearch.c - - _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0 - even when searching a line in reverse. Fixes a fuzzing bug - - 6/16 - ---- -parse.y - - xparse_dolparen: short-circuit immediately if passed a empty string - -lib/readline/display.c - - update_line: when wrapping multibyte characters, make sure we deal - with WCWIDTH returning -1. Fixes a fuzzing bug - - 6/17 - ---- -execute_cmd.c - - execute_coproc: make sure `invert' is set before trying to use it - when returning failure on invalid coproc name. Report and fix from - Eduardo Bustamante - - execute_command_internal: make sure execute_coproc sets - last_command_exit_value if it returns failure, so an invalid name - can set $? = 1. Report and fix from Eduardo Bustamante - - -lib/readline/display.c - - update_line: make sure all references to `wrapped_line' are wrapped - with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante - - -lib/readline/vi_mode.c - - _rl_vi_change_char: don't use rl_point++ when you mean to move - forward a character; use _rl_vi_append_forward to account for - multibyte characters and take vi end of line handling into account - - _rl_vi_last_replacement: now an array of chars whether we are - using multibyte chars or not. If we're not, the character we read - to use as the replacement is saved as the first element of the array - - rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with - _rl_vi_last_replacement being an array. Fixes bug reported by - Eduardo Bustamante - -lib/readline/mbutil.c - - _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe - fewer if the length of the string is less - -builtins/bind.def - - unbind_keyseq: new function for the -r option; checks whether the - key sequence is actually bound before trying to bind it to NULL. - Partial fix for https://savannah.gnu.org/support/?109329 - -parse.y - - augment `error yacc_EOF' production to call YYABORT in non-interactive - shells or calls to parse_and_execute (eval, command substitution, - etc.) Fixes bug reported by Martijn Dekker - - 6/19 - ---- -bashline.c - - edit_and_execute_command: don't add rl_line_buffer to the history - list if it's empty; consistent with how other code treats an empty - line - -execute_cmd.c - - execute_builtin: make sure to preserve the temporary env across the - execution of the `read' builtin or `fc' builtin if HISTORY is - defined, in case `read -e' calls edit-and-execute-command. Should - have no side effects. Reported by Eduardo Bustamante - - -general.c - - line_isblank: new function: returns true if passed string is composed - entirely of blanks - -general.h - - line_isblank: new extern declaration - -parse.y - - history_delimiting_chars: return "" for a blank line, since there's - nothing to delimit with `;' - - 6/21 - ---- -jobs.c - - wait_for: make sure to call restore_sigint_handler before returning - if we return out of the loop due to no children. Report from - Eduardo Bustamante - -subst.c - - expand_word_internal: if split_on_spaces is set, and the word is - unquoted, and IFS is null, split the results of the previous steps - on $' \t\n' instead of just ' '. This relies on the previous steps - quoting the portions of the word that should not be split. Fixes - bug reported by Kevin Brodsky - -expr.c - - evalexp: after running expr_unwind, make sure we reset expr_depth - to 0 for the next call - - expr_streval: if after a call to get_array_value (which can call - the expression evaluator recursively) we discover that expr_depth - is less than it was before we called it, we assume there has been - some kind of error and an expr_unwind, so we treat it as an - error and either longjmp back to the expression top level or return - 0 immediately. Fixes bug reported by Eduardo Bustamante - - - 6/23 - ---- -doc/{bash.1,bashref.texi} - - add text noting that $* and ${array[*]} (unquoted) can also expand - to multiple words - - 6/29 - ---- -general.[ch] - - default_columns: new function, returns the value of COLUMNS, or - refreshes it if check_window_size is set and COLUMNS is unset. By - default, it returns 80 - -execute_cmd.c - - select_query: use default_columns() instead of fetching value of - COLUMNS directly - -builtins/help.def - - show_builtin_command_help: use default_columns() instead of fetching - value of COLUMNS directly - - 6/30 - ---- -builtins/read.def - - read_builtin: call QUIT during the read loop, just in case we get a - signal we should act on that didn't cause read to be interrupted. - Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737 - - read_builtin: if -n or -N is supplied with a 0 argument, try a zero- - length read to detect errors and return failure if that read returns - a value < 0. Suggested by dualbus@gmail.com - - 7/4 - --- -bashhist.c - - maybe_add_history: keep track of whether the current line is a shell - comment, even if we're not adding it because it's in a multi-line - command, so we use appropriate delimiters between it and any - subsequent lines. Fixes bug reported by Grisha Levit - back on 2/28/2017 - -bashline.c - - operate_and_get_next: if given an explicit argument, use that to - choose which line in the history to use. - -lib/readline/doc/rluser.texi,doc/bash.1 - - operate-and-get-next: document new effect of explicit numeric arg - -lib/readline/complete.c - - fnprint: make sure print_len is initialized before using it on - systems without multibyte character support. Report and fix from - Juan Manuel Guerrero - - 7/6 - --- -builtins/printf.def - - PRETURN,printf_builtin: check variable returned by bind_printf_variable, - return failure if that indicates we can't perform an assignment - because the variable is marked readonly or noassign. Fixes bug - reported by Arnaud Gaillard - - 7/7 - --- -lib/readline/text.c - - rl_quoted_insert: new feature: a negative argument means to insert - the next -COUNT characters using quoted-insert. Original feature - from Jason Hood . Still needs work on - redisplay - - _rl_insert_next_callback: implement support for negative arguments - similar to rl_quoted_insert: we just insert one at a time and keep - increasing the count until it hits 0 - -lib/readline/misc.c - - _rl_arg_callback: if the return value from _rl_arg_dispatch indicates - we should keep reading a numeric argument, update the message with - the new arg value - - 7/8 - --- -lib/readline/signals.c - - _rl_handle_signal: make sure all uses of any of the job control - signals are protected by a check for SIGTSTP being defined. Report - from Juan Manuel Guerrero - - 7/11 - ---- -lib/readline/vi_mode.c - - rl_vi_replace: when making the new keymap for vi replacement mode, - make sure that ANYOTHERKEY is set correctly, otherwise some input - will cause _rl_dispatch to return -2 to the top level. Fixes fuzzing - bug reported by Ben Wong - - 7/19 - ---- -builtins/read.def - - struct ttsave: make the attrs member a struct, not a pointer, to force - a structure copy that will survive a longjmp to another context. - Leaving it as a pointer to a local struct is not portable - - 9/10 - ---- -execute_cmd.c - - execute_builtin: make sure that we set up the unwind-protect for - pop_scope (temporary_env is non-zero) so that the temporary env - is propagated to the current environment only for special builtins - (source/eval/unset) not run by the command builtin - (flags & CMD_COMMAND_BUILTIN == 0). Fixes bug reported by - Martijn Dekker - - 9/17 - ---- -builtins/printf.def - - asciicode: don't use mblen to check whether or not a character is a - valid multibyte character; use mbtowc right away and then inspect - the return value. Fixes bug reported by Stephane Chazelas - - - 9/27 - ---- -{jobs,subst}.h - - move declaration of last_command_subst_pid to subst.h, since it's - declared in subst.c and doesn't depend on job control. Reported by - Martijn Dekker - -builtins/read.def,variables.c - - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented - the minimal config from building - - 10/1 - ---- -parse.y - - special_case_tokens: if we are returning DO in a case where the last - two tokens read are `FOR' and `WORD' make sure we decrement - expecting_in_token. Fixes bug reported by Martijn Dekker - - - 10/4 - ---- -subst.c - - expand_string_for_rhs: now takes an additional PFLAGS argument from - its caller (one so far); passes that through to call_expand_word_internal - as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker - - - expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if - b were the rhs of an assignment statement. This means that splitting - isn't done, but tilde expansion is performed as if the statement - were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker - - -command.h - - W_NOASSNTILDE: new word flag, means to not perform tilde expansion - following a `:' even if the word has the W_ASSIGNRHS flag enabled - -subst.c - - expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag - set, just add the character and inhibit any subsequent tilde - expansion. Currently not set anywhere, but it could be set in - expand_string_for_rhs to satisfy its peculiar semantics - - 10/6 - ---- -lib/sh/casemod.c - - sh_modcase: convert even single-byte wide characters to wide upper - or lowercase equivalents to accommodate locales where single-byte - characters have multibyte upper and lower case conversions. Bug - reported by Stephane Chazelas - - 10/7 - ---- -doc/{bash.1,bashref.texi} - - slight changes to the description of command_not_found_handle to - clarify that it's executed in a separate execution environment, - just like if the command was found. Reported by Martijn Dekker - - - 10/8 - ---- -lib/readline/doc/{history.3,hstech.texi} - - history_get: clarify the range of valid values for the OFFSET - argument. From a report by Kevin Ryde - - 10/21 - ----- -subst.c - - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `=' - for backwards compatibility with bash-4.4 - -shell.c - - main: set positional parameters before running the startup files, - so the startup files can inspect $@. Often-requested feature, - most recently from Stephane Chazelas - - 10/27 - ----- -doc/{bash.1,bashref.texi} - - Arrays: add some clarifying language to make it clear that array - references that don't use the ${a[s]} syntax are subject to - globbing when passed as arguments to commands such as unset, and - should be quoted for safety. Change prompted by a report from - Eli Barzilay - -parse.y - - parse_comsub: make sure we don't run off the end of the `ret' - buffer when checking for the here doc delimiter. Report from - Jakub Wilk , the result of a fuzzing test. Pointer - to place for the fix from Eduardo Bustamante - - 10/30 - ----- -builtins/pushd.def - - get_directory_stack: make sure the current directory (element 0 of - the stack) is passed to polite_directory_format under the same - conditions as the rest of the stack entries (flags & 1). Otherwise - something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported - by Steve Jones - -builtins/declare.def - - declare_internal: when checking for a `[' to see whether or not this - is an array variable declaration (declare -a foo[12]), make sure - we don't do the check if we're just dealing with shell functions. - Bug and pointer to fix from PJ Eby - - 11/1 - ---- -parse.y - - parse_comsub: if we read a four-character word followed by a break - character, and that word is not one of the reserved words, set - lex_rwlen to 0 since we are no longer in a reserved word. It only - hurts if another break character immediately follows, so that test - succeeds again. Turn off the RESWDOK flag only if it's not a shell - metacharacter, too. Fixes bug reported by Kjetil Torgrim Homme - - - 11/3 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: if we are searching in reverse order, let - sline_index go to -1 to avoid searching the same line twice. It - gets reset right after that, so there's no danger of indexing into - the history line with a negative index. - - 11/7 - ---- -execute_cmd.c - - time_command: only restore command->flags if CODE indicates we didn't - perform a longjmp back to top_level. If we did, `command' has already - been freed. Fixes bug reported on savannah by - ukuvbu oibws - https://savannah.gnu.org/support/?109403 - - 11/10 - ----- -lib/sh/unicode.c - - u32cconv: make sure to initialize localconv to -1 (error) in case - we switch from a utf-8 locale to something else and call - iconv_close. Report from Egmont Koblinger ; fix - from Eduardo Bustamante - - 11/16 - ----- -subst.c - - parse_comsub: istring_index should be a size_t to avoid integer - overflow when allocating large pieces of memory. Report and fix - from Siteshwar Vashisht , originally based on - http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html - - 11/24 - ----- -lib/readline/bind.c - - rl_empty_keymap: new public function, returns non-zero if there are - no keys bound in the keymap passed as an argument - -lib/readline/readline.h - - rl_empty_keymap: new public extern declaration - -lib/readline/doc/rltech.texi - - rl_empty_keymap: document new function - -lib/readline/bind.c - - rl_generic_bind: keep track of the previous keymap and previous - index in a multi-key key sequence so we can remove an empty terminal - keymap and remove a previous override to ANYOTHERKEY. Right now, - this only works for one previous keymap level. Inspired by a report - from Clark Wang - - 11/25 - ----- -lib/readline/display.c - - _rl_update_final: make sure that computing the length of the visible - bottom line (botline_length) takes any invisible characters in the - prompt into account (woff). This value is used as part of the check - whether or not we want to remove the line-wrapping indicator on - terminals like xterm - - _rl_update_final: when removing the line-wrapping indicator on xterm, - make sure we take invisible characters in the prompt (woff) into - account when computing the character in the rightmost physical - screen position. Fixes cosmetic line-wrapping issue reported by - Egmont Koblinger - - 11/27 - ----- -lib/sh/ufuncs.c - - fsleep: if using select to implement sleep, use restart after - a signal interrupts the select and handle pending signals. If - pselect is available, use that instead and block SIGCHLD while - pselect is executing. - Fixes report from Thiruvadi Rajaraman - - 11/28 - ----- -lib/readline/signals.c - - rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS - that can be used by applications that install a wrapper for - rl_getc (rl_getc_function) so they can respond to signals that - arrive while waiting for input in the same way as rl_getc. The app - can use rl_pending_signal() to get the most recently-received - signal. From a discussion about Gnuplot initiated by - Rin Okuyama - -lib/readline/readline.h - - rl_check_signals: new extern declaration - -lib/readline/doc/rltech.texi - - rl_check_signals: document new public function - -variables.c - - set_pwd: test for and force an inherited OLDPWD to be a directory - if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by - default). Issue raised by Mikulas Patocka - -config-top.h - - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default - - 11/29 - ----- -Makefile.in - - pathexp.o: add dependencies on libintl.h. Reported by - Ross Burton - - 12/1 - ---- -lib/sh/ufuncs.c - - fsleep: add blocking and releasing SIGCHLD using sigprocmask - around call to select(2) even if pselect(2) is not available - - 12/3 - ---- -execute_cmd.c - - coproc_setstatus: new utility function, take a pointer to a coproc - and a status and mark the coproc as dead and having been reaped - with that status. Used by child processes who want to invalidate - the coproc's pid - - 12/5 - ---- -subst.c - - process_substitute: instead of just having a flag to denote that a - file descriptor is connected to a process substitution, store the - pid of the child process (still needs work) - - find_procsub_child,set_procsub_status,reap_procsubs: utility - functions to allow the job control code to detect that a process - substitution child has died and deallocate the file descriptors - or pathname - -subst.h - - find_procsub_child,set_procsub_status,reap_procsubs: extern - declarations - -nojobs.c - - set_pid_status: if we are reaping a process substitution, call - set_procsub_status to record the fact - -jobs.c - - waitchld: if we are reaping a process substitution, call - set_procsub_status to record the fact. Doesn't really do anything - yet - - 12/6 - ---- -execute_cmd.c - - execute_command: don't call unlink_fifo_list if we're in the - middle of executing a list of commands (executing_list != 0). - Partial fix for bug reported by Stephane Chazelas - - - execute_simple_command: don't close process substitution file - descriptors in the parent after forking children in a pipeline; - defer until pipeline completes, since parent may have inherited - fds from a calling scope (e.g., via `.'). EXPERIMENTAL - - execute_disk_command: don't close process substitution file - descriptors in the parent after forking the child. EXPERIMENTAL - - 12/7 - ---- -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - show-mode-in-prompt: clarify that this must be enabled before the - vi and emacs mode strings are prefixed to the prompt. Report from - Rob Foehl - - 12/8 - ---- -execute_cmd.c - - execute_coproc: don't warn about an existing coproc if the write and - read file descriptors are unusable (-1), as they will be after a - call to coproc_closeall in a subshell. Fixes spurious warning - reported by Tobias Hoffmann - -jobs.c - - bgp_resize: avoid overflow when calculating the new size if the - child process limit is something ridiculously large. Report and - fix from Natanael Copa - -execute_cmd.c - - execute_builtin_or_function: if we return via the return builtin, we - don't get a chance to free the saved fifo list, so add an unwind- - protect to make sure it happens. Part of fix for leak reported by - Oyvind Hvidsten - - execute_command_internal: if we unwind via the return builtin (e.g., - we execute a function which then returns via the return builtin to - a previous function), we don't free the saved fifo list, so add an - unwind-protect to make sure the free happens. Rest of fix for leak - reported by Oyvind Hvidsten - -subst.c - - add_fifo_list: for the FIFO case (no /dev/fd), make sure we - initialize the new members of the fifo list after xrealloc - - 12/9 - ---- -subst.c - - dev_fd_list: now a list of type `pid_t' so we can store process - associated with the pipe fd into the right element; change all - necessary functions (copy_fifo_list, add_fifo_list) - - process_substitute: store pid of child process into the right - index in dev_fd_list after opening the pipe. Process ID of -1 means - process has been reaped and fd needs to be closed (or FIFO needs to - be unlinked); value of 0 means slot is unused - -jobs.c - - wait_for_background_pids: call reap_procsubs to make sure we clean - up all reaped process substitutions before trying to wait for - everything (still needs work) - -tests/{run-procsub,procsub.{tests,right}} - - new file, tests of process substitution that have failed in the past - - 12/10 - ----- -jobs.c - - wait_for_background_pids: warn if one of the jobs is stopped - -subst.c - - wait_procsubs: new function, call wait_for for every "live" process - substitution - -jobs.c - - wait_for_background_pids: call wait_procsubs to reap any living - process subsitutions - - 12/13 - ----- -lib/readline/bind.c - - parser_if: add support for testing the readline version, using the - full set of arithmetic comparison operators (and supporting both - = and ==), using version numbers of the form major[.[minor]] - - 12/14 - ----- -subst.[ch] - - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like - string_list_dollar_at, changed all callers. Not used yet. - - 12/16 - ----- -subst.c - - param_expand: broke out cases of expanding unquoted (quoted == 0) - $* on the rhs of an assignment statement (pflags & PF_ASSIGNRHS) - with various values of IFS (unset, null, set to non-null value) to - capture the expansion subtleties. From a report back on 11/24 by - Martijn Dekker - - 12/17 - ----- -array.h - - set_element_value: new define, sets array element AE to VALUE - -variables.c - - set_pipestatus_array: use set_element_value where appropriate - - 12/18 - ----- -subst.c - - parameter_brace_find_indir: when expanding the indirect parameter - to find the eventual variable name, we don't perform word splitting. - Make sure this does the right thing for * and @. Fixes bug - reported by isabella parakiss - - 12/19 - ----- -doc/{bash.1,bashref.texi} - - indirect expansion: make sure to note that the value of the indirect - variable does not undergo word splitting as one of its expansions, - as in fix from 12/18 - - 12/22 - ----- -subst.c - - parameter_brace_expand_rhs: make sure the value this function returns - when OP is `=' is quoted appropriately, as the callers expect. More - changes from Posix interp 221. Fixes report from Martijn Dekker - - -variables.c - - assign_hashcmd: if running in a restricted shell, make sure the - target of the hash assignment can be found via a $PATH search, to - prevent users assigning commands to the hash table they would not - ordinarily have access to. Fixes issue raised by Drew Parker - - -builtins/hash.def - - hash_builtin: if running in a restricted shell, make sure the - pathname target of `hash -p' can be found via a $PATH search, to - prevent users assigning commands to the hash table they would not - ordinarily have access to. - - 12/27 - ----- -array.c,arrayfunc.c,... - - many changes to clean up unused variables and functions. From a - report from Siteshwar Vashisht - - 12/28 - ----- -lib/readline/terminal.c - - _rl_term_clrscroll: save the `E3' termcap capability, which clears - the scrollback buffer where supported. Unused right now - -lib/readline/rlprivate.h - - _rl_term_clrscroll: extern declaration - -lib/readline/bind.c - - parser_if: added simple variable comparison capability. Allowable - operators are `=', `==', and `!='; boolean variables must be - compared to either `on' or `off'; variable names must be separated - from the operator by whitespace - -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - document new `if variable comparison value' construct - - 1/2/2018 - -------- -lib/glob/sm_loop.c - - EXTMATCH: when matching against !(patlist), if a filename beginning - with a `.' does not match any of the patterns in patlist, don't - return it as a match if leading dots need to be matched explicitly - (flags & FNM_PERIOD). Report from Eric Cook - - 1/3 - --- -variables.[ch] - - bind_function_def: takes an additional flags argument. If FLAGS&1, - overwrite any existing function_def hash table entry; if FLAGS==0, - leave any existing function_def alone. - -make_cmd.c - - make_function_def: call bind_function_def with flags == 0 - -execute_cmd.c - - execute_intern_function: call bind_function_def with flags == 1 so - we have function_def information that's correct for where the - function is defined, not just where it's last parsed. Fixes report - from Bruno Vasselle ; final piece of - fix from 12/15/2011 - - 1/4 - --- -subst.c - - param_expand: deal with string_list_dollar_star returning NULL. - Fixes bug reported by Martijn Dekker - -builtins/history.def - - history_builtin: enabled code that performs range deletion - - 1/5 - --- -subst.c - - do_assignment_internal: if performing a compound assignment, make - sure to pass ASS_CHKLOCAL flag to do_compound_assignment if the - assignment word has the W_CHKLOCAL flag set - - do_compound_assignment: honor ASS_CHKLOCAL flag and check for an - existing local variable before creating or modifying a global - variable - -builtins/declare.def - - declare_internal: new (undocumented so far) option: -G. Means to - act on global variables (create, modify) if no local variable is - found with the specified name - - declare_find_variable: new declare-specific wrapper functon for - declare builtin; obeys -g and -G options in one place - - declare_internal: if no variable is found after following any nameref - chain, look up the variable using declare_find_variable to honor the - -G option. XXX - so far, this is the only place that function is used - -subst.c - - shell_expand_word_list: before calling make_internal_declare, add - 'G' to the options list if W_CHKLOCAL is set in the word's flags. - This makes builtins like `readonly' that modify local variables in - a function behave the same for scalar and array variables - - 1/11 - ---- -parse.y - - shell_getc: move code that decides whether to append a space to an - alias expansion here from mk_alexpansion, so we can inhibit adding - a space if we're currently parsing a single or double quoted string - - 1/12 - ---- - -parse.y - - clear_string_list_expander: take a pointer to an alias that's about - to be freed and make sure there aren't any pointers to it in the - list of pushed strings. If there are, zero it out in the pushed - string list to avoid referencing freed memory in pop_string() - -alias.c - - free_alias_data: if an alias being freed is currently being expanded, - call clear_string_list_expander to remove references to it from the - list of pushed strings - - 1/14 - ---- -pcomplib.c - - progcomp_search: add code to look up an alias for the CMD argument - and return the completions for the first word of that alias if one - is found. Just a start at completing aliases, a much-requested - feature - -pcomplete.h - - COPT_LASTUSER: last flag value used by user-settable completion - options - - PCOMP_RETRYFAIL, PCOMP_NOTFOUND: new #defines, possible return values - from programmable_completions in FOUNDP argument. Moved RETRYFAIL - define here from pcomplete.c to avoid collisions with user-settable - option values (COPT_*) - - 1/15 - ---- -pcomplete.c - - programmable_completions: if we don't find any completions for a - command, and RETRY is 0, see if the command is a defined alias, - expand it, and try to expand the first word of the value as a - command, and find any programmable completions for it. Here right - now, could be moved to attempt_shell_completion later if we need - to do more analysis of the expanded line. We'll see how it works - in practice. (Disabled for now.) - - 1/16 - ---- -parse.y - - grammar: when timing the null command, make sure to turn off the - flags in parser_state (PST_REDIRLIST) that make_simple_command sets - when given a NULL second argument, since it assumes that it's going - to turn those off when it gets the next word of the simple command - (which it never gets in this case). Fixes bug reported by - Anti Räis - - 1/19 - ---- -lib/readline/rltty.c - - prepare_terminal_settings (termios/termio): if there is a function - bound to the VDISCARD character in the current keymap, set VDISCARD - to _POSIX_VDISABLE while readline is active. From a report from - Rhialto - - 1/22 - ---- -builtins/history.def - - histtime: check whether or not localtime() returns NULL, and make - sure we only call strftime() with a valid struct tm. This can happen - when the timestamps in the history file overflow a time_t. Fixes bug - reported by Luke Dashjr - -bashline.c - - edit_and_execute_command: if we're in vi editing mode, make sure - we end up in insert mode after executing the commands from the - edited file. This seems to be what other shells do. Report from - Stan Marsh - - 1/26 - ---- bashline.c - - command_word_completion_function: match alias and shell function - names case-insensitively if the readline completion-ignore-case - variable is set. Inspired by report from - -lib/readline/display.c - - update_line: when performing a dumb update after wrapping the line - (usually due to printing the prompt), make sure we adjust - _rl_last_c_pos if there are invisible characters in prompt lines - other than the first (we assume those invisible characters are in - the last line, which is nearly always the case). We adjust by the - total number of invisible chars less the number of invisible chars - in the first prompt line. From a report in - https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1745273 - -execute_cmd.c - - execute_command_internal: if redirections attached to a compound - command fail, make sure we discard the `internal_fifos' unwind- - protect frame after freeing the copied fifo_list and before returning - - 1/30 - ---- -lib/readline/rlprivate.h - - BRACK_PASTE_FINI: add \r to the end of the string to avoid problems - with the tty driver thinking the cursor was in the wrong position. - Fixes issue reported by Egmont Koblinger - - 1/31 - ---- -lib/sh/zread.c - - zread,zreadintr: call check_signals() before calling read() to - minimize the race window between signal delivery, signal handling, - and a blocking read(2). Partial fix for FIFO read issue reported by - Oyvind Hvidsten - -doc/{bash.1,bashref.texi} - - shopt: document `assoc_expand_once' shell option - - 2/1 - --- -config-top.h - - DONT_REPORT_SIGPIPE: define, so non-interactive shells will no - longer print termination messages for child processes killed by - SIGTERM - - 2/6 - --- -lib/readline/text.c - - rl_insert: don't attempt to optimize typeahead if we are only reading - a fixed number of characters (rl_num_chars_to_read > 0) - -redir.c - - redir_special_open: if the shell is restricted, return a - RESTRICTED_REDIRECT error for attempts to open /dev/tcp and /dev/udp - sockets. Inspired by report from Blake Burkhart - - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT, - return that right away (instead of errno) so we can print a better - error message - - 2/11 - ---- -jobs.c - - bgp_resize: fix problems with (pid_t) overflow when calculating new - size for table when js.c_childmax is near the limit of a pid_t - (e.g., 2**31 - 1 on a 32-bit system, or 2**63-1 on a system with - 32-bit pid_t). Fixes hang reported by Natanael Copa - based on his patch from 12/8. - - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768) - -include/typemax.h - - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29, - silences some compiler warnings - - 2/14 - ---- -Makefile.in - - maybe-clean: use cd and pwd -P to test whether or not two directory - names identical, since topdir = '.' and BUILD_DIR = full pathname - when you use something like `bash ./configure'. Problem reported by - Michael Felt - -subst.c - - split_at_delims: if SD_NOQUOTEDELIM is in the flags argument, don't - treat `'' and `"' as candidates for possible sequences of delimiters, - even if they're part of the delimiter set (the delims argument). - Fixes problem with completing lines like `foo --bar='quux baz' xx' - reported by Nick Patavalis - - 2/15 - ---- -copy_cmd.c - - copy_word_list: build the list in the right order, avoiding having - to reverse it at the end. Helps with long argument lists + - syslog_history: new variable to control whether history lines are + sent to syslog; default value is the value of SYSLOG_SHOPT (or 1 + if that's not defined) + - bash_add_history: send history lines to syslog if syslog_history is + non-zero -shell.c - - bind_args: build the argument list in the right order, avoiding - having to reverse it at the end. - - bind_args: only call push_args to save argc and argv as BASH_ARGC - and BASH_ARGV if debugging mode is enabled (debugging_mode != 0). - Inspired by report from Ambrose Feinstein - - bind_args: note that we've saved BASH_ARGC and BASH_ARGV by setting - bash_argv_initialized - - shell_reinitialize: reset bash_argv_initialized back to 0 so - BASH_ARGV and BASH_ARGC will be recreated if we're in debugging mode + 5/10 + ---- variables.c - - save_bash_argv: new function, initializes BASH_ARGV and BASH_ARGC - from the saved positional parameters - - init_bash_argv: initialize BASH_ARGV and BASH_ARGC if - bash_argv_initialized == 0 + - push_var_context: if we are in Posix mode and manipulating the + temporary environment (temporary_env), implement behavior specified + in Posix interp 1009 and make sure that temporary assignments + preceding function calls modify the current environment *before* + the function is executed. -builtins/shopt.def - - shopt_set_debug_mode: if we're turning on debug mode, initialize - BASH_ARGC and BASH_ARGV if bash_argv_initialized == 0 +[bash-5.0-alpha frozen] - 2/16 + 5/12 ---- execute_cmd.c - - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized - before calling push_args (and before calling remember_args) + - execute_in_subshell: subshells should set loop_level == 0, since + they are no longer "enclosed" by the loop, according to posix. + Report from Aeron.E. Wang -builtins/source.def - - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized - before calling push_args (and before calling remember_args) + 5/24 + ---- +Makefile.in + - pkgconfigdir: don't fail installing bash.pc if this directory doesn't + exist or isn't writable -- there's no error in failing to install + something nothing will use + - install-headers-dirs: creat $(pkgconfigdir) if it doesn't exist -builtins/evalfile.c - - _evalfile: if the shell compatibility level is 44 or lower, make - sure BASH_ARGV and BASH_ARGC are initialized before calling - array_push +lib/sh/shmbchar.c + - utf8_mblen: replace with version from gnulib + - utf8_mbstrlen: reimplement using utf8_mblen so it handles invalid + multibyte sequences in the same way as mbstrlen -builtins/shopt.def - - compat44: new shell option. This will be the last compatXX option +lib/readline/mbutil.c + - _rl_utf8_mblen: utf-8 specific version of mblen from gnulib -doc/{bash.1,bashref.texi} - - compat44: document new shell option +include/shmbutil.h + - ADVANCE_CHAR,COPY_CHAR_P: do better job detecting end of string in + UTF-8 locales (should not be called with an empty string, but to + be safe) - 2/21 + 5/25 ---- -builtins/common.h - - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes - bug reported by jeremy@feusi.co +lib/sh/utf8.c + - new file, utf-8-specific functions collected from other files -input.h - - B_SHAREDBUF: new flag for buffered input fds, indicates that this - fd shares its b_buffer with another fd +externs.h + - extern declarations moved around for utf8.c -input.c - - duplicate_buffered_stream: when duplicating *from* the buffer - corresponding to bash input, make sure the new buffer has B_SHAREDBUF - in the flags, because copy_buffered_stream copies pointers - - duplicate_buffered_stream: if the buffer being copied to has the - B_SHAREDBUF flag set, make sure the b_buffer doesn't get freed. - Fixes use-after-free bug reported by jeremy@feusi.co - - save_bash_input,close_buffered_stream: make sure a buffer with - B_SHAREDBUF set has its b_buffer set to NULL before calling - free_buffered_stream +include/shmbutil.h + - SADD_MBCHAR, SADD_MBQCHAR_BODY, ADVANCE_CHAR_P: if the locale is a + UTF-8 locale, don't bother with a call to mbrlen if the current + character cannot start a multibyte character + +variables.c + - push_var_context: only merge the temporary environment in posix mode + if we are executing a shell function (flags & VC_FUNCENV). Report + from Martijn Dekker + +lib/readline/mbutil.c + - _rl_get_char_len: don't call mbrlen if we are in a UTF-8 locale and + the character cannot start a multibyte sequence + +builtins/read.def + - read_builtin: if mb_cur_max > 1, call read_mbchar only if we're not + in a utf-8 locale or, if we are, the character we just read indicates + the start of a multibyte sequence - 2/24 - ---- subst.c - - parameter_brace_expand_error: add parameter saying whether or not - we are checking whether value is null, so we can have different - error messages for ${x:?} and ${x?}. Report and fix from - don fong + - string_extract_verbatim: don't call MBRLEN if we're in a utf-8 + locale and the current character can't start a multibyte sequence + - setifs: don't call MBRLEN if we're in a utf-8 locale and the first + character of $IFS can't start a multibyte sequence - 3/5 - --- -lib/readline/bind.c - - _rl_read_file: instead of calling stat/open on the passed filename, - use open/fstat to avoid one possible filename translation and close - a small (benign) race condition. Report and fix from Roy Ivy - +lib/readline/kill.c + - rl_bracketed_paste_begin: make sure we return 0 here if rl_insert_text + returns the right number of characters inserted to be consistent + with other functions. Returns 1 otherwise. Report and fix from + Gabe Krabbe back in March, 2018 - 3/11 +lib/readline/readline.c + - rl_subseq_result: make sure r is < 0 before checking map[ANYOTHERKEY] + to see if we shadowed a key that should now be tried + + 5/27 ---- variables.c - - makunbound: if new variable localvar_unset is non-zero, mark local - vars in previous scopes as invisible and unset so they will show - up as unset until that previous scope returns (similar to how local - variables in the current local scope are handled). localvar_unset - is currently set to 0 with no way for a script to change its value. - Eventually there will be an option to modify it. From a bug-bash - discussion started by Nikolai Kondrashov back - on 2/11/2018 + - assign_aliasvar: perform same validity check on subscript assignment + as alias builtin performs on name argument. Bug report from + Mike Jonkmans - 3/13 + 5/29 ---- -subst.c - - expand_word_list_internal: short-circuit and exit right away if a - variable assignment preceding a special builtin fails in posix mode - - expand_word_list_internal: if a variable assignment precedes an - empty command name (after expansion), fix to exit right away when - the shell is in posix mode +builtins/setattr.def + - set_var_attribute: we should not propagate a variable assignment + preceding a builtin back to the calling environment unless the + shell is in posix mode. Since previous versions of the shell do + this, setting the shell compatibility level to 44 or less will + continue the propagation behavior - 3/15 - ---- -doc/{bash.1,bashref.texi} - - Add text to Pathname Expansion clarifying that a slash must be - matched by a slash in the pattern when matching pathnames, but - not in other matching contexts. Suggested by + 6/1 + --- +lib/readline/histexpand.c + - history_tokenize_word: as part of teaching history tokenization more + and more about shell syntax, allow command and process subsitution + and extended globbing patterns to appear within a word being + tokenized and not just at the beginning. Fixes bug reported back in + 2/2017 by ecki@tofex.de -builtins/common.c - - read_octal: allow octal numbers greater than 777 to accommodate - modes and umasks that include sticky/setuid/setgid bits. Report - and fix from Martijn Dekker +bashhist.c + - load_history: use HISTSIZE_DEFAULT (still defaults to "500") to set + the initial value of $HISTSIZE. HISTSIZE_DEFAULT can be overridden + in config-top.h - 3/19 - ---- -lib/readline/bind.c - - rl_generic_bind: make sure we only assign to prevkey in the loop - if the key sequence index is > 0, so ic is valid. Fixes bug - reported by Koichi Murase + 6/4 + --- +configure.ac + - make sure we link against an external readline library that's at + least version 8 -builtins/read.def - - read_builtin: be slightly less aggressive checking for timeouts and - SIGALRM: if we successfully read a character, don't check for a - timeout until we store or process it. Fixes timing problem - reported by Rob Foehl + 6/8 + --- +pcomplete.h + - INITIALWORD: internal compspec name for programmable completion on + the initial (usually the command) word - 3/22 - ---- -sig.c - - termsig_handler: add a call to exit(1) after the kill, just in case - there are circumstances where the SIG_DFL signal handler is - ignored. Report from Andrei Vagin +bashline.c + - attempt_shell_completion: if we are in a command position and the + user has defined a compspec for INITIALWORD, use programmable + completion to complete command words. Original patch from + Luca Boccassi - 3/25 - ---- -lib/readline/bind.c - - _rl_function_of_keyseq_internal: new internal function thta takes a - length parameter to accommodate NUL in the key sequence. Patch from - Koichi Murase - - rl_function_of_keyseq_len: new application-callable function that - takes a length parameter; otherwise equivalent to rl_function_of_keyseq. +lib/readline/doc/rluser.texi,builtins/complete.def,doc/bash.1 + - make it clearer that -D takes precedence over -E when supplied as + options to `complete', not when they are applied during completion -lib/readline/readline.h - - rl_function_of_keyseq_len: add extern declration for new function +builtins/complete.def + - complete_builtin,compgen_builtin: add support for -I option + - print_one_completion,print_compopts: display -I when appropriate -lib/readline/doc/rltech.texi - - rl_function_of_keyseq_len: document new function interface +lib/readline/doc/rluser.texi,doc/bash.1 + - complete,compgen: document new -I option and its effect + + 6/10 + ---- +lib/readline/histfile.c + - read_history_range: don't apply the heuristic and try to append a + history line to an existing history entry if we don't have any + history entries. Bug and fix from Edward Huff + 6/12 + ---- bashline.c - - bash_execute_unix_command: use rl_function_of_keyseq_len to handle - key sequences with embedded NULs (\C-@). Fix from Koichi Murase - + - attempt_shell_completion: don't all the programmable completion for + INITIALWORD if programmable completion is disabled + - attempt_shell_completion: make sure in_command_position remains set + for an empty command word on an otherwise blank line, making the + presence of assignment statements optional. Report from + Luca Boccassi -lib/readline/bind.c - - rl_bind_key_if_unbound,rl_bind_key_if_unbound_in_map: run the KEY - argument through rl_untranslate_keyseq to produce a symbolic sequence - that can encode \C-@. - - rl_bind_keyseq_if_unbound_in_map: translate the key sequence in order - to accommodate symbolic key sequences; should be a no-op for `raw' - key sequences such as the arrow key seqeunces from terminfo. Change - from Koichi Murase + 6/20 + ---- +lib/malloc/malloc.c + - morecore,internal_malloc,internal_free: requests for more than + 128K bytes (defined as MMAP_THRESHOLD and saved in the new + malloc_mmap_threshold variable) are now satisfied via mmap and + freed via munmap. We only use mmap if we have mmap and MAP_ANON + (or MAP_ANONYMOUS). These blocks are not available for splitting + or coalescing, so every request for 128K bytes or smaller is + satisfied via sbrk(). We don't use mremap for realloc yet, but + we could in the future + +lib/malloc/mstats.h + - malloc_stats: the malloc stats now include the number of calls to + mmap and the total number of bytes requested via mmap. The number + of calls to munmap is captured in each bucket's lesscore count + +lib/malloc/stats.c + - print_malloc_stats: now prints an indication of where the change from + sbrk to mmap takes place, and prints number of mmap calls and total + number of bytes allocated using mmap - 4/2 - --- -jobs.c - - wait_for: when setting the SIGINT signal handler to wait_sigint_handler - make sure we're not setting old_sigint_handler recursively, as we - can when running an external command in a trap we took after a - command exited due to SIGINT. We don't want to overwrite - old_sigint_handler here. Fixes bug reported by Dr. Werner Fink - + 6/22 + ---- +variables.c + - get_bashargcv: new dynamic "fetch" variable for BASH_ARGV and + BASH_ARGC, for backwards compatibility: if a script makes a + reference to either variable at the top level (not in a shell + function) without enabling debugging mode and not having initialized + the variable previously (using a simple semaphore), create the + variables -execute_cmd.c - - execute_disk_command: when there is a command_not_found_hook, make - sure the subshell turns off job control before running it, in case - it runs processes. We don't want it to manipulate process groups. - Fixes bug reported by ÐиÑиллов Ðима - - execute_command_internal: make sure the command run by the `command' - builtin doesn't cause the ERR trap to be executed; wait for the - status to be returned by the command builtin. Fixes bug reported by - Martijn Dekker + 6/25 + ---- +configure.ac + - opt_bash_malloc: bash malloc no longer disabled for systems that + require eight-bit alignment; the bash malloc has had this for a + long time - 4/4 + 7/4 --- -subst.c - - process_substitute: handle longjmp back to top_level and function - returns (return_catch) in the child process, like command - substitution, so we don't longjmp back to some arbitrary spot from - the `exit' or `return' builtins, or on an expansion error, like - the command timing code. Fixes bug reported by Basin Ilya - +bashline.c + - pre_process_line: if command-oriented history is enabled, and the + line being expanded is the second or later in a multi-line command, + and we know the command is being saved as the current history entry, + decrease history_length before calling history_expand so references + like !! refer to the previous history entry as usual + +lib/readline/histexpand.c + - history_quoting_state: new variable, can be set by calling + application before calling history_expand to note that the string + being expanded is part of a quoted string. Can be set to a single + quote, a double quote, or 0 (no quoting) + - history_expand: look at history_quoting_state and honor the + single-quote setting by not expanding any initial portion of the + line before the closing single quote. This allows history expansions + to be performed on a line containing a closing single quote if they + appear after the single quote + +lib/readline/history.h + - history_quoting_state: extern declaration + +bashhist.c + - bash_history_inhibit_expansion: if history_quoting_state indicates + that this string is single-quoted, skip over the single-quoted + portion and determine whether or not the portion after the + quoted string needs to be inhibited from history expansion - 4/6 - --- parse.y - - read_token_word: when reading a matched pair of backquotes as part - of a word, treat it as quoted so the characters are read as a single - word, but do not let the presence of the backquote mark the word as - quoted. Fixes here-document delimiter bug reported by Denys Vlasenko - + - shell_getc: set history_quoting_state based on the contents of the + current delimiter before calling pre_process_line - 4/7 + 7/6 --- -execute_cmd.c - - execute_case_command: call quote_string_for_globbing with the - QGLOB_CTLESC flag for both quoted and unquoted words, so it will - remove CTLESC/CTLESC in all cases while converting other quoted - characters to use a preceding backslash. Bug reported by - Martijn Dekker +lib/readline/doc/hsuser.texi + - describe the default behavior of backslash and single and double + quotes - 4/9 +lib/readline/doc/hstech.texi + - history_quoting_state: describe effect of setting this variable + - history_quotes_inihibit_expansion: expand the description to include + the default quoting behavior that setting this variable enables + + 7/9 --- -smatch.c - - posix_cclass_only: helper function that checks whether a pattern has - only posix single-byte character classes ([:alpha:], etc.) or has - none at all - - xstrmatch: if running in a multibyte locale, make sure to short- - circuit to the single-byte matching code only if there are no - unrecognized character class names, since the wide character ctype - functions allow locales to define their own character class names - (e.g., "hyphen"). Fixes issue reported by yangyajing +support/man2html.c + - unescape: use memmove instead of strcpy to handle overlapping strings + Report and fix from Bernhard M. Wiedemann + +lib/sh/getenv.c + - getenv: check that environ is non-NULL before looking through it. + Report and fix from Keeley Hoek + + 7/12 + ---- +braces.c + - mkseq: use better integer overflow handling for systems with 32-bit + ints and 64-bit intmax_ts. Bug reported by Simon Wörner + as the result of fuzzing + +builtins/declare.def + - declare_internal: make sure bind_variable returns non-NULL when + setting attributes for a variable named as an argument to declare + that also appears in the temporary environment (and is a nameref). + Bug reported by Simon Wörner +execute_cmd.c + - execute_in_subshell: don't call set_sigint_handler if the subshell + is asynchronous, since it undoes the signal handler installed by + setup_async_signals. Fixes bug reported by Daniel Mills + -aclocal.m4 - - BASH_CHECK_DEV_STDIN: experimental change to test for /dev/stdin - independently of /dev/fd or /proc/self/fd. Suggested for QNX by - Brian Carnes +parse.y,externs.h + - reset_readahead_token: new convenience function for the rest of + the shell, resets token_to_read if it's a newline (as it will be + after reset_parser is called) +eval.c + - reader_loop: if we're just going to execute one command, make sure + the read-ahead token isn't set to something that will result in a + NULL command (by calling reset_readahead_token), since the code + will take that as the one command and set EOF_Reached - 4/11 + 7/15 ---- -lib/glob/glob.c - - glob_testdir: return -2 if DIR is a symlink, to differentiate it from - any other kind of non-directory file - - glob_vector: if we have GX_ALLDIRS (globstar), we want to skip over - symlinks to directories, since we will pick up the real directory - later. Fixes incompatibility reported by Murukesh Mohanan - +doc/{bash.1,bashref.texi} + - indirect expansion: clarify that the expansion works on parameters, + not just variables (NAMEs). Suggested by konsolebox + -bashline.c - - bash_execute_unix_command: changes to make READLINE_POINT apply to - characters instead of bytes when in a multibyte locale. Report and - fix from Koichi Murase + 7/16 + ---- +doc/{bash.1,bashref.texi} + - INSIDE_EMACS: document its effect on line editing - 4/12 + 7/17 ---- -builtins/evalstring.c - - parse_and_execute_cleanup: now takes an argument which is the value - of running_trap at some point before parse_and_execute was called; - changed callers in sig.c, builtins/evalfile.c +lib/readline/{readline.c,rlprivate.h} + - _rl_eof_found: new variable, private to the readline library, that + indicates whether the current call to readline() will return NULL + because we read EOF -builtins/common.h - - parse_and_execute_cleanup: changed prototype +lib/readline/rltty.c + - rl_deprep_terminal: if bracketed paste mode is active, the last + character of the string to disable it is \r (to avoid confusing + the terminal driver about where the cursor is). In this case, + output a newline before returning so subsequent text (like the + `exit' bash prints) doesn't overwrite the prompt. Bug from + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903936 - 4/13 - ---- -builtins/evalstring.c - - parse_and_execute_cleanup: if the argument holding the previous state - of running_trap is the same value as the current running_trap state, - don't call run_trap_cleanup: assume that there is a caller who will - take care of the cleanup after this returns. Fixes recursive trap - call on "eval return" reported by Martijn Dekker +variables.c + - make_local_assoc_variable: add second argument like corresponding + local array function, to allow this function to return an existing + local array variable to the caller for the caller to handle -parse.y - - read_a_line: if remove_quoted_newline is non-zero, indicating the - here-document delimiter is unquoted, we will be running the contents - of the here-document through word expansion and need to quote CTLESC - and CTLNUL in the input. Fixes bug with ^A in here document reported - by Jorge Alberto Baca Garcia +variables.h + - make_local_assoc_variable: change function prototype to add second + arg - 4/18 - ---- -pathexp.c - - quote_string_for_globbing: make sure the QGLOB_CTLESC code handles - both CTLESC CTLESC and CTLESC CTLNUL in the same way. Fixes bug - reported by Martijn Dekker +{subst.c,variables.c} + - make_local_assoc_variable: change callers - 4/19 - ---- -execute_cmd.c - - execute_command_internal: before executing any command in the current - shell, and before copying any existing FIFO list, call - reap_procsubs to unlink or close any process substitution pipes - associated with processes that have exited. Fixes hang in test suite - when trying to open a FIFO with no process having it open for - reading +builtins/declare.def + - declare_internal: call make_local_assoc_variable with a non-zero + second arg to have it return an existing local array variable to be + flagged as an error. Fixes bug reported by Grisha Levit + + - declare_internal: call make_local_array_variable with unconditional + second argument of 1 for the same reason as above - 4/26 + 7/18 ---- -parse.y - - read_token_word: if returning REDIR_WORD for a {id}>foo construct, - for example, make sure to assign the_word to yylval.word before - returning, in case a recursive call to the parser overwrites it - (e.g., when evaluating array indexes). From a message to - austin-group-l from Stephane Chazelas +variables.c + - bind_invalid_envvar: new function, takes invalid names from the + initial environment (names that are not valid shell identifiers) and + stores them in a separate hash table (invalid_env) + - maybe_make_export_env: make sure to add names from invalid_env to + the export env + - assign_in_env: for now, prevent variable names that aren't shell + identifiers from being added to the temporary environment. Addresses + issue raised by Grisha Levit -lib/glob/sm_loop.c - - BRACKMATCH: if we have an invalid character class in an otherwise - well-formed bracket expression, don't try to match each character - of the (invalid) class individually; just skip over the class and - move on. From a message on the austin-group list from - Stephane Chazelas +test.c + - unary_test: rearrange code slightly to avoid a wasted variable lookup + if the argument to -v is a subscripted array reference - 4/27 + 7/19 ---- variables.c - - push_exported_var,push_func_var,push_temp_var: make sure to set the - context correctly in the variable we bind in the previous (non-temp) - scope. Report from Martijn Dekker + - nameref_transform_name: if a name doesn't resolve to a shell variable, + this function will check whether it resolves to a nameref that + points to a variable that hasn't been created yet -pathexp.c - - unquoted_glob_pattern_p: a pattern that contains a backslash can - have it removed by the matching engine (since backslash is special - in pattern matching), so if the pattern contains a backslash, and - does not end in a backslash, we need to return true. Fixes bug - reported by Robert Elz +variables.h + - nameref_transform_name: extern declaration -lib/glob/gm_loop.c - - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash - that doesn't end the pattern +subst.c + - do_compound_assignment: make sure that we follow any nameref chain + if the name passed resolves to a nameref that points to a variable + that doesn't exist. Fixes issue raised by Grisha Levit + -lib/sh/timeval.c - - print_timeval: use locale_decpoint() instead of fixed `.' to print - decimal point. Bug report in austin-group email from Joerg Schilling - +builtins/declare.def + - declare_internal: before calling any variant of make_local_variable, + make sure to perform any transformation of the name indicated by an + existing nameref. Fixes issue raised by Grisha Levit + -lib/sh/clock.c - - print_clock_t: use locale_depoint() in the same way as print_timeval + 7/20 + ---- +builtins/declare.def + - declare_internal: if we are creating a global variable with -g, even + if we're not giving it a value, check for namerefs at the global + scope to avoid confusion with namerefs at the local (function) scope. - 4/29 +subst.c + - expand_word_internal: if a double-quoted string expands to nothing, + make sure we note that for later by setting had_quoted_null, just + as we do for single-quoted empty strings + +subst.[ch] + - W_SAWQUOTEDNULL: new flag (replaces W_HASCTLESC, which is unused), + means that we saw a possibly-discarded quoted null while expanding + this word + +subst.c + - expand_word_internal: if expansion results in a non-empty word but + we saw a quoted null during expansion (had_quoted_null == 1), set + W_SAWQUOTED_NULL in the returned word + - expand_word_internal: if a recursive call to param_expand comes back + with W_SAWQUOTEDNULL set in the resulting word, set had_quoted_null + to note it + - parameter_brace_expand_rhs: if a recursive call to expand_word_internal + returns a non-quoted-null string (after an optional call to + string_list) make sure we pass the W_SAWQUOTEDNULL flag back to the + caller + - word_list_split: if a word expands to nothing after expansion and + splitting, but we saw a quoted null during the expansion + (W_SAWQUOTEDNULL), return an empty word + + 7/25 ---- + subst.c - - expand_cond_node: if special != 0, make sure to add QGLOB_CTLESC - to the flags passed to quote_string_for_globbing. Same issue as the - one with `case' fixed on 4/7, report from Martijn Dekker - + - do_compound_assignment: if creating a local variable, make sure to + set `newname' to the name of the variable returned from find_variable, + since that follows namerefs. Fixes issue raised by Grisha Levit + - 4/30 + 7/29 ---- -redir.c - - do_redirection_internal: r_close_this: if the file descriptor is - already closed before the shell is asked to close it, make sure to - add an undo list redirect to make sure it stays closed. Report from - Martijn Dekker +subst.c + - get_var_and_type: if VALUE is NULL, check before calling dequote_string. + Report and fix from Grisha Levit - 5/2 - --- + 7/30 + ---- variables.c - - push_posix_temp_var: new function, takes the SHELL_VAR * passed as - an argument and uses the name and value to create a global variable - - merge_temporary_env: if posixly_correct is set, call - push_posix_temp_var to create global variables, otherwise call - push_temp_var to preserve the old behavior. Right now, it's only - called when in posix mode, but that might change. This undoes the - change from 4/27 when in posix mode + - make_local_{array,assoc}_variable: make sure we're not trying to + inherit a value from an incompatible array type. Fixes issue raised + by Grisha Levit + - nameref_transform_name: if we're trying to resolve a nameref that + will be used to create a local variable, make sure the nameref is + at the same variable scope. Report from Grisha Levit + - 5/3 + 8/2 --- -sig.c - - struct that holds the terminating signal information has a new - field: whether that signal is expected to cause a core dump - - termsig_handler: if the call to kill(2) doesn't kill the process, - we have a problem. If our pid is not 1, we just exit with status - 128+sig (fake the sig exit status). If the pid is 1, we assume - we're in a Linux pid namespace and aren't allowed to send a signal - to ourselves. If we need to generate a core dump, we try to get - the kernel to SIGSEGV us by dereferencing location 0. If not, we - just exit with 128+sig. From a report and patch from Andrei Vagin - +array.c + - array_subrange: change to use string_list_pos_params after creating a + WORD_LIST from the array slice, like assoc_subrange does - 5/4 +subst.c + - parameter_brace_substring: since assoc_subrange and array_subrange + both call string_list_pos_params now, treat the results the same as + the VT_POSPARAMS case (pos_params also calls string_list_pos_params). + Fixes behavior difference between ${a[@]:sub} and ${@:sub} reported + by Ilkka Virta + + 8/3 --- -bashline.c - - bash_execute_unix_command: make sure that parse_and_execute is called - with newly-allocated memory to avoid prematurely freeing the - command. Report and fix from Koichi Murase +array.c + - array_patsub: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@/pat/rep} and ${*/pat/rep} - 5/7 +assoc.c + - assoc_patsub: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@/pat/rep} and ${*/pat/rep} + +subst.c + - parameter_brace_patsub: change how return value of {array,assoc}_patsub + is treated to make it identical to pos_params_pat_subst, since they + all call string_list_pos_params now + - expand_string_for_pat: make sure we preserve the value of + expand_no_split_dollar_star instead of just unconditionally setting + it back to 0 in case it was 1 before this function was called + + 8/6 --- -builtins/shopt.def - - syslog_history: a shell option to control whether history is logged - to syslog; can be modified at runtime. Original patch from - Siteshwar Vashisht +array.c + - array_modcase: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@,,} and ${*,,} -config-top.h - - SYSLOG_SHOPT: new configurable option, determines whether there is a - shell option to control syslogging history lines at runtime and sets - the default value of the option +assoc.c + - assoc_modcase: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@,,} and ${*,,} -bashline.c - - syslog_history: new variable to control whether history lines are - sent to syslog; default value is the value of SYSLOG_SHOPT (or 1 - if that's not defined) - - bash_add_history: send history lines to syslog if syslog_history is - non-zero +subst.c + - parameter_brace_casemod: change how return value of {array,assoc}_modcase + is treated to make it identical to pos_params_modcase, since they + all call string_list_pos_params now - 5/10 + 8/8 + --- +builtins/declare.def + - declare_internal: if we are making local variables, and not dealing + with the nameref attribute, make sure that any nameref variable we + followed when resolving the name given was at the same variable + context. If not, we just want to make or use a local variable with + the name passed; if so, we want to use the nameref value as the + variable name. Report from Grisha Levit + + 8/9 + --- +configure.ac + - globasciiranges: RRI now on by default, must be turned off explicitly + at configure time or runtime with `shopt -u globasciiranges' + + 8/14 ---- +variables.c + - dispose_saved_dollar_vars: decrement stack pointer before looking + for saved positional parameters to dispose; stack pointer always + points to the first unused slot + 8/15 + ---- variables.c - - push_var_context: if we are in Posix mode and manipulating the - temporary environment (temporary_env), implement behavior specified - in Posix interp 1009 and make sure that temporary assignments - preceding function calls modify the current environment *before* - the function is executed. + - dollar_arg_stack: now a stack of struct saved_dollar_vars, which has + an array for the first ten (dollar_vars) and a WORD_LIST * for the + remaining (rest_of_args). Fixes performance issue with function calls + and large numbers of positional parameters raised by + Bize Ma + - {save,restore,free,free_saved}_dollar_vars: new functions to manage + dollar_vars and dollar_arg_stack members. Need to keep these in sync + with whatever remember_args does + - push_dollar_vars: use save_dollar_vars, which just copies pointers, + and directly assign rest_of_args, without copying the words, to the + dollar_arg_stack entry. Have to clear dollar_vars and rest_of_args + with the assumption that callers will call remember_args(args, 1) + immediately following + - pop_dollar_vars: free current positional parameters and restore old + ones from pointers saved in dollar_arg_stack, making sure to + invalidate any cached value for "$@" + - dispose_saved_dollar_vars: free saved pointers from current index + into dollar_arg_stack -[bash-5.0-alpha frozen] +doc/{bash.1,bashref.texi} + - POSIXLY_CORRECT: make sure to note that bash makes sure this variable + is set when posix mode is enabled + + 8/17 + ---- +{jobs,nojobs}.c + - set_jobs_list_frozen: set jobs_list_frozen to a particular value. + Intended to save and restore the value around code sections instead + of unconditionally unfreezing it. + +jobs.h + - set_jobs_list_frozen: extern declaration + +execute_cmd.c + - execute_pipeline: if lastpipe is enabled, save and restore the + value of jobs_list_frozen using freeze_jobs_list/set_jobs_list_frozen + to avoid problems with race conditions and nested pipelines + causing jobs to be removed from the jobs table. Fixes savannah issue + https://savannah.gnu.org/support/index.php?109541 reported by + Björn Kautler + + 8/24 + ---- +execute_cmd.c + - lastpipe_cleanup: call set_jobs_list_frozen instead of + unfreeze_jobs_list + - execute_pipeline: set up lastpipe_cleanup with old value of + jobs_list_frozen + + 9/3 + --- +builtins/printf.def + - getuintmax,getfloatmax: on a conversion error, return as much of the + value as we were able to convert instead of 0. Fixes bug reported + by Robert Elz + + 9/4 + --- +lib/readline/text.c,lib/readline/rlprivate.h + - _rl_backward_char_internal: new function, guts of rl_backward_char + and rl_backward_byte, not currently used there + +lib/readline/vi_mode.c + - _rl_vi_advance_point: new function, move point forward by one + character, handling multibyte locales and characters and the end + of line semantics + - _rl_vi_backup_point: new function, move point backward by one + character, handling multibyte locales and characters + - rl_vi_eword,rl_vi_eWord: use rl_vi_advance_point instead of a simple + increment to handle multibyte characters. Fixes bug reported by + Enrico Maria De Angelis + + 9/5 + --- +lib/readline/vi_mode.c + - rl_vi_fword,rl_vi_fWord: use rl_vi_advance_point instead of a simple + increment to handle multibyte characters + - rl_vi_bword,rl_vi_bWord: use rl_vi_backup_point instead of a simple + decrement (and _rl_vi_advance_point where necessary) to handle + multibyte characters + - rl_vi_complete,_rl_vi_change_mbchar_case,_rl_vi_domove_motion_cleanup: + use _rl_vi_advance_point instead of simple rl_point increment + - vi_delete_dispatch,vi_change_dispatch,vi_yank_dispatch: use + INCREMENT_POS instead of a simple increment to rl_mark to handle + multibyte characters + - rl_vi_column: use _rl_forward_char_internal, starting with + rl_point == 0, to handle multibyte characters (Posix says `character + position', not index) + + 9/7 + --- +configure.ac + - changed release status to `beta' + + 9/9 + --- +lib/readline/display.c + - _rl_update_final: if the bottom line has zero characters and we are + on that line at column 0, don't bother with an additional \r\n. + Fixes redisplay nit reported by Per Bothner + + +configure.ac + - openbsd needs DEV_FD_STAT_BROKEN defined + +[bash-5.0-beta frozen] diff --git a/INSTALL b/INSTALL index 9d5dee0be..91f1dd9a7 100644 --- a/INSTALL +++ b/INSTALL @@ -248,8 +248,8 @@ and linked, rather than changing run-time features. '--enable-largefile' Enable support for large files - (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if - the operating system requires special compiler options to build + (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the + operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support. diff --git a/MANIFEST b/MANIFEST index 56528b5bf..2b267561b 100644 --- a/MANIFEST +++ b/MANIFEST @@ -453,6 +453,7 @@ lib/sh/tmpfile.c f lib/sh/uconvert.c f lib/sh/ufuncs.c f lib/sh/unicode.c f +lib/sh/utf8.c f lib/sh/vprint.c f lib/sh/wcsdup.c f lib/sh/wcsnwidth.c f @@ -868,6 +869,7 @@ tests/array22.sub f tests/array23.sub f tests/array24.sub f tests/array25.sub f +tests/array26.sub f tests/array-at-star f tests/array2.right f tests/assoc.tests f @@ -881,6 +883,7 @@ tests/assoc6.sub f tests/assoc7.sub f tests/assoc8.sub f tests/assoc9.sub f +tests/assoc10.sub f tests/attr.tests f tests/attr.right f tests/attr1.sub f @@ -1072,6 +1075,8 @@ tests/histexp1.sub f tests/histexp2.sub f tests/histexp3.sub f tests/histexp4.sub f +tests/histexp5.sub f +tests/histexp6.sub f tests/histexp.right f tests/history.tests f tests/history.right f @@ -1136,6 +1141,8 @@ tests/nameref16.sub f tests/nameref17.sub f tests/nameref18.sub f tests/nameref19.sub f +tests/nameref20.sub f +tests/nameref21.sub f tests/nameref.right f tests/new-exp.tests f tests/new-exp1.sub f @@ -1179,6 +1186,7 @@ tests/posixexp3.sub f tests/posixexp4.sub f tests/posixexp5.sub f tests/posixexp6.sub f +tests/posixexp7.sub f tests/posixexp2.tests f tests/posixexp2.right f tests/posixpat.tests f @@ -1199,6 +1207,7 @@ tests/procsub1.sub f tests/quote.tests f tests/quote.right f tests/quote1.sub f +tests/quote2.sub f tests/read.tests f tests/read.right f tests/read1.sub f @@ -1352,7 +1361,7 @@ tests/unicode1.sub f tests/unicode2.sub f tests/unicode3.sub f tests/varenv.right f -tests/varenv.sh f +tests/varenv.tests f tests/varenv1.sub f tests/varenv2.sub f tests/varenv3.sub f @@ -1365,6 +1374,10 @@ tests/varenv9.sub f tests/varenv10.sub f tests/varenv11.sub f tests/varenv12.sub f +tests/varenv13.sub f +tests/varenv14.sub f +tests/varenv15.sub f +tests/varenv15.in f tests/version f tests/version.mini f tests/vredir.tests f diff --git a/Makefile.in b/Makefile.in index 0e6c948eb..5fcb44b01 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile for bash-5.0, version 4.25 +# Makefile for bash-5.0, version 4.27 # # Copyright (C) 1996-2018 Free Software Foundation, Inc. @@ -41,6 +41,7 @@ infodir = @infodir@ includedir = @includedir@ datadir = @datadir@ localedir = @localedir@ +pkgconfigdir = ${libdir}/pkgconfig loadablesdir = @loadablesdir@ headersdir = @headersdir@ @@ -230,7 +231,7 @@ SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \ ${SH_LIBSRC}/input_avail.c ${SH_LIBSRC}/mbscasecmp.c \ ${SH_LIBSRC}/fnxform.c ${SH_LIBSRC}/unicode.c \ ${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/wcsnwidth.c \ - ${SH_LIBSRC}/shmbchar.c + ${SH_LIBSRC}/shmbchar.c ${SH_LIBSRC}/utf8.c SHLIB_LIB = -lsh SHLIB_LIBNAME = libsh.a @@ -834,7 +835,7 @@ install-headers-dirs: @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir) @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/builtins @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/include - @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(pkgconfigdir) install-headers: install-headers-dirs @for hf in $(INSTALLED_HEADERS) ; do \ @@ -849,14 +850,14 @@ install-headers: install-headers-dirs @for hf in $(CREATED_HEADERS) ; do \ ${INSTALL_DATA} $(BUILD_DIR)/"$$hf" $(DESTDIR)$(headersdir)/$$hf; \ done - $(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(libdir)/pkgconfig/bash.pc + -$(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(pkgconfigdir)/bash.pc uninstall-headers: -( cd $(DESTDIR)$(headersdir) && $(RM) $(INSTALLED_HEADERS) ) -( cd $(DESTDIR)$(headersdir)/include && $(RM) $(INSTALLED_INCFILES) ) -( cd $(DESTDIR)$(headersdir)/builtins && $(RM) $(INSTALLED_BUILTINS_HEADERS) ) -( cd $(DESTDIR)$(headersdir) && $(RM) $(CREATED_HEADERS) ) - -( $(RM) $(DESTDIR)$(libdir)/pkgconfig/bash.pc ) + -( $(RM) $(DESTDIR)$(pkgconfigdir)/bash.pc ) uninstall: .made $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug diff --git a/NEWS b/NEWS index 66cbf97dc..1ef109f36 100644 --- a/NEWS +++ b/NEWS @@ -85,6 +85,31 @@ z. The `times' builtin now honors the current locale when printing a decimal aa. There is a new (disabled by default, undocumented) shell option to enable and disable sending history to syslog at runtime. +bb. Bash no longer allows variable assignments preceding a special builtin that + changes variable attributes to propagate back to the calling environment + unless the compatibility level is 44 or lower. + +cc. You can set the default value for $HISTSIZE at build time in config-top.h. + +dd. The `complete' builtin now accepts a -I option that applies the completion + to the initial word on the line. + +ee. The internal bash malloc now uses mmap (if available) to satisfy requests + greater than 128K bytes, so free can use mfree to return the pages to the + kernel. + +ff. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup + unless it's in debugging mode, as the documentation has always said, but + will dynamically create them if a script references them at the top level + without having enabled debugging mode. + +gg. The localvar_inherit option will not attempt to inherit a value from a + variable of an incompatible type (indexed vs. associative arrays, for + example). + +hh. The `globasciiranges' option is now enabled by default; it can be set to + off by default at configuration time. + 2. New Features in Readline a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as @@ -112,6 +137,14 @@ g. There is a simple variable comparison facility available for use within an either `on' or `off'; variable names are separated from the operator by whitespace. +h. The history expansion library now understands command and process + substitution and extended globbing and allows them to appear anywhere in a + word. + +i. The history library has a new variable that allows applications to set the + initial quoting state, so quoting state can be inherited from a previous + line. + ------------------------------------------------------------------------------- This is a terse description of the new features added to bash-4.4 since the release of bash-4.3. As always, the manual page (doc/bash.1) is diff --git a/POSIX b/POSIX index 17b41c6f3..67d8ddf89 100644 --- a/POSIX +++ b/POSIX @@ -11,212 +11,214 @@ files. The following list is what's changed when 'POSIX mode' is in effect: - 1. When a command in the hash table no longer exists, Bash will + 1. Bash ensures that the 'POSIXLY_CORRECT' variable is set. + + 2. When a command in the hash table no longer exists, Bash will re-search '$PATH' to find the new location. This is also available with 'shopt -s checkhash'. - 2. The message printed by the job control code and builtins when a job + 3. The message printed by the job control code and builtins when a job exits with a non-zero status is 'Done(status)'. - 3. The message printed by the job control code and builtins when a job + 4. The message printed by the job control code and builtins when a job is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, 'SIGTSTP'. - 4. Alias expansion is always enabled, even in non-interactive shells. + 5. Alias expansion is always enabled, even in non-interactive shells. - 5. Reserved words appearing in a context where reserved words are + 6. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + 7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number and '!!' to '!' are enabled, and parameter expansion is performed on the values of 'PS1' and 'PS2' regardless of the setting of the 'promptvars' option. - 7. The POSIX startup files are executed ('$ENV') rather than the + 8. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. - 8. Tilde expansion is only performed on assignments preceding a + 9. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 9. The default history file is '~/.sh_history' (this is the default + 10. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 10. Redirection operators do not perform filename expansion on the + 11. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 11. Redirection operators do not perform word splitting on the word in + 12. Redirection operators do not perform word splitting on the word in the redirection. - 12. Function names must be valid shell 'name's. That is, they may not + 13. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 13. Function names may not be the same as one of the POSIX special + 14. Function names may not be the same as one of the POSIX special builtins. - 14. POSIX special builtins are found before shell functions during + 15. POSIX special builtins are found before shell functions during command lookup. - 15. When printing shell function definitions (e.g., by 'type'), Bash + 16. When printing shell function definitions (e.g., by 'type'), Bash does not print the 'function' keyword. - 16. Literal tildes that appear as the first character in elements of + 17. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 17. The 'time' reserved word may be used by itself as a command. When + 18. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 18. When parsing and expanding a ${...} expansion that appears within + 19. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 19. The parser does not recognize 'time' as a reserved word if the + 20. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 20. The '!' character does not introduce history expansion within a + 21. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 21. If a POSIX special builtin returns an error status, a + 22. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 22. A non-interactive shell exits with an error status if a variable + 23. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 23. A non-interactive shell exits with an error status if a variable + 24. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 24. A non-interactive shell exits with an error status if the + 25. A non-interactive shell exits with an error status if the iteration variable in a 'for' statement or the selection variable in a 'select' statement is a readonly variable. - 25. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 26. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 26. Non-interactive shells exit if a syntax error in an arithmetic + 27. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 27. Non-interactive shells exit if a parameter expansion error occurs. + 28. Non-interactive shells exit if a parameter expansion error occurs. - 28. Non-interactive shells exit if there is a syntax error in a script + 29. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 29. Process substitution is not available. + 30. Process substitution is not available. - 30. While variable indirection is available, it may not be applied to + 31. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 31. When expanding the '*' special parameter in a pattern context + 32. When expanding the '*' special parameter in a pattern context where the expansion is double-quoted does not treat the '$*' as if it were double-quoted. - 32. Assignment statements preceding POSIX special builtins persist in + 33. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 33. Assignment statements preceding shell function calls persist in + 34. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 34. The 'command' builtin does not prevent builtins that take + 35. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 35. The 'bg' builtin uses the required format to describe each job + 36. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 36. The output of 'kill -l' prints all the signal names on a single + 37. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 37. The 'kill' builtin does not accept signal names with a 'SIG' + 38. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 38. The 'export' and 'readonly' builtin commands display their output + 39. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 39. The 'trap' builtin displays signal names without the leading + 40. The 'trap' builtin displays signal names without the leading 'SIG'. - 40. The 'trap' builtin doesn't check the first argument for a possible + 41. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 41. The '.' and 'source' builtins do not search the current directory + 42. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 42. Enabling POSIX mode has the effect of setting the + 43. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 43. When the 'alias' builtin displays alias definitions, it does not + 44. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 44. When the 'set' builtin is invoked without options, it does not + 45. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 45. When the 'set' builtin is invoked without options, it displays + 46. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 47. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 47. The 'pwd' builtin verifies that the value it prints is the same as + 48. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the '-P' option. - 48. When listing the history, the 'fc' builtin does not include an + 49. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 49. The default editor used by 'fc' is 'ed'. + 50. The default editor used by 'fc' is 'ed'. - 50. The 'type' and 'command' builtins will not report a non-executable + 51. The 'type' and 'command' builtins will not report a non-executable file as having been found, though the shell will attempt to execute such a file if it is the only so-named file found in '$PATH'. - 51. The 'vi' editing mode will invoke the 'vi' editor directly when + 52. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 52. When the 'xpg_echo' option is enabled, Bash does not attempt to + 53. When the 'xpg_echo' option is enabled, Bash does not attempt to interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 53. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 54. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 55. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 55. The 'read' builtin may be interrupted by a signal for which a trap + 56. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 56. Bash removes an exited background process's status from the list + 57. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default diff --git a/aclocal.m4 b/aclocal.m4 index 6ea6f40f9..6ed03e10b 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1307,7 +1307,7 @@ AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, typedef RETSIGTYPE sigfunc(); -int nsigint; +volatile int nsigint; #ifdef HAVE_POSIX_SIGNALS sigfunc * diff --git a/array.c b/array.c index 5f7d72f13..bca18c544 100644 --- a/array.c +++ b/array.c @@ -406,8 +406,8 @@ int starsub, quoted; ARRAY *a2; ARRAY_ELEMENT *h, *p; arrayind_t i; - char *ifs, *sifs, *t; - int slen; + char *t; + WORD_LIST *wl; p = a ? array_head (a) : 0; if (p == 0 || array_empty (a) || start > array_max_index(a)) @@ -432,32 +432,12 @@ int starsub, quoted; a2 = array_slice(a, h, p); - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) - array_quote(a2); - else - array_quote_escapes(a2); - - if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { - /* ${array[*]} */ - array_remove_quoted_nulls (a2); - sifs = ifs_firstchar ((int *)NULL); - t = array_to_string (a2, sifs, 0); - free (sifs); - } else if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) { - /* ${array[@]} */ - sifs = ifs_firstchar (&slen); - ifs = getifs (); - if (ifs == 0 || *ifs == 0) { - if (slen < 2) - sifs = xrealloc(sifs, 2); - sifs[0] = ' '; - sifs[1] = '\0'; - } - t = array_to_string (a2, sifs, 0); - free (sifs); - } else - t = array_to_string (a2, " ", 0); + wl = array_to_word_list(a2); array_dispose(a2); + if (wl == 0) + return (char *)NULL; + t = string_list_pos_params(starsub ? '*' : '@', wl, quoted); + dispose_words(wl); return t; } @@ -468,50 +448,28 @@ ARRAY *a; char *pat, *rep; int mflags; { - ARRAY *a2; - ARRAY_ELEMENT *e; - char *t, *sifs, *ifs; - int slen; + char *t; + int pchar, qflags; + WORD_LIST *wl, *save; if (a == 0 || array_head(a) == 0 || array_empty(a)) return ((char *)NULL); - a2 = array_copy(a); - for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) { - t = pat_subst(element_value(e), pat, rep, mflags); - FREE(element_value(e)); - e->value = t; + wl = array_to_word_list(a); + if (wl == 0) + return (char *)NULL; + + for (save = wl; wl; wl = wl->next) { + t = pat_subst (wl->word->word, pat, rep, mflags); + FREE (wl->word->word); + wl->word->word = t; } - if (mflags & MATCH_QUOTED) - array_quote(a2); - else - array_quote_escapes(a2); - - if (mflags & MATCH_STARSUB) { - array_remove_quoted_nulls (a2); - if ((mflags & MATCH_QUOTED) == 0 && ifs_is_null) - sifs = spacesep; - else - sifs = ifs_firstchar((int *)NULL); - t = array_to_string (a2, sifs, 0); - if (sifs != spacesep) - free(sifs); - } else if (mflags & MATCH_QUOTED) { - /* ${array[@]} */ - sifs = ifs_firstchar (&slen); - ifs = getifs (); - if (ifs == 0 || *ifs == 0) { - if (slen < 2) - sifs = xrealloc (sifs, 2); - sifs[0] = ' '; - sifs[1] = '\0'; - } - t = array_to_string (a2, sifs, 0); - free(sifs); - } else - t = array_to_string (a2, " ", 0); - array_dispose (a2); + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + + t = string_list_pos_params (pchar, save, qflags); + dispose_words(save); return t; } @@ -523,53 +481,32 @@ char *pat; int modop; int mflags; { - ARRAY *a2; - ARRAY_ELEMENT *e; - char *t, *sifs, *ifs; - int slen; + char *t; + int pchar, qflags; + WORD_LIST *wl, *save; if (a == 0 || array_head(a) == 0 || array_empty(a)) return ((char *)NULL); - a2 = array_copy(a); - for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) { - t = sh_modcase(element_value(e), pat, modop); - FREE(element_value(e)); - e->value = t; + wl = array_to_word_list(a); + if (wl == 0) + return ((char *)NULL); + + for (save = wl; wl; wl = wl->next) { + t = sh_modcase(wl->word->word, pat, modop); + FREE(wl->word->word); + wl->word->word = t; } - if (mflags & MATCH_QUOTED) - array_quote(a2); - else - array_quote_escapes(a2); - - if (mflags & MATCH_STARSUB) { - array_remove_quoted_nulls (a2); - if ((mflags & MATCH_QUOTED) == 0 && ifs_is_null) - sifs = spacesep; - else - sifs = ifs_firstchar((int *)NULL); - t = array_to_string (a2, sifs, 0); - if (sifs != spacesep) - free(sifs); - } else if (mflags & MATCH_QUOTED) { - /* ${array[@]} */ - sifs = ifs_firstchar (&slen); - ifs = getifs (); - if (ifs == 0 || *ifs == 0) { - if (slen < 2) - sifs = xrealloc (sifs, 2); - sifs[0] = ' '; - sifs[1] = '\0'; - } - t = array_to_string (a2, sifs, 0); - free(sifs); - } else - t = array_to_string (a2, " ", 0); - array_dispose (a2); + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + + t = string_list_pos_params (pchar, save, qflags); + dispose_words(save); return t; } + /* * Allocate and return a new array element with index INDEX and value * VALUE. diff --git a/arrayfunc.c b/arrayfunc.c index 10b2b06a3..e3700dd3e 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -199,6 +199,8 @@ bind_array_var_internal (entry, ind, key, value, flags) FREE (newval); VUNSETATTR (entry, att_invisible); /* no longer invisible */ + + /* check mark_modified_variables if we ever want to export array vars */ return (entry); } diff --git a/assoc.c b/assoc.c index 84a387c20..673eccb22 100644 --- a/assoc.c +++ b/assoc.c @@ -305,54 +305,29 @@ assoc_patsub (h, pat, rep, mflags) char *pat, *rep; int mflags; { - BUCKET_CONTENTS *tlist; - int i, slen; - HASH_TABLE *h2; - char *t, *sifs, *ifs; + char *t; + int pchar, qflags; + WORD_LIST *wl, *save; if (h == 0 || assoc_empty (h)) return ((char *)NULL); - h2 = assoc_copy (h); - for (i = 0; i < h2->nbuckets; i++) - for (tlist = hash_items (i, h2); tlist; tlist = tlist->next) - { - t = pat_subst ((char *)tlist->data, pat, rep, mflags); - FREE (tlist->data); - tlist->data = t; - } - - if (mflags & MATCH_QUOTED) - assoc_quote (h2); - else - assoc_quote_escapes (h2); + wl = assoc_to_word_list (h); + if (wl == 0) + return (char *)NULL; - if (mflags & MATCH_STARSUB) + for (save = wl; wl; wl = wl->next) { - assoc_remove_quoted_nulls (h2); - sifs = ifs_firstchar ((int *)NULL); - t = assoc_to_string (h2, sifs, 0); - free (sifs); + t = pat_subst (wl->word->word, pat, rep, mflags); + FREE (wl->word->word); + wl->word->word = t; } - else if (mflags & MATCH_QUOTED) - { - /* ${array[@]} */ - sifs = ifs_firstchar (&slen); - ifs = getifs (); - if (ifs == 0 || *ifs == 0) - { - if (slen < 2) - sifs = xrealloc (sifs, 2); - sifs[0] = ' '; - sifs[1] = '\0'; - } - t = assoc_to_string (h2, sifs, 0); - free(sifs); - } - else - t = assoc_to_string (h2, " ", 0); - assoc_dispose (h2); + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + + t = string_list_pos_params (pchar, save, qflags); + dispose_words (save); return t; } @@ -364,54 +339,29 @@ assoc_modcase (h, pat, modop, mflags) int modop; int mflags; { - BUCKET_CONTENTS *tlist; - int i, slen; - HASH_TABLE *h2; - char *t, *sifs, *ifs; + char *t; + int pchar, qflags; + WORD_LIST *wl, *save; if (h == 0 || assoc_empty (h)) return ((char *)NULL); - h2 = assoc_copy (h); - for (i = 0; i < h2->nbuckets; i++) - for (tlist = hash_items (i, h2); tlist; tlist = tlist->next) - { - t = sh_modcase ((char *)tlist->data, pat, modop); - FREE (tlist->data); - tlist->data = t; - } - - if (mflags & MATCH_QUOTED) - assoc_quote (h2); - else - assoc_quote_escapes (h2); + wl = assoc_to_word_list (h); + if (wl == 0) + return ((char *)NULL); - if (mflags & MATCH_STARSUB) - { - assoc_remove_quoted_nulls (h2); - sifs = ifs_firstchar ((int *)NULL); - t = assoc_to_string (h2, sifs, 0); - free (sifs); - } - else if (mflags & MATCH_QUOTED) + for (save = wl; wl; wl = wl->next) { - /* ${array[@]} */ - sifs = ifs_firstchar (&slen); - ifs = getifs (); - if (ifs == 0 || *ifs == 0) - { - if (slen < 2) - sifs = xrealloc (sifs, 2); - sifs[0] = ' '; - sifs[1] = '\0'; - } - t = assoc_to_string (h2, sifs, 0); - free(sifs); + t = sh_modcase (wl->word->word, pat, modop); + FREE (wl->word->word); + wl->word->word = t; } - else - t = assoc_to_string (h2, " ", 0); - assoc_dispose (h2); + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + + t = string_list_pos_params (pchar, save, qflags); + dispose_words (save); return t; } diff --git a/bashhist.c b/bashhist.c index e0afe52ac..7912cce31 100644 --- a/bashhist.c +++ b/bashhist.c @@ -60,6 +60,10 @@ extern int rl_done, rl_dispatching; /* should really include readline.h */ #endif +#ifndef HISTSIZE_DEFAULT +# define HISTSIZE_DEFAULT "500" +#endif + #if !defined (errno) extern int errno; #endif @@ -209,7 +213,7 @@ bash_history_inhibit_expansion (string, i) char *string; int i; { - int t; + int t, si; char hx[2]; hx[0] = history_expansion_char; @@ -232,9 +236,20 @@ bash_history_inhibit_expansion (string, i) return (1); #endif + si = 0; + /* If we're supposed to be in single-quoted string, skip over the + single-quoted part and then look at what's left. */ + if (history_quoting_state == '\'') + { + si = skip_to_delim (string, 0, "'", SD_NOJMP|SD_HISTEXP); + if (string[si] == 0 || si >= i) + return (1); + si++; + } + /* Make sure the history expansion should not be skipped by quoting or command/process substitution. */ - else if ((t = skip_to_histexp (string, 0, hx, SD_NOJMP|SD_HISTEXP)) > 0) + if ((t = skip_to_histexp (string, si, hx, SD_NOJMP|SD_HISTEXP)) > 0) { /* Skip instances of history expansion appearing on the line before this one. */ @@ -305,7 +320,7 @@ load_history () Note that the history file is automatically truncated to the size of HISTSIZE if the user does not explicitly set the size differently. */ - set_if_not ("HISTSIZE", "500"); + set_if_not ("HISTSIZE", HISTSIZE_DEFAULT); sv_histsize ("HISTSIZE"); set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE")); @@ -545,7 +560,15 @@ pre_process_line (line, print_changes, addit) add that line to the history if ADDIT is non-zero. */ if (!history_expansion_inhibited && history_expansion && history_expansion_p (line)) { + /* If we are expanding the second or later line of a multi-line + command, decrease history_length so references to history expansions + in these lines refer to the previous history entry and not the + current command. */ + if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) + history_length--; expanded = history_expand (line, &history_value); + if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) + history_length++; if (expanded) { diff --git a/bashline.c b/bashline.c index ae8fe1ccc..2b080197e 100644 --- a/bashline.c +++ b/bashline.c @@ -1426,6 +1426,7 @@ attempt_shell_completion (text, start, end) char **matches, *command_separator_chars; #if defined (PROGRAMMABLE_COMPLETION) int have_progcomps, was_assignment; + COMPSPEC *iw_compspec; #endif command_separator_chars = COMMAND_SEPARATORS; @@ -1510,7 +1511,9 @@ attempt_shell_completion (text, start, end) #if defined (PROGRAMMABLE_COMPLETION) /* Attempt programmable completion. */ have_progcomps = prog_completion_enabled && (progcomp_size () > 0); - if (matches == 0 && (in_command_position == 0 || text[0] == '\0') && + iw_compspec = progcomp_search (INITIALWORD); + if (matches == 0 && + (in_command_position == 0 || text[0] == '\0' || (in_command_position && iw_compspec)) && current_prompt_string == ps1_prompt) { int s, e, s1, e1, os, foundcs; @@ -1564,7 +1567,7 @@ attempt_shell_completion (text, start, end) else if (start == end && start == s1 && e != 0 && e1 > end) /* beginning of command name, leading whitespace */ foundcs = 0; else if (e == 0 && e == s && text[0] == '\0' && have_progcomps) /* beginning of empty line */ - prog_complete_matches = programmable_completions ("_EmptycmD_", text, s, e, &foundcs); + prog_complete_matches = programmable_completions (EMPTYCMD, text, s, e, &foundcs); else if (start == end && text[0] == '\0' && s1 > start && whitespace (rl_line_buffer[start])) foundcs = 0; /* whitespace before command name */ else if (e > s && was_assignment == 0 && e1 == end && rl_line_buffer[e] == 0 && whitespace (rl_line_buffer[e-1]) == 0) @@ -1589,8 +1592,8 @@ attempt_shell_completion (text, start, end) } else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0) { - foundcs = 0; /* empty command name following assignments */ - in_command_position = was_assignment; + foundcs = 0; /* empty command name following optional assignments */ + in_command_position += was_assignment; } else if (s == start && e == end && STREQ (n, text) && start > 0) { @@ -1599,6 +1602,12 @@ attempt_shell_completion (text, start, end) } else foundcs = 0; + + /* If we have defined a compspec for the initial (command) word, call + it and process the results like any other programmable completion. */ + if (in_command_position && have_progcomps && foundcs == 0 && iw_compspec) + prog_complete_matches = programmable_completions (INITIALWORD, text, s, e, &foundcs); + FREE (n); /* XXX - if we found a COMPSPEC for the command, just return whatever the programmable completion code returns, and disable the default diff --git a/braces.c b/braces.c index 315c62f1f..2a255c781 100644 --- a/braces.c +++ b/braces.c @@ -1,6 +1,6 @@ /* braces.c -- code for doing word expansion in curly braces. */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -420,9 +420,9 @@ mkseq (start, end, incr, type, width) /* Instead of a simple nelem = prevn + 1, something like: nelem = (prevn / imaxabs(incr)) + 1; would work */ - nelem = (prevn / sh_imaxabs(incr)) + 1; - if (nelem > INT_MAX - 2) /* Don't overflow int */ + if ((prevn / sh_imaxabs (incr)) > INT_MAX - 3) /* check int overflow */ return ((char **)NULL); + nelem = (prevn / sh_imaxabs(incr)) + 1; result = strvec_mcreate (nelem + 1); if (result == 0) { @@ -778,7 +778,9 @@ array_concat (arr1, arr2) len1 = strvec_len (arr1); len2 = strvec_len (arr2); - result = (char **)xmalloc ((1 + (len1 * len2)) * sizeof (char *)); + result = (char **)malloc ((1 + (len1 * len2)) * sizeof (char *)); + if (result == 0) + return (result); len = 0; for (i = 0; i < len1; i++) diff --git a/builtins/common.c b/builtins/common.c index 0752f0d6d..00be24ea0 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -678,7 +678,7 @@ get_job_spec (list) if (DIGIT (*word) && all_digits (word)) { job = atoi (word); - return (job > js.j_jobslots ? NO_JOB : job - 1); + return ((job < 0 || job > js.j_jobslots) ? NO_JOB : job - 1); } jflags = 0; diff --git a/builtins/complete.def b/builtins/complete.def index 3ca8c1fae..1ea308bd4 100644 --- a/builtins/complete.def +++ b/builtins/complete.def @@ -23,7 +23,7 @@ $PRODUCES complete.c $BUILTIN complete $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION complete_builtin -$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...] +$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...] Specify how arguments are to be completed by Readline. For each NAME, specify how arguments are to be completed. If no options @@ -38,10 +38,12 @@ Options: without any specific completion defined -E apply the completions and actions to "empty" commands -- completion attempted on a blank line + -I apply the completions and actions to the intial (usually the + command) word When completion is attempted, the actions are applied in the order the -uppercase-letter options are listed above. The -D option takes -precedence over -E. +uppercase-letter options are listed above. If multiple options are supplied, +the -D option takes precedence over -E, and both take precedence over -I. Exit Status: Returns success unless an invalid option is supplied or an error occurs. @@ -79,6 +81,7 @@ struct _optflags { int rflag; int Dflag; int Eflag; + int Iflag; }; static int find_compact __P((char *)); @@ -195,7 +198,7 @@ build_actions (list, flagp, actp, optp) opt_given = 0; reset_internal_getopt (); - while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:DE")) != -1) + while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:DEI")) != -1) { opt_given = 1; switch (opt) @@ -307,6 +310,18 @@ build_actions (list, flagp, actp, optp) builtin_usage (); return (EX_USAGE); } + case 'I': + if (flagp) + { + flagp->Iflag = 1; + break; + } + else + { + sh_invalidopt ("-I"); + builtin_usage (); + return (EX_USAGE); + } case 'F': Farg = list_optarg; break; @@ -355,7 +370,8 @@ complete_builtin (list) return (EXECUTION_SUCCESS); } - opt_given = oflags.pflag = oflags.rflag = oflags.Dflag = oflags.Eflag = 0; + opt_given = oflags.pflag = oflags.rflag = 0; + oflags.Dflag = oflags.Eflag = oflags.Iflag = 0; acts = copts = (unsigned long)0L; Garg = Warg = Parg = Sarg = Xarg = Farg = Carg = (char *)NULL; @@ -370,8 +386,14 @@ complete_builtin (list) list = loptend; - wl = oflags.Dflag ? make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL) - : (oflags.Eflag ? make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL) : 0); + if (oflags.Dflag) + wl = make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL); + else if (oflags.Eflag) + wl = make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL); + else if (oflags.Iflag) + wl = make_word_list (make_bare_word (INITIALWORD), (WORD_LIST *)NULL); + else + wl = (WORD_LIST *)NULL; /* -p overrides everything else */ if (oflags.pflag || (list == 0 && opt_given == 0)) @@ -564,10 +586,12 @@ print_one_completion (cmd, cs) /* simple arguments that don't require quoting */ PRINTARG (cs->funcname, "-F"); - if (STREQ (cmd, EMPTYCMD)) - printf ("-E\n"); - else if (STREQ (cmd, DEFAULTCMD)) + if (STREQ (cmd, DEFAULTCMD)) printf ("-D\n"); + else if (STREQ (cmd, EMPTYCMD)) + printf ("-E\n"); + else if (STREQ (cmd, INITIALWORD)) + printf ("-I\n"); else printf ("%s\n", cmd); @@ -608,10 +632,12 @@ print_compopts (cmd, cs, full) PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); } - if (STREQ (cmd, EMPTYCMD)) - printf ("-E\n"); - else if (STREQ (cmd, DEFAULTCMD)) + if (STREQ (cmd, DEFAULTCMD)) printf ("-D\n"); + else if (STREQ (cmd, EMPTYCMD)) + printf ("-E\n"); + else if (STREQ (cmd, INITIALWORD)) + printf ("-I\n"); else printf ("%s\n", cmd); } @@ -769,7 +795,7 @@ compgen_builtin (list) $BUILTIN compopt $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION compopt_builtin -$SHORT_DOC compopt [-o|+o option] [-DE] [name ...] +$SHORT_DOC compopt [-o|+o option] [-DEI] [name ...] Modify or display completion options. Modify the completion options for each NAME, or, if no NAMEs are supplied, @@ -780,6 +806,7 @@ Options: -o option Set completion option OPTION for each NAME -D Change options for the "default" command completion -E Change options for the "empty" command completion + -I Change options for completion on the initial word Using `+o' instead of `-o' turns off the specified option. @@ -800,15 +827,15 @@ int compopt_builtin (list) WORD_LIST *list; { - int opts_on, opts_off, *opts, opt, oind, ret, Dflag, Eflag; + int opts_on, opts_off, *opts, opt, oind, ret, Dflag, Eflag, Iflag; WORD_LIST *l, *wl; COMPSPEC *cs; - opts_on = opts_off = Eflag = Dflag = 0; + opts_on = opts_off = Eflag = Dflag = Iflag = 0; ret = EXECUTION_SUCCESS; reset_internal_getopt (); - while ((opt = internal_getopt (list, "+o:DE")) != -1) + while ((opt = internal_getopt (list, "+o:DEI")) != -1) { opts = (list_opttype == '-') ? &opts_on : &opts_off; @@ -829,6 +856,9 @@ compopt_builtin (list) case 'E': Eflag = 1; break; + case 'I': + Iflag = 1; + break; CASE_HELPOPT; default: builtin_usage (); @@ -837,8 +867,14 @@ compopt_builtin (list) } list = loptend; - wl = Dflag ? make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL) - : (Eflag ? make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL) : 0); + if (Dflag) + wl = make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL); + else if (Eflag) + wl = make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL); + else if (Iflag) + wl = make_word_list (make_bare_word (INITIALWORD), (WORD_LIST *)NULL); + else + wl = (WORD_LIST *)NULL; if (list == 0 && wl == 0) { diff --git a/builtins/declare.def b/builtins/declare.def index 2574eba4d..7eac6f583 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -440,19 +440,38 @@ restart_new_var_name: refvar = (SHELL_VAR *)NULL; if (variable_context && mkglobal == 0 && ((flags_on & att_function) == 0)) { + char *newname; + /* check name for validity here? */ + var = find_variable (name); + if (var == 0) + newname = nameref_transform_name (name, ASS_MKLOCAL); + else if ((flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0) + { + /* Ok, we're following namerefs here, so let's make sure that if + we followed one, it was at the same context (see below for + more details). */ + refvar = find_variable_last_nameref (name, 1); + newname = (refvar && refvar->context != variable_context) ? name : var->name; + refvar = (SHELL_VAR *)NULL; + } + else + newname = name; /* dealing with nameref attribute */ + #if defined (ARRAY_VARS) + /* Pass 1 as second argument to make_local_{assoc,array}_variable + return an existing {array,assoc} variable to be flagged as an + error below. */ if (flags_on & att_assoc) - var = make_local_assoc_variable (name); + var = make_local_assoc_variable (newname, 1); else if ((flags_on & att_array) || making_array_special) - var = make_local_array_variable (name, making_array_special); + var = make_local_array_variable (newname, 1); else #endif if (offset == 0 && (flags_on & att_nameref)) { /* First look for refvar at current scope */ refvar = find_variable_last_nameref (name, 1); - var = find_variable (name); /* VARIABLE_CONTEXT != 0, so we are attempting to create or modify the attributes for a local variable at the same scope. If we've used a reference from a previous context to resolve VAR, we @@ -471,7 +490,8 @@ restart_new_var_name: } else /* XXX - check name for validity here with valid_nameref_value */ - var = make_local_variable (name, 0); /* sets att_invisible for new vars */ + var = make_local_variable ((flags_on & att_nameref) ? name : newname, 0); /* sets att_invisible for new vars */ + if (var == 0) { any_failed++; @@ -623,14 +643,14 @@ restart_new_var_name: } #endif - /* See if we are trying to set flags or value for an existing nameref - that points to a non-existent variable: e.g., + /* See if we are trying to set flags or value (or create) for an + existing nameref that points to a non-existent variable: e.g., declare -n foo=bar unset foo # unsets bar declare -i foo foo=4+4 declare -p foo */ - if (var == 0 && (flags_on || flags_off || offset)) + if (var == 0 && (mkglobal || flags_on || flags_off || offset)) { refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); if (refvar && nameref_p (refvar) == 0) @@ -939,9 +959,12 @@ restart_new_var_name: { tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring (""); tv = bind_variable (var->name, tvalue, 0); - tv->attributes |= var->attributes & ~att_tempvar; - if (tv->context > 0) - VSETATTR (tv, att_propagate); + if (tv) + { + tv->attributes |= var->attributes & ~att_tempvar; + if (tv->context > 0) + VSETATTR (tv, att_propagate); + } free (tvalue); } VSETATTR (var, att_propagate); diff --git a/builtins/printf.def b/builtins/printf.def index fc0892918..1f76c25f7 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -1198,8 +1198,10 @@ getuintmax () if (*ep) { sh_invalidnum (garglist->word->word); +#if 0 /* Same POSIX.2 conversion error requirements as getintmax(). */ ret = 0; +#endif conversion_error = 1; } else if (errno == ERANGE) @@ -1227,8 +1229,10 @@ getfloatmax () if (*ep) { sh_invalidnum (garglist->word->word); +#if 0 /* Same thing about POSIX.2 conversion error requirements. */ ret = 0; +#endif conversion_error = 1; } else if (errno == ERANGE) diff --git a/builtins/read.def b/builtins/read.def index 584ff70a4..a73905c37 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -705,6 +705,7 @@ add_char: } else # endif + if (locale_utf8locale == 0 || ((c & 0x80) != 0)) i += read_mbchar (fd, input_string, i, c, unbuffered_read); } #endif diff --git a/builtins/setattr.def b/builtins/setattr.def index 916515f87..c756964a0 100644 --- a/builtins/setattr.def +++ b/builtins/setattr.def @@ -560,18 +560,23 @@ set_var_attribute (name, attribute, undo) var->attributes |= tv->attributes & ~att_tempvar; /* This avoids an error message when propagating a read-only var later on. */ - if (var->context == 0 && (attribute & att_readonly)) + if (posixly_correct || shell_compatibility_level <= 44) { - /* Don't bother to set the `propagate to the global variables - table' flag if we've just bound the variable in that table */ - v = find_global_variable (tv->name); - if (v != var) + if (var->context == 0 && (attribute & att_readonly)) + { + /* Don't bother to set the `propagate to the global variables + table' flag if we've just bound the variable in that + table */ + v = find_global_variable (tv->name); + if (v != var) + VSETATTR (tv, att_propagate); + } + else VSETATTR (tv, att_propagate); + if (var->context != 0) + VSETATTR (var, att_propagate); } - else - VSETATTR (tv, att_propagate); - if (var->context != 0) - VSETATTR (var, att_propagate); + SETVARATTR (tv, attribute, undo); /* XXX */ stupidly_hack_special_variables (tv->name); diff --git a/builtins/shopt.def b/builtins/shopt.def index 9b88aa446..d76b86697 100644 --- a/builtins/shopt.def +++ b/builtins/shopt.def @@ -110,6 +110,7 @@ extern int enable_hostname_completion __P((int)); #if defined (PROGRAMMABLE_COMPLETION) extern int prog_completion_enabled; +extern int progcomp_alias; #endif #if defined (DEBUGGER) @@ -219,7 +220,7 @@ static struct { { "lithist", &literal_history, (shopt_set_func_t *)NULL }, #endif { "localvar_inherit", &localvar_inherit, (shopt_set_func_t *)NULL }, -#if 0 +#if 0 /* bash-5.0-beta */ { "localvar_unset", &localvar_unset, (shopt_set_func_t *)NULL }, #endif { "login_shell", &shopt_login_shell, set_login_shell }, @@ -232,6 +233,9 @@ static struct { { "nullglob", &allow_null_glob_expansion, (shopt_set_func_t *)NULL }, #if defined (PROGRAMMABLE_COMPLETION) { "progcomp", &prog_completion_enabled, (shopt_set_func_t *)NULL }, +# if 0 /* bash-5.0-beta */ + { "progcomp_alias", &progcomp_alias, (shopt_set_func_t *)NULL }, +# endif #endif { "promptvars", &promptvars, (shopt_set_func_t *)NULL }, #if defined (RESTRICTED_SHELL) diff --git a/command.h b/command.h index 856264405..32495162a 100644 --- a/command.h +++ b/command.h @@ -94,7 +94,7 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_HASQUOTEDNULL 0x040000 /* word contains a quoted null character */ #define W_DQUOTE 0x080000 /* word should be treated as if double-quoted */ #define W_NOPROCSUB 0x100000 /* don't perform process substitution */ -#define W_HASCTLESC 0x200000 /* word contains literal CTLESC characters */ +#define W_SAWQUOTEDNULL 0x200000 /* word contained a quoted null that was removed */ #define W_ASSIGNASSOC 0x400000 /* word looks like associative array assignment */ #define W_ASSIGNARRAY 0x800000 /* word looks like a compound indexed array assignment */ #define W_ARRAYIND 0x1000000 /* word is an array index being expanded */ diff --git a/config-top.h b/config-top.h index a7008bcaf..b1ed925f1 100644 --- a/config-top.h +++ b/config-top.h @@ -176,3 +176,7 @@ /* Define to force the value of OLDPWD inherited from the environment to be a directory */ #define OLDPWD_CHECK_DIRECTORY 1 + +/* Define to set the initial size of the history list ($HISTSIZE). This must + be a string. */ +/*#define HISTSIZE_DEFAULT "500"*/ diff --git a/config.h.in b/config.h.in index 1e4b71d1e..aa0c0312c 100644 --- a/config.h.in +++ b/config.h.in @@ -1028,6 +1028,9 @@ /* Define if you have the header file. */ #undef HAVE_SYS_IOCTL_H +/* Define if you have the header file. */ +#undef HAVE_SYS_MMAN_H + /* Define if you have the header file. */ #undef HAVE_SYS_NDIR_H @@ -1167,6 +1170,9 @@ /* Define if you have a working `mmap' system call. */ #undef HAVE_MMAP +/* Define if you have the `mremap' function. */ +#undef HAVE_MREMAP + /* Define if you have the `munmap' function. */ #undef HAVE_MUNMAP diff --git a/configure b/configure index f0db2db73..dd4ff051e 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac for Bash 5.0, version 4.091. +# From configure.ac for Bash 5.0, version 5.002. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 5.0-alpha. +# Generated by GNU Autoconf 2.69 for bash 5.0-beta. # # Report bugs to . # @@ -581,8 +581,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='5.0-alpha' -PACKAGE_STRING='bash 5.0-alpha' +PACKAGE_VERSION='5.0-beta' +PACKAGE_STRING='bash 5.0-beta' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' @@ -1394,7 +1394,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 5.0-alpha to adapt to many kinds of systems. +\`configure' configures bash 5.0-beta to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1459,7 +1459,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 5.0-alpha:";; + short | recursive ) echo "Configuration of bash 5.0-beta:";; esac cat <<\_ACEOF @@ -1655,7 +1655,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 5.0-alpha +bash configure 5.0-beta generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2364,7 +2364,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 5.0-alpha, which was +It was created by bash $as_me 5.0-beta, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2759,7 +2759,7 @@ ac_config_headers="$ac_config_headers config.h" BASHVERS=5.0 -RELSTATUS=alpha +RELSTATUS=beta case "$RELSTATUS" in alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -2847,33 +2847,38 @@ opt_with_installed_readline=no #htmldir= case "${host_cpu}-${host_os}" in +# mostly obsolete platforms alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux *[Cc]ray*-*) opt_bash_malloc=no ;; # Crays *-osf1*) opt_bash_malloc=no ;; # other osf/1 machines +*-dgux*) opt_bash_malloc=no ;; # DG/UX machines sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2 -sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment -mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir +*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins +*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +*-beos*) opt_bash_malloc=no ;; # they say it's suitable +# These need additional investigation sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF -#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here -#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree -*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment -*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment *-aix*) opt_bash_malloc=no ;; # AIX machines +*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment +# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2) *-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep *-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep *-macos*) opt_bash_malloc=no ;; # Apple MacOS X *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) -*-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x *-machten4) opt_bash_malloc=no ;; # MachTen 4.x -*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins -*-beos*) opt_bash_malloc=no ;; # they say it's suitable -*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment -*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +# Niche or non-mainstream-shell-user systems +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS +# Deprecated -- bash malloc is suitable +#sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment +#mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment +#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here +#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree +#*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment +#*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment esac # memory scrambling on free() @@ -2981,7 +2986,7 @@ opt_casemod_attrs=yes opt_casemod_expansions=yes opt_extglob_default=no opt_dircomplete_expand_default=no -opt_globascii_default=no +opt_globascii_default=yes opt_function_import=yes opt_dev_fd_stat_broken=no @@ -3004,7 +3009,7 @@ if test $opt_minimal_config = yes; then opt_net_redirs=no opt_progcomp=no opt_separate_help=no opt_multibyte=yes opt_cond_regexp=no opt_coproc=no opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no - opt_globascii_default=no + opt_globascii_default=yes fi # Check whether --enable-alias was given. @@ -5404,7 +5409,7 @@ fi case "$ac_cv_rl_version" in - 7*|8*|9*) ;; + 8*|9*) ;; *) opt_with_installed_readline=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5 $as_echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} @@ -9292,7 +9297,7 @@ fi done for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ - sys/param.h sys/socket.h sys/stat.h \ + sys/mman.h sys/param.h sys/socket.h sys/stat.h \ sys/time.h sys/times.h sys/types.h sys/wait.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -11046,7 +11051,7 @@ fi rm -f conftest.mmap conftest.txt for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ - munmap stpcpy strcspn + munmap mremap stpcpy strcspn do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -15252,7 +15257,7 @@ else typedef RETSIGTYPE sigfunc(); -int nsigint; +volatile int nsigint; #ifdef HAVE_POSIX_SIGNALS sigfunc * @@ -16175,6 +16180,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading *) $as_echo "#define PGRP_PIPE 1" >>confdefs.h ;; esac ;; +openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; *qnx[67]*) LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; @@ -16815,7 +16821,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 5.0-alpha, which was +This file was extended by bash $as_me 5.0-beta, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16881,7 +16887,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -bash config.status 5.0-alpha +bash config.status 5.0-beta configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index d0ccffb46..5ead20165 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. -# Copyright (C) 1987-2016 Free Software Foundation, Inc. +# Copyright (C) 1987-2018 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify @@ -21,10 +21,10 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see . -AC_REVISION([for Bash 5.0, version 4.091])dnl +AC_REVISION([for Bash 5.0, version 5.002])dnl define(bashvers, 5.0) -define(relstatus, alpha) +define(relstatus, beta) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) @@ -63,33 +63,38 @@ dnl some systems should be configured without the bash malloc by default dnl and some need a special compiler or loader dnl look in the NOTES file for more case "${host_cpu}-${host_os}" in +# mostly obsolete platforms alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux *[[Cc]]ray*-*) opt_bash_malloc=no ;; # Crays *-osf1*) opt_bash_malloc=no ;; # other osf/1 machines +*-dgux*) opt_bash_malloc=no ;; # DG/UX machines sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2 -sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment -mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir +*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins +*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +*-beos*) opt_bash_malloc=no ;; # they say it's suitable +# These need additional investigation sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF -#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here -#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree -*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment -*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment *-aix*) opt_bash_malloc=no ;; # AIX machines +*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment +# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2) *-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep *-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep *-macos*) opt_bash_malloc=no ;; # Apple MacOS X *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) -*-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x *-machten4) opt_bash_malloc=no ;; # MachTen 4.x -*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins -*-beos*) opt_bash_malloc=no ;; # they say it's suitable -*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment -*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +# Niche or non-mainstream-shell-user systems +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS +# Deprecated -- bash malloc is suitable +#sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment +#mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment +#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here +#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree +#*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment +#*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment esac # memory scrambling on free() @@ -177,7 +182,7 @@ opt_casemod_attrs=yes opt_casemod_expansions=yes opt_extglob_default=no opt_dircomplete_expand_default=no -opt_globascii_default=no +opt_globascii_default=yes opt_function_import=yes opt_dev_fd_stat_broken=no @@ -200,7 +205,7 @@ if test $opt_minimal_config = yes; then opt_net_redirs=no opt_progcomp=no opt_separate_help=no opt_multibyte=yes opt_cond_regexp=no opt_coproc=no opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no - opt_globascii_default=no + opt_globascii_default=yes fi AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval) @@ -550,7 +555,7 @@ then RL_LIB_READLINE_VERSION case "$ac_cv_rl_version" in - 7*|8*|9*) ;; + 8*|9*) ;; *) opt_with_installed_readline=no AC_MSG_WARN([installed readline library is too old to be linked with bash]) AC_MSG_WARN([using private bash version]) @@ -714,7 +719,7 @@ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ regex.h syslog.h ulimit.h) AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ - sys/param.h sys/socket.h sys/stat.h \ + sys/mman.h sys/param.h sys/socket.h sys/stat.h \ sys/time.h sys/times.h sys/types.h sys/wait.h) AC_CHECK_HEADERS(netinet/in.h arpa/inet.h) @@ -850,7 +855,7 @@ AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) dnl AC_FUNC_MALLOC AC_FUNC_MMAP AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ - munmap stpcpy strcspn]) + munmap mremap stpcpy strcspn]) INTL_DEP= INTL_INC= LIBINTL_H= if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then @@ -1111,6 +1116,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading 1.*|2.[[0123]]*) : ;; *) AC_DEFINE(PGRP_PIPE) ;; esac ;; +openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; *qnx[[67]]*) LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; diff --git a/doc/bash.0 b/doc/bash.0 index bb2f7429a..d09b8fc0c 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -382,24 +382,24 @@ SSHHEELLLL GGRRAAMMMMAARR An additional binary operator, ==~~, is available, with the same precedence as ==== and !!==. When it is used, the string to the - right of the operator is considered an extended regular expres- - sion and matched accordingly (as in _r_e_g_e_x(3)). The return value - is 0 if the string matches the pattern, and 1 otherwise. If the - regular expression is syntactically incorrect, the conditional - expression's return value is 2. If the nnooccaasseemmaattcchh shell option - is enabled, the match is performed without regard to the case of - alphabetic characters. Any part of the pattern may be quoted to - force the quoted portion to be matched as a string. Bracket - expressions in regular expressions must be treated carefully, - since normal quoting characters lose their meanings between - brackets. If the pattern is stored in a shell variable, quoting - the variable expansion forces the entire pattern to be matched - as a string. Substrings matched by parenthesized subexpressions - within the regular expression are saved in the array variable - BBAASSHH__RREEMMAATTCCHH. The element of BBAASSHH__RREEMMAATTCCHH with index 0 is the - portion of the string matching the entire regular expression. - The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion of the - string matching the _nth parenthesized subexpression. + right of the operator is considered a POSIX extended regular + expression and matched accordingly (as in _r_e_g_e_x(3)). The return + value is 0 if the string matches the pattern, and 1 otherwise. + If the regular expression is syntactically incorrect, the condi- + tional expression's return value is 2. If the nnooccaasseemmaattcchh shell + option is enabled, the match is performed without regard to the + case of alphabetic characters. Any part of the pattern may be + quoted to force the quoted portion to be matched as a string. + Bracket expressions in regular expressions must be treated care- + fully, since normal quoting characters lose their meanings + between brackets. If the pattern is stored in a shell variable, + quoting the variable expansion forces the entire pattern to be + matched as a string. Substrings matched by parenthesized subex- + pressions within the regular expression are saved in the array + variable BBAASSHH__RREEMMAATTCCHH. The element of BBAASSHH__RREEMMAATTCCHH with index 0 + is the portion of the string matching the entire regular expres- + sion. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion + of the string matching the _nth parenthesized subexpression. Expressions may be combined using the following operators, listed in decreasing order of precedence: @@ -735,80 +735,86 @@ PPAARRAAMMEETTEERRSS is the first character of the value of the IIFFSS variable. If IIFFSS is unset, the parameters are separated by spaces. If IIFFSS is null, the parameters are joined without intervening separators. - @@ Expands to the positional parameters, starting from one. When + @@ Expands to the positional parameters, starting from one. In + contexts where word splitting is performed, this expands each + positional parameter to a separate word; if not within double + quotes, these words are subject to word splitting. In contexts + where word splitting is not performed, this expands to a single + word with each positional parameter separated by a space. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$$@@" is equivalent to "$$11" - "$$22" ... If the double-quoted expansion occurs within a word, - the expansion of the first parameter is joined with the begin- - ning part of the original word, and the expansion of the last - parameter is joined with the last part of the original word. - When there are no positional parameters, "$$@@" and $$@@ expand to + "$$22" ... If the double-quoted expansion occurs within a word, + the expansion of the first parameter is joined with the begin- + ning part of the original word, and the expansion of the last + parameter is joined with the last part of the original word. + When there are no positional parameters, "$$@@" and $$@@ expand to nothing (i.e., they are removed). ## Expands to the number of positional parameters in decimal. - ?? Expands to the exit status of the most recently executed fore- + ?? Expands to the exit status of the most recently executed fore- ground pipeline. - -- Expands to the current option flags as specified upon invoca- - tion, by the sseett builtin command, or those set by the shell + -- Expands to the current option flags as specified upon invoca- + tion, by the sseett builtin command, or those set by the shell itself (such as the --ii option). - $$ Expands to the process ID of the shell. In a () subshell, it - expands to the process ID of the current shell, not the sub- + $$ Expands to the process ID of the shell. In a () subshell, it + expands to the process ID of the current shell, not the sub- shell. - !! Expands to the process ID of the job most recently placed into - the background, whether executed as an asynchronous command or + !! Expands to the process ID of the job most recently placed into + the background, whether executed as an asynchronous command or using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). - 00 Expands to the name of the shell or shell script. This is set + 00 Expands to the name of the shell or shell script. This is set at shell initialization. If bbaasshh is invoked with a file of com- - mands, $$00 is set to the name of that file. If bbaasshh is started - with the --cc option, then $$00 is set to the first argument after - the string to be executed, if one is present. Otherwise, it is - set to the filename used to invoke bbaasshh, as given by argument + mands, $$00 is set to the name of that file. If bbaasshh is started + with the --cc option, then $$00 is set to the first argument after + the string to be executed, if one is present. Otherwise, it is + set to the filename used to invoke bbaasshh, as given by argument zero. - __ At shell startup, set to the absolute pathname used to invoke - the shell or shell script being executed as passed in the envi- - ronment or argument list. Subsequently, expands to the last - argument to the previous command, after expansion. Also set to - the full pathname used to invoke each command executed and + __ At shell startup, set to the absolute pathname used to invoke + the shell or shell script being executed as passed in the envi- + ronment or argument list. Subsequently, expands to the last + argument to the previous command, after expansion. Also set to + the full pathname used to invoke each command executed and placed in the environment exported to that command. When check- - ing mail, this parameter holds the name of the mail file cur- + ing mail, this parameter holds the name of the mail file cur- rently being checked. SShheellll VVaarriiaabblleess The following variables are set by the shell: - BBAASSHH Expands to the full filename used to invoke this instance of + BBAASSHH Expands to the full filename used to invoke this instance of bbaasshh. BBAASSHHOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --ss option to the sshhoopptt + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --ss option to the sshhoopptt builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. BBAASSHHPPIIDD - Expands to the process ID of the current bbaasshh process. This - differs from $$$$ under certain circumstances, such as subshells - that do not require bbaasshh to be re-initialized. Assignments to - BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe- + Expands to the process ID of the current bbaasshh process. This + differs from $$$$ under certain circumstances, such as subshells + that do not require bbaasshh to be re-initialized. Assignments to + BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe- cial properties, even if it is subsequently reset. BBAASSHH__AALLIIAASSEESS - An associative array variable whose members correspond to the - internal list of aliases as maintained by the aalliiaass builtin. - Elements added to this array appear in the alias list; however, - unsetting array elements currently does not cause aliases to be + An associative array variable whose members correspond to the + internal list of aliases as maintained by the aalliiaass builtin. + Elements added to this array appear in the alias list; however, + unsetting array elements currently does not cause aliases to be removed from the alias list. If BBAASSHH__AALLIIAASSEESS is unset, it loses its special properties, even if it is subsequently reset. BBAASSHH__AARRGGCC - An array variable whose values are the number of parameters in + An array variable whose values are the number of parameters in each frame of the current bbaasshh execution call stack. The number - of parameters to the current subroutine (shell function or - script executed with .. or ssoouurrccee) is at the top of the stack. - When a subroutine is executed, the number of parameters passed + of parameters to the current subroutine (shell function or + script executed with .. or ssoouurrccee) is at the top of the stack. + When a subroutine is executed, the number of parameters passed is pushed onto BBAASSHH__AARRGGCC. The shell sets BBAASSHH__AARRGGCC only when in - extended debugging mode (see the description of the eexxttddeebbuugg - option to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the - shell has started to execute a script may result in inconsistent - values. + extended debugging mode (see the description of the eexxttddeebbuugg + option to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the + shell has started to execute a script, or referencing this vari- + able when eexxttddeebbuugg is not set, may result in inconsistent val- + ues. BBAASSHH__AARRGGVV An array variable containing all of the parameters in the cur- rent bbaasshh execution call stack. The final parameter of the last @@ -818,59 +824,60 @@ PPAARRAAMMEETTEERRSS shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see the description of the eexxttddeebbuugg option to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the shell has started to execute - a script may result in inconsistent values. + a script, or referencing this variable when eexxttddeebbuugg is not set, + may result in inconsistent values. BBAASSHH__AARRGGVV00 - When referenced, this variable expands to the name of the shell + When referenced, this variable expands to the name of the shell or shell script (identical to $$00; see the description of special - parameter 0 above). Assignment to BBAASSHH__AARRGGVV00 causes the value - assigned to also be assigned to $$00. If BBAASSHH__AARRGGVV00 is unset, it + parameter 0 above). Assignment to BBAASSHH__AARRGGVV00 causes the value + assigned to also be assigned to $$00. If BBAASSHH__AARRGGVV00 is unset, it loses its special properties, even if it is subsequently reset. BBAASSHH__CCMMDDSS - An associative array variable whose members correspond to the - internal hash table of commands as maintained by the hhaasshh + An associative array variable whose members correspond to the + internal hash table of commands as maintained by the hhaasshh builtin. Elements added to this array appear in the hash table; - however, unsetting array elements currently does not cause com- - mand names to be removed from the hash table. If BBAASSHH__CCMMDDSS is - unset, it loses its special properties, even if it is subse- + however, unsetting array elements currently does not cause com- + mand names to be removed from the hash table. If BBAASSHH__CCMMDDSS is + unset, it loses its special properties, even if it is subse- quently reset. BBAASSHH__CCOOMMMMAANNDD - The command currently being executed or about to be executed, + The command currently being executed or about to be executed, unless the shell is executing a command as the result of a trap, - in which case it is the command executing at the time of the + in which case it is the command executing at the time of the trap. BBAASSHH__EEXXEECCUUTTIIOONN__SSTTRRIINNGG The command argument to the --cc invocation option. BBAASSHH__LLIINNEENNOO - An array variable whose members are the line numbers in source - files where each corresponding member of FFUUNNCCNNAAMMEE was invoked. + An array variable whose members are the line numbers in source + files where each corresponding member of FFUUNNCCNNAAMMEE was invoked. $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file ($${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}) where $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called (or - $${{BBAASSHH__LLIINNEENNOO[[_$_i_-_1]]}} if referenced within another shell func- + $${{BBAASSHH__LLIINNEENNOO[[_$_i_-_1]]}} if referenced within another shell func- tion). Use LLIINNEENNOO to obtain the current line number. BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH - A colon-separated list of directories in which the shell looks - for dynamically loadable builtins specified by the eennaabbllee com- + A colon-separated list of directories in which the shell looks + for dynamically loadable builtins specified by the eennaabbllee com- mand. BBAASSHH__RREEMMAATTCCHH - An array variable whose members are assigned by the ==~~ binary - operator to the [[[[ conditional command. The element with index - 0 is the portion of the string matching the entire regular - expression. The element with index _n is the portion of the + An array variable whose members are assigned by the ==~~ binary + operator to the [[[[ conditional command. The element with index + 0 is the portion of the string matching the entire regular + expression. The element with index _n is the portion of the string matching the _nth parenthesized subexpression. This vari- able is read-only. BBAASSHH__SSOOUURRCCEE - An array variable whose members are the source filenames where - the corresponding shell function names in the FFUUNNCCNNAAMMEE array - variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is - defined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from + An array variable whose members are the source filenames where + the corresponding shell function names in the FFUUNNCCNNAAMMEE array + variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is + defined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}. BBAASSHH__SSUUBBSSHHEELLLL - Incremented by one within each subshell or subshell environment - when the shell begins executing in that environment. The ini- + Incremented by one within each subshell or subshell environment + when the shell begins executing in that environment. The ini- tial value is 0. BBAASSHH__VVEERRSSIINNFFOO A readonly array variable whose members hold version information - for this instance of bbaasshh. The values assigned to the array + for this instance of bbaasshh. The values assigned to the array members are as follows: BBAASSHH__VVEERRSSIINNFFOO[[0]] The major version number (the _r_e_l_e_a_s_e). BBAASSHH__VVEERRSSIINNFFOO[[1]] The minor version number (the _v_e_r_s_i_o_n). @@ -879,137 +886,137 @@ PPAARRAAMMEETTEERRSS BBAASSHH__VVEERRSSIINNFFOO[[4]] The release status (e.g., _b_e_t_a_1). BBAASSHH__VVEERRSSIINNFFOO[[5]] The value of MMAACCHHTTYYPPEE. BBAASSHH__VVEERRSSIIOONN - Expands to a string describing the version of this instance of + Expands to a string describing the version of this instance of bbaasshh. CCOOMMPP__CCWWOORRDD - An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current + An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current cursor position. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see + tions invoked by the programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__KKEEYY The key (or final key of a key sequence) used to invoke the cur- rent completion function. CCOOMMPP__LLIINNEE - The current command line. This variable is available only in - shell functions and external commands invoked by the program- + The current command line. This variable is available only in + shell functions and external commands invoked by the program- mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__PPOOIINNTT - The index of the current cursor position relative to the begin- - ning of the current command. If the current cursor position is + The index of the current cursor position relative to the begin- + ning of the current command. If the current cursor position is at the end of the current command, the value of this variable is - equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in - shell functions and external commands invoked by the program- + equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in + shell functions and external commands invoked by the program- mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__TTYYPPEE - Set to an integer value corresponding to the type of completion - attempted that caused a completion function to be called: _T_A_B, - for normal completion, _?, for listing completions after succes- - sive tabs, _!, for listing alternatives on partial word comple- - tion, _@, to list completions if the word is not unmodified, or - _%, for menu completion. This variable is available only in - shell functions and external commands invoked by the program- + Set to an integer value corresponding to the type of completion + attempted that caused a completion function to be called: _T_A_B, + for normal completion, _?, for listing completions after succes- + sive tabs, _!, for listing alternatives on partial word comple- + tion, _@, to list completions if the word is not unmodified, or + _%, for menu completion. This variable is available only in + shell functions and external commands invoked by the program- mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__WWOORRDDBBRREEAAKKSS - The set of characters that the rreeaaddlliinnee library treats as word - separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS - is unset, it loses its special properties, even if it is subse- + The set of characters that the rreeaaddlliinnee library treats as word + separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS + is unset, it loses its special properties, even if it is subse- quently reset. CCOOMMPP__WWOORRDDSS - An array variable (see AArrrraayyss below) consisting of the individ- - ual words in the current command line. The line is split into - words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as + An array variable (see AArrrraayyss below) consisting of the individ- + ual words in the current command line. The line is split into + words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as described above. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see + tions invoked by the programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file - descriptors for output from and input to an unnamed coprocess + CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file + descriptors for output from and input to an unnamed coprocess (see CCoopprroocceesssseess above). DDIIRRSSTTAACCKK An array variable (see AArrrraayyss below) containing the current con- - tents of the directory stack. Directories appear in the stack - in the order they are displayed by the ddiirrss builtin. Assigning + tents of the directory stack. Directories appear in the stack + in the order they are displayed by the ddiirrss builtin. Assigning to members of this array variable may be used to modify directo- - ries already in the stack, but the ppuusshhdd and ppooppdd builtins must + ries already in the stack, but the ppuusshhdd and ppooppdd builtins must be used to add and remove directories. Assignment to this vari- - able will not change the current directory. If DDIIRRSSTTAACCKK is - unset, it loses its special properties, even if it is subse- + able will not change the current directory. If DDIIRRSSTTAACCKK is + unset, it loses its special properties, even if it is subse- quently reset. EEPPOOCCHHRREEAALLTTIIMMEE Each time this parameter is referenced, it expands to the number - of seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating + of seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating point value with micro-second granularity. Assignments to - EEPPOOCCHHRREEAALLTTIIMMEE are ignored. If EEPPOOCCHHRREEAALLTTIIMMEE is unset, it loses + EEPPOOCCHHRREEAALLTTIIMMEE are ignored. If EEPPOOCCHHRREEAALLTTIIMMEE is unset, it loses its special properties, even if it is subsequently reset. EEPPOOCCHHSSEECCOONNDDSS Each time this parameter is referenced, it expands to the number - of seconds since the Unix Epoch (see _t_i_m_e(3)). Assignments to - EEPPOOCCHHSSEECCOONNDDSS are ignored. If EEPPOOCCHHSSEECCOONNDDSS is unset, it loses + of seconds since the Unix Epoch (see _t_i_m_e(3)). Assignments to + EEPPOOCCHHSSEECCOONNDDSS are ignored. If EEPPOOCCHHSSEECCOONNDDSS is unset, it loses its special properties, even if it is subsequently reset. - EEUUIIDD Expands to the effective user ID of the current user, initial- + EEUUIIDD Expands to the effective user ID of the current user, initial- ized at shell startup. This variable is readonly. FFUUNNCCNNAAMMEE - An array variable containing the names of all shell functions + An array variable containing the names of all shell functions currently in the execution call stack. The element with index 0 is the name of any currently-executing shell function. The bot- - tom-most element (the one with the highest index) is "main". - This variable exists only when a shell function is executing. - Assignments to FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, - it loses its special properties, even if it is subsequently + tom-most element (the one with the highest index) is "main". + This variable exists only when a shell function is executing. + Assignments to FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, + it loses its special properties, even if it is subsequently reset. - This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. - Each element of FFUUNNCCNNAAMMEE has corresponding elements in - BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For - instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file - $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The + This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. + Each element of FFUUNNCCNNAAMMEE has corresponding elements in + BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For + instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file + $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The ccaalllleerr builtin displays the current call stack using this infor- mation. - GGRROOUUPPSS An array variable containing the list of groups of which the + GGRROOUUPPSS An array variable containing the list of groups of which the current user is a member. Assignments to GGRROOUUPPSS have no effect. - If GGRROOUUPPSS is unset, it loses its special properties, even if it + If GGRROOUUPPSS is unset, it loses its special properties, even if it is subsequently reset. HHIISSTTCCMMDD The history number, or index in the history list, of the current - command. If HHIISSTTCCMMDD is unset, it loses its special properties, + command. If HHIISSTTCCMMDD is unset, it loses its special properties, even if it is subsequently reset. HHOOSSTTNNAAMMEE Automatically set to the name of the current host. HHOOSSTTTTYYPPEE - Automatically set to a string that uniquely describes the type - of machine on which bbaasshh is executing. The default is system- + Automatically set to a string that uniquely describes the type + of machine on which bbaasshh is executing. The default is system- dependent. - LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a - decimal number representing the current sequential line number - (starting with 1) within a script or function. When not in a - script or function, the value substituted is not guaranteed to + LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a + decimal number representing the current sequential line number + (starting with 1) within a script or function. When not in a + script or function, the value substituted is not guaranteed to be meaningful. If LLIINNEENNOO is unset, it loses its special proper- ties, even if it is subsequently reset. MMAACCHHTTYYPPEE - Automatically set to a string that fully describes the system - type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- + Automatically set to a string that fully describes the system + type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- _p_a_n_y_-_s_y_s_t_e_m format. The default is system-dependent. MMAAPPFFIILLEE - An array variable (see AArrrraayyss below) created to hold the text + An array variable (see AArrrraayyss below) created to hold the text read by the mmaappffiillee builtin when no variable name is supplied. OOLLDDPPWWDD The previous working directory as set by the ccdd command. - OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss + OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss + OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOSSTTYYPPEE Automatically set to a string that describes the operating sys- - tem on which bbaasshh is executing. The default is system-depen- + OOSSTTYYPPEE Automatically set to a string that describes the operating sys- + tem on which bbaasshh is executing. The default is system-depen- dent. PPIIPPEESSTTAATTUUSS - An array variable (see AArrrraayyss below) containing a list of exit - status values from the processes in the most-recently-executed + An array variable (see AArrrraayyss below) containing a list of exit + status values from the processes in the most-recently-executed foreground pipeline (which may contain only a single command). - PPPPIIDD The process ID of the shell's parent. This variable is read- + PPPPIIDD The process ID of the shell's parent. This variable is read- only. PPWWDD The current working directory as set by the ccdd command. RRAANNDDOOMM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of random numbers may be initialized by assigning a value to RRAANNDDOOMM. If RRAANNDDOOMM is unset, - it loses its special properties, even if it is subsequently + it loses its special properties, even if it is subsequently reset. RREEAADDLLIINNEE__LLIINNEE The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" @@ -1017,197 +1024,202 @@ PPAARRAAMMEETTEERRSS RREEAADDLLIINNEE__PPOOIINNTT The position of the insertion point in the rreeaaddlliinnee line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when + RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when no arguments are supplied. SSEECCOONNDDSS - Each time this parameter is referenced, the number of seconds - since shell invocation is returned. If a value is assigned to - SSEECCOONNDDSS, the value returned upon subsequent references is the - number of seconds since the assignment plus the value assigned. + Each time this parameter is referenced, the number of seconds + since shell invocation is returned. If a value is assigned to + SSEECCOONNDDSS, the value returned upon subsequent references is the + number of seconds since the assignment plus the value assigned. If SSEECCOONNDDSS is unset, it loses its special properties, even if it is subsequently reset. SSHHEELLLLOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --oo option to the sseett + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --oo option to the sseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. SSHHLLVVLL Incremented by one each time an instance of bbaasshh is started. UUIIDD Expands to the user ID of the current user, initialized at shell startup. This variable is readonly. - The following variables are used by the shell. In some cases, bbaasshh + The following variables are used by the shell. In some cases, bbaasshh assigns a default value to a variable; these cases are noted below. BBAASSHH__CCOOMMPPAATT - The value is used to set the shell's compatibility level. See - the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN - CCOOMMMMAANNDDSS for a description of the various compatibility levels - and their effects. The value may be a decimal number (e.g., - 4.2) or an integer (e.g., 42) corresponding to the desired com- - patibility level. If BBAASSHH__CCOOMMPPAATT is unset or set to the empty - string, the compatibility level is set to the default for the - current version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not + The value is used to set the shell's compatibility level. See + the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN + CCOOMMMMAANNDDSS for a description of the various compatibility levels + and their effects. The value may be a decimal number (e.g., + 4.2) or an integer (e.g., 42) corresponding to the desired com- + patibility level. If BBAASSHH__CCOOMMPPAATT is unset or set to the empty + string, the compatibility level is set to the default for the + current version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not one of the valid compatibility levels, the shell prints an error - message and sets the compatibility level to the default for the - current version. The valid compatibility levels correspond to - the compatibility options accepted by the sshhoopptt builtin + message and sets the compatibility level to the default for the + current version. The valid compatibility levels correspond to + the compatibility options accepted by the sshhoopptt builtin described below (for example, ccoommppaatt4422 means that 4.2 and 42 are valid values). The current version is also a valid value. BBAASSHH__EENNVV - If this parameter is set when bbaasshh is executing a shell script, - its value is interpreted as a filename containing commands to + If this parameter is set when bbaasshh is executing a shell script, + its value is interpreted as a filename containing commands to initialize the shell, as in _~_/_._b_a_s_h_r_c. The value of BBAASSHH__EENNVV is - subjected to parameter expansion, command substitution, and - arithmetic expansion before being interpreted as a filename. + subjected to parameter expansion, command substitution, and + arithmetic expansion before being interpreted as a filename. PPAATTHH is not used to search for the resultant filename. BBAASSHH__XXTTRRAACCEEFFDD - If set to an integer corresponding to a valid file descriptor, - bbaasshh will write the trace output generated when _s_e_t _-_x is - enabled to that file descriptor. The file descriptor is closed - when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting - BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the trace - output to be sent to the standard error. Note that setting + If set to an integer corresponding to a valid file descriptor, + bbaasshh will write the trace output generated when _s_e_t _-_x is + enabled to that file descriptor. The file descriptor is closed + when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting + BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the trace + output to be sent to the standard error. Note that setting BBAASSHH__XXTTRRAACCEEFFDD to 2 (the standard error file descriptor) and then unsetting it will result in the standard error being closed. - CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated - list of directories in which the shell looks for destination - directories specified by the ccdd command. A sample value is + CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated + list of directories in which the shell looks for destination + directories specified by the ccdd command. A sample value is ".:~:/usr". CCHHIILLDD__MMAAXX - Set the number of exited child status values for the shell to - remember. Bash will not allow this value to be decreased below - a POSIX-mandated minimum, and there is a maximum value (cur- - rently 8192) that this may not exceed. The minimum value is + Set the number of exited child status values for the shell to + remember. Bash will not allow this value to be decreased below + a POSIX-mandated minimum, and there is a maximum value (cur- + rently 8192) that this may not exceed. The minimum value is system-dependent. CCOOLLUUMMNNSS - Used by the sseelleecctt compound command to determine the terminal - width when printing selection lists. Automatically set if the - cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon + Used by the sseelleecctt compound command to determine the terminal + width when printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon receipt of a SSIIGGWWIINNCCHH. CCOOMMPPRREEPPLLYY An array variable from which bbaasshh reads the possible completions - generated by a shell function invoked by the programmable com- - pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each + generated by a shell function invoked by the programmable com- + pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each array element contains one possible completion. - EEMMAACCSS If bbaasshh finds this variable in the environment when the shell - starts with value "t", it assumes that the shell is running in + EEMMAACCSS If bbaasshh finds this variable in the environment when the shell + starts with value "t", it assumes that the shell is running in an Emacs shell buffer and disables line editing. - EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX - mode. + EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in _p_o_s_i_x + _m_o_d_e. EEXXEECCIIGGNNOORREE - A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) - defining the list of filenames to be ignored by command search - using PPAATTHH. Files whose full pathnames match one of these pat- - terns are not considered executable files for the purposes of + A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) + defining the list of filenames to be ignored by command search + using PPAATTHH. Files whose full pathnames match one of these pat- + terns are not considered executable files for the purposes of completion and command execution via PPAATTHH lookup. This does not affect the behavior of the [[, tteesstt, and [[[[ commands. Full path- - names in the command hash table are not subject to EEXXEECCIIGGNNOORREE. - Use this variable to ignore shared library files that have the - executable bit set, but are not executable files. The pattern + names in the command hash table are not subject to EEXXEECCIIGGNNOORREE. + Use this variable to ignore shared library files that have the + executable bit set, but are not executable files. The pattern matching honors the setting of the eexxttgglloobb shell option. FFCCEEDDIITT The default editor for the ffcc builtin command. FFIIGGNNOORREE - A colon-separated list of suffixes to ignore when performing + A colon-separated list of suffixes to ignore when performing filename completion (see RREEAADDLLIINNEE below). A filename whose suf- - fix matches one of the entries in FFIIGGNNOORREE is excluded from the + fix matches one of the entries in FFIIGGNNOORREE is excluded from the list of matched filenames. A sample value is ".o:~". FFUUNNCCNNEESSTT - If set to a numeric value greater than 0, defines a maximum - function nesting level. Function invocations that exceed this + If set to a numeric value greater than 0, defines a maximum + function nesting level. Function invocations that exceed this nesting level will cause the current command to abort. GGLLOOBBIIGGNNOORREE - A colon-separated list of patterns defining the set of file - names to be ignored by pathname expansion. If a file name - matched by a pathname expansion pattern also matches one of the + A colon-separated list of patterns defining the set of file + names to be ignored by pathname expansion. If a file name + matched by a pathname expansion pattern also matches one of the patterns in GGLLOOBBIIGGNNOORREE, it is removed from the list of matches. HHIISSTTCCOONNTTRROOLL - A colon-separated list of values controlling how commands are - saved on the history list. If the list of values includes - _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not - saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines + A colon-separated list of values controlling how commands are + saved on the history list. If the list of values includes + _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not + saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines matching the previous history entry to not be saved. A value of _i_g_n_o_r_e_b_o_t_h is shorthand for _i_g_n_o_r_e_s_p_a_c_e and _i_g_n_o_r_e_d_u_p_s. A value of _e_r_a_s_e_d_u_p_s causes all previous lines matching the current line - to be removed from the history list before that line is saved. - Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is - unset, or does not include a valid value, all lines read by the + to be removed from the history list before that line is saved. + Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is + unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the value - of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line - compound command are not tested, and are added to the history + of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line + compound command are not tested, and are added to the history regardless of the value of HHIISSTTCCOONNTTRROOLL. HHIISSTTFFIILLEE The name of the file in which command history is saved (see HHIISS-- - TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, + TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, the command history is not saved when a shell exits. HHIISSTTFFIILLEESSIIZZEE The maximum number of lines contained in the history file. When - this variable is assigned a value, the history file is trun- - cated, if necessary, to contain no more than that number of - lines by removing the oldest entries. The history file is also - truncated to this size after writing it when a shell exits. If - the value is 0, the history file is truncated to zero size. - Non-numeric values and numeric values less than zero inhibit - truncation. The shell sets the default value to the value of + this variable is assigned a value, the history file is trun- + cated, if necessary, to contain no more than that number of + lines by removing the oldest entries. The history file is also + truncated to this size after writing it when a shell exits. If + the value is 0, the history file is truncated to zero size. + Non-numeric values and numeric values less than zero inhibit + truncation. The shell sets the default value to the value of HHIISSTTSSIIZZEE after reading any startup files. HHIISSTTIIGGNNOORREE - A colon-separated list of patterns used to decide which command - lines should be saved on the history list. Each pattern is - anchored at the beginning of the line and must match the com- - plete line (no implicit `**' is appended). Each pattern is - tested against the line after the checks specified by HHIISSTTCCOONN-- - TTRROOLL are applied. In addition to the normal shell pattern + A colon-separated list of patterns used to decide which command + lines should be saved on the history list. Each pattern is + anchored at the beginning of the line and must match the com- + plete line (no implicit `**' is appended). Each pattern is + tested against the line after the checks specified by HHIISSTTCCOONN-- + TTRROOLL are applied. In addition to the normal shell pattern matching characters, `&&' matches the previous history line. `&&' - may be escaped using a backslash; the backslash is removed + may be escaped using a backslash; the backslash is removed before attempting a match. The second and subsequent lines of a multi-line compound command are not tested, and are added to the - history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern + history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern matching honors the setting of the eexxttgglloobb shell option. HHIISSTTSSIIZZEE - The number of commands to remember in the command history (see - HHIISSTTOORRYY below). If the value is 0, commands are not saved in + The number of commands to remember in the command history (see + HHIISSTTOORRYY below). If the value is 0, commands are not saved in the history list. Numeric values less than zero result in every - command being saved on the history list (there is no limit). - The shell sets the default value to 500 after reading any + command being saved on the history list (there is no limit). + The shell sets the default value to 500 after reading any startup files. HHIISSTTTTIIMMEEFFOORRMMAATT - If this variable is set and not null, its value is used as a + If this variable is set and not null, its value is used as a format string for _s_t_r_f_t_i_m_e(3) to print the time stamp associated - with each history entry displayed by the hhiissttoorryy builtin. If - this variable is set, time stamps are written to the history - file so they may be preserved across shell sessions. This uses - the history comment character to distinguish timestamps from + with each history entry displayed by the hhiissttoorryy builtin. If + this variable is set, time stamps are written to the history + file so they may be preserved across shell sessions. This uses + the history comment character to distinguish timestamps from other history lines. HHOOMMEE The home directory of the current user; the default argument for the ccdd builtin command. The value of this variable is also used when performing tilde expansion. HHOOSSTTFFIILLEE - Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s + Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s that should be read when the shell needs to complete a hostname. - The list of possible hostname completions may be changed while - the shell is running; the next time hostname completion is - attempted after the value is changed, bbaasshh adds the contents of - the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has - no value, or does not name a readable file, bbaasshh attempts to - read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- + The list of possible hostname completions may be changed while + the shell is running; the next time hostname completion is + attempted after the value is changed, bbaasshh adds the contents of + the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has + no value, or does not name a readable file, bbaasshh attempts to + read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- tions. When HHOOSSTTFFIILLEE is unset, the hostname list is cleared. - IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting - after expansion and to split lines into words with the rreeaadd + IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting + after expansion and to split lines into words with the rreeaadd builtin command. The default value is ``''. IIGGNNOORREEEEOOFF Controls the action of an interactive shell on receipt of an EEOOFF character as the sole input. If set, the value is the number of - consecutive EEOOFF characters which must be typed as the first - characters on an input line before bbaasshh exits. If the variable - exists but does not have a numeric value, or has no value, the - default value is 10. If it does not exist, EEOOFF signifies the + consecutive EEOOFF characters which must be typed as the first + characters on an input line before bbaasshh exits. If the variable + exists but does not have a numeric value, or has no value, the + default value is 10. If it does not exist, EEOOFF signifies the end of input to the shell. IINNPPUUTTRRCC - The filename for the rreeaaddlliinnee startup file, overriding the + The filename for the rreeaaddlliinnee startup file, overriding the default of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below). + IINNSSIIDDEE__EEMMAACCSS + If this variable appears in the environment when the shell + starts, bbaasshh assumes that it is running inside an Emacs shell + buffer and may disable line editing, depending on the value of + TTEERRMM. LLAANNGG Used to determine the locale category for any category not specifically selected with a variable starting with LLCC__. LLCC__AALLLL This variable overrides the value of LLAANNGG and any other LLCC__ @@ -1273,39 +1285,40 @@ PPAARRAAMMEETTEERRSS shell enters _p_o_s_i_x _m_o_d_e before reading the startup files, as if the ----ppoossiixx invocation option had been supplied. If it is set while the shell is running, bbaasshh enables _p_o_s_i_x _m_o_d_e, as if the - command _s_e_t _-_o _p_o_s_i_x had been executed. + command _s_e_t _-_o _p_o_s_i_x had been executed. When the shell enters + _p_o_s_i_x _m_o_d_e, it sets this variable if it was not already set. PPRROOMMPPTT__CCOOMMMMAANNDD If set, the value is executed as a command prior to issuing each primary prompt. PPRROOMMPPTT__DDIIRRTTRRIIMM - If set to a number greater than zero, the value is used as the + If set to a number greater than zero, the value is used as the number of trailing directory components to retain when expanding - the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). + the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). Characters removed are replaced with an ellipsis. - PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and displayed by interactive shells after reading a command and + PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and displayed by interactive shells after reading a command and before the command is executed. - PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and used as the primary prompt string. The default value is + PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and used as the primary prompt string. The default value is ``\\ss--\\vv\\$$ ''. - PPSS22 The value of this parameter is expanded as with PPSS11 and used as + PPSS22 The value of this parameter is expanded as with PPSS11 and used as the secondary prompt string. The default is ``>> ''. PPSS33 The value of this parameter is used as the prompt for the sseelleecctt command (see SSHHEELLLL GGRRAAMMMMAARR above). - PPSS44 The value of this parameter is expanded as with PPSS11 and the - value is printed before each command bbaasshh displays during an - execution trace. The first character of the expanded value of + PPSS44 The value of this parameter is expanded as with PPSS11 and the + value is printed before each command bbaasshh displays during an + execution trace. The first character of the expanded value of PPSS44 is replicated multiple times, as necessary, to indicate mul- tiple levels of indirection. The default is ``++ ''. SSHHEELLLL The full pathname to the shell is kept in this environment vari- - able. If it is not set when the shell starts, bbaasshh assigns to + able. If it is not set when the shell starts, bbaasshh assigns to it the full pathname of the current user's login shell. TTIIMMEEFFOORRMMAATT - The value of this parameter is used as a format string specify- - ing how the timing information for pipelines prefixed with the - ttiimmee reserved word should be displayed. The %% character intro- - duces an escape sequence that is expanded to a time value or - other information. The escape sequences and their meanings are + The value of this parameter is used as a format string specify- + ing how the timing information for pipelines prefixed with the + ttiimmee reserved word should be displayed. The %% character intro- + duces an escape sequence that is expanded to a time value or + other information. The escape sequences and their meanings are as follows; the braces denote optional portions. %%%% A literal %%. %%[[_p]][[ll]]RR The elapsed time in seconds. @@ -1313,77 +1326,77 @@ PPAARRAAMMEETTEERRSS %%[[_p]][[ll]]SS The number of CPU seconds spent in system mode. %%PP The CPU percentage, computed as (%U + %S) / %R. - The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number + The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number of fractional digits after a decimal point. A value of 0 causes no decimal point or fraction to be output. At most three places - after the decimal point may be specified; values of _p greater - than 3 are changed to 3. If _p is not specified, the value 3 is + after the decimal point may be specified; values of _p greater + than 3 are changed to 3. If _p is not specified, the value 3 is used. - The optional ll specifies a longer format, including minutes, of - the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not + The optional ll specifies a longer format, including minutes, of + the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not the fraction is included. - If this variable is not set, bbaasshh acts as if it had the value - $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, + If this variable is not set, bbaasshh acts as if it had the value + $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed. - TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the + TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the default timeout for the rreeaadd builtin. The sseelleecctt command termi- nates if input does not arrive after TTMMOOUUTT seconds when input is - coming from a terminal. In an interactive shell, the value is + coming from a terminal. In an interactive shell, the value is interpreted as the number of seconds to wait for a line of input after issuing the primary prompt. BBaasshh terminates after waiting - for that number of seconds if a complete line of input does not + for that number of seconds if a complete line of input does not arrive. - TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which + TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which bbaasshh creates temporary files for the shell's use. aauuttoo__rreessuummee This variable controls how the shell interacts with the user and - job control. If this variable is set, single word simple com- + job control. If this variable is set, single word simple com- mands without redirections are treated as candidates for resump- tion of an existing stopped job. There is no ambiguity allowed; - if there is more than one job beginning with the string typed, - the job most recently accessed is selected. The _n_a_m_e of a - stopped job, in this context, is the command line used to start - it. If set to the value _e_x_a_c_t, the string supplied must match - the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the - string supplied needs to match a substring of the name of a - stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo- - gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL below). If set - to any other value, the supplied string must be a prefix of a + if there is more than one job beginning with the string typed, + the job most recently accessed is selected. The _n_a_m_e of a + stopped job, in this context, is the command line used to start + it. If set to the value _e_x_a_c_t, the string supplied must match + the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the + string supplied needs to match a substring of the name of a + stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo- + gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL below). If set + to any other value, the supplied string must be a prefix of a stopped job's name; this provides functionality analogous to the %%_s_t_r_i_n_g job identifier. hhiissttcchhaarrss - The two or three characters which control history expansion and + The two or three characters which control history expansion and tokenization (see HHIISSTTOORRYY EEXXPPAANNSSIIOONN below). The first character - is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals - the start of a history expansion, normally `!!'. The second - character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, which is used as - shorthand for re-running the previous command entered, substi- - tuting one string for another in the command. The default is - `^^'. The optional third character is the character which indi- - cates that the remainder of the line is a comment when found as - the first character of a word, normally `##'. The history com- + is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals + the start of a history expansion, normally `!!'. The second + character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, which is used as + shorthand for re-running the previous command entered, substi- + tuting one string for another in the command. The default is + `^^'. The optional third character is the character which indi- + cates that the remainder of the line is a comment when found as + the first character of a word, normally `##'. The history com- ment character causes history substitution to be skipped for the - remaining words on the line. It does not necessarily cause the + remaining words on the line. It does not necessarily cause the shell parser to treat the rest of the line as a comment. AArrrraayyss - BBaasshh provides one-dimensional indexed and associative array variables. - Any variable may be used as an indexed array; the ddeeccllaarree builtin will - explicitly declare an array. There is no maximum limit on the size of - an array, nor any requirement that members be indexed or assigned con- - tiguously. Indexed arrays are referenced using integers (including + BBaasshh provides one-dimensional indexed and associative array variables. + Any variable may be used as an indexed array; the ddeeccllaarree builtin will + explicitly declare an array. There is no maximum limit on the size of + an array, nor any requirement that members be indexed or assigned con- + tiguously. Indexed arrays are referenced using integers (including arithmetic expressions) and are zero-based; associative arrays are ref- erenced using arbitrary strings. Unless otherwise noted, indexed array indices must be non-negative integers. - An indexed array is created automatically if any variable is assigned + An indexed array is created automatically if any variable is assigned to using the syntax _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e. The _s_u_b_s_c_r_i_p_t is treated as an arithmetic expression that must evaluate to a number. To explicitly - declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM-- - MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_- + declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM-- + MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_- _s_c_r_i_p_t is ignored. Associative arrays are created using ddeeccllaarree --AA _n_a_m_e. @@ -1391,141 +1404,141 @@ PPAARRAAMMEETTEERRSS Attributes may be specified for an array variable using the ddeeccllaarree and rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. - Arrays are assigned to using compound assignments of the form - _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- - _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but + Arrays are assigned to using compound assignments of the form + _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- + _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but _s_t_r_i_n_g. When assigning to indexed arrays, if the optional brackets and - subscript are supplied, that index is assigned to; otherwise the index - of the element assigned is the last index assigned to by the statement + subscript are supplied, that index is assigned to; otherwise the index + of the element assigned is the last index assigned to by the statement plus one. Indexing starts at zero. When assigning to an associative array, the subscript is required. - This syntax is also accepted by the ddeeccllaarree builtin. Individual array - elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax - introduced above. When assigning to an indexed array, if _n_a_m_e is sub- - scripted by a negative number, that number is interpreted as relative - to one greater than the maximum index of _n_a_m_e, so negative indices + This syntax is also accepted by the ddeeccllaarree builtin. Individual array + elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax + introduced above. When assigning to an indexed array, if _n_a_m_e is sub- + scripted by a negative number, that number is interpreted as relative + to one greater than the maximum index of _n_a_m_e, so negative indices count back from the end of the array, and an index of -1 references the last element. - Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. + Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. The braces are required to avoid conflicts with pathname expansion. If - _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These - subscripts differ only when the word appears within double quotes. If + _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These + subscripts differ only when the word appears within double quotes. If the word is double-quoted, ${_n_a_m_e[*]} expands to a single word with the - value of each array member separated by the first character of the IIFFSS + value of each array member separated by the first character of the IIFFSS special variable, and ${_n_a_m_e[@]} expands each element of _n_a_m_e to a sep- - arate word. When there are no array members, ${_n_a_m_e[@]} expands to - nothing. If the double-quoted expansion occurs within a word, the - expansion of the first parameter is joined with the beginning part of - the original word, and the expansion of the last parameter is joined - with the last part of the original word. This is analogous to the - expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss - above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- - _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- - ments in the array. If the _s_u_b_s_c_r_i_p_t used to reference an element of - an indexed array evaluates to a number less than zero, it is inter- - preted as relative to one greater than the maximum index of the array, - so negative indices count back from the end of the array, and an index + arate word. When there are no array members, ${_n_a_m_e[@]} expands to + nothing. If the double-quoted expansion occurs within a word, the + expansion of the first parameter is joined with the beginning part of + the original word, and the expansion of the last parameter is joined + with the last part of the original word. This is analogous to the + expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss + above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- + _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- + ments in the array. If the _s_u_b_s_c_r_i_p_t used to reference an element of + an indexed array evaluates to a number less than zero, it is inter- + preted as relative to one greater than the maximum index of the array, + so negative indices count back from the end of the array, and an index of -1 references the last element. Referencing an array variable without a subscript is equivalent to ref- - erencing the array with a subscript of 0. Any reference to a variable + erencing the array with a subscript of 0. Any reference to a variable using a valid subscript is legal, and bbaasshh will create an array if nec- essary. - An array variable is considered set if a subscript has been assigned a + An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. - It is possible to obtain the keys (indices) of an array as well as the - values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in + It is possible to obtain the keys (indices) of an array as well as the + values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in array variable _n_a_m_e. The treatment when in double quotes is similar to the expansion of the special parameters _@ and _* within double quotes. - The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] - destroys the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and - associative arrays. Negative subscripts to indexed arrays are inter- - preted as described above. Unsetting the last element of an array - variable does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an + The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] + destroys the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and + associative arrays. Negative subscripts to indexed arrays are inter- + preted as described above. Unsetting the last element of an array + variable does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the entire array. - When using a variable name with a subscript as an argument to a com- - mand, such as with uunnsseett, without using the word expansion syntax - described above, the argument is subject to pathname expansion. If + When using a variable name with a subscript as an argument to a com- + mand, such as with uunnsseett, without using the word expansion syntax + described above, the argument is subject to pathname expansion. If pathname expansion is not desired, the argument should be quoted. - The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to - specify an indexed array and a --AA option to specify an associative - array. If both options are supplied, --AA takes precedence. The rreeaadd - builtin accepts a --aa option to assign a list of words read from the + The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to + specify an indexed array and a --AA option to specify an associative + array. If both options are supplied, --AA takes precedence. The rreeaadd + builtin accepts a --aa option to assign a list of words read from the standard input to an array. The sseett and ddeeccllaarree builtins display array values in a way that allows them to be reused as assignments. EEXXPPAANNSSIIOONN Expansion is performed on the command line after it has been split into - words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, - _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- + words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, + _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- _t_i_o_n, _a_r_i_t_h_m_e_t_i_c _e_x_p_a_n_s_i_o_n, _w_o_r_d _s_p_l_i_t_t_i_n_g, and _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n. The order of expansions is: brace expansion; tilde expansion, parameter - and variable expansion, arithmetic expansion, and command substitution - (done in a left-to-right fashion); word splitting; and pathname expan- + and variable expansion, arithmetic expansion, and command substitution + (done in a left-to-right fashion); word splitting; and pathname expan- sion. On systems that can support it, there is an additional expansion avail- - able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. This is performed at the same time as - tilde, parameter, variable, and arithmetic expansion and command sub- + able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. This is performed at the same time as + tilde, parameter, variable, and arithmetic expansion and command sub- stitution. - After these expansions are performed, quote characters present in the - original word are removed unless they have been quoted themselves + After these expansions are performed, quote characters present in the + original word are removed unless they have been quoted themselves (_q_u_o_t_e _r_e_m_o_v_a_l). - Only brace expansion, word splitting, and pathname expansion can - increase the number of words of the expansion; other expansions expand - a single word to a single word. The only exceptions to this are the - expansions of "$$@@" and "$${{_n_a_m_e[[@@]]}}", and, in most cases, $$** and + Only brace expansion, word splitting, and pathname expansion can + increase the number of words of the expansion; other expansions expand + a single word to a single word. The only exceptions to this are the + expansions of "$$@@" and "$${{_n_a_m_e[[@@]]}}", and, in most cases, $$** and $${{_n_a_m_e[[**]]}} as explained above (see PPAARRAAMMEETTEERRSS). BBrraaccee EExxppaannssiioonn _B_r_a_c_e _e_x_p_a_n_s_i_o_n is a mechanism by which arbitrary strings may be gener- - ated. This mechanism is similar to _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n, but the file- + ated. This mechanism is similar to _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n, but the file- names generated need not exist. Patterns to be brace expanded take the form of an optional _p_r_e_a_m_b_l_e, followed by either a series of comma-sep- - arated strings or a sequence expression between a pair of braces, fol- - lowed by an optional _p_o_s_t_s_c_r_i_p_t. The preamble is prefixed to each + arated strings or a sequence expression between a pair of braces, fol- + lowed by an optional _p_o_s_t_s_c_r_i_p_t. The preamble is prefixed to each string contained within the braces, and the postscript is then appended to each resulting string, expanding left to right. - Brace expansions may be nested. The results of each expanded string - are not sorted; left to right order is preserved. For example, + Brace expansions may be nested. The results of each expanded string + are not sorted; left to right order is preserved. For example, a{{d,c,b}}e expands into `ade ace abe'. - A sequence expression takes the form {{_x...._y[[...._i_n_c_r]]}}, where _x and _y are - either integers or single characters, and _i_n_c_r, an optional increment, - is an integer. When integers are supplied, the expression expands to - each number between _x and _y, inclusive. Supplied integers may be pre- - fixed with _0 to force each term to have the same width. When either _x - or _y begins with a zero, the shell attempts to force all generated - terms to contain the same number of digits, zero-padding where neces- - sary. When characters are supplied, the expression expands to each - character lexicographically between _x and _y, inclusive, using the - default C locale. Note that both _x and _y must be of the same type. - When the increment is supplied, it is used as the difference between + A sequence expression takes the form {{_x...._y[[...._i_n_c_r]]}}, where _x and _y are + either integers or single characters, and _i_n_c_r, an optional increment, + is an integer. When integers are supplied, the expression expands to + each number between _x and _y, inclusive. Supplied integers may be pre- + fixed with _0 to force each term to have the same width. When either _x + or _y begins with a zero, the shell attempts to force all generated + terms to contain the same number of digits, zero-padding where neces- + sary. When characters are supplied, the expression expands to each + character lexicographically between _x and _y, inclusive, using the + default C locale. Note that both _x and _y must be of the same type. + When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate. Brace expansion is performed before any other expansions, and any char- - acters special to other expansions are preserved in the result. It is - strictly textual. BBaasshh does not apply any syntactic interpretation to + acters special to other expansions are preserved in the result. It is + strictly textual. BBaasshh does not apply any syntactic interpretation to the context of the expansion or the text between the braces. - A correctly-formed brace expansion must contain unquoted opening and - closing braces, and at least one unquoted comma or a valid sequence - expression. Any incorrectly formed brace expansion is left unchanged. + A correctly-formed brace expansion must contain unquoted opening and + closing braces, and at least one unquoted comma or a valid sequence + expression. Any incorrectly formed brace expansion is left unchanged. A {{ or ,, may be quoted with a backslash to prevent its being considered - part of a brace expression. To avoid conflicts with parameter expan- + part of a brace expression. To avoid conflicts with parameter expan- sion, the string $${{ is not considered eligible for brace expansion, and inhibits brace expansion until the closing }}. @@ -1536,36 +1549,36 @@ EEXXPPAANNSSIIOONN or chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} - Brace expansion introduces a slight incompatibility with historical - versions of sshh. sshh does not treat opening or closing braces specially - when they appear as part of a word, and preserves them in the output. - BBaasshh removes braces from words as a consequence of brace expansion. - For example, a word entered to sshh as _f_i_l_e_{_1_,_2_} appears identically in - the output. The same word is output as _f_i_l_e_1 _f_i_l_e_2 after expansion by - bbaasshh. If strict compatibility with sshh is desired, start bbaasshh with the + Brace expansion introduces a slight incompatibility with historical + versions of sshh. sshh does not treat opening or closing braces specially + when they appear as part of a word, and preserves them in the output. + BBaasshh removes braces from words as a consequence of brace expansion. + For example, a word entered to sshh as _f_i_l_e_{_1_,_2_} appears identically in + the output. The same word is output as _f_i_l_e_1 _f_i_l_e_2 after expansion by + bbaasshh. If strict compatibility with sshh is desired, start bbaasshh with the ++BB option or disable brace expansion with the ++BB option to the sseett com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). TTiillddee EExxppaannssiioonn - If a word begins with an unquoted tilde character (`~~'), all of the - characters preceding the first unquoted slash (or all characters, if - there is no unquoted slash) are considered a _t_i_l_d_e_-_p_r_e_f_i_x. If none of - the characters in the tilde-prefix are quoted, the characters in the - tilde-prefix following the tilde are treated as a possible _l_o_g_i_n _n_a_m_e. - If this login name is the null string, the tilde is replaced with the - value of the shell parameter HHOOMMEE. If HHOOMMEE is unset, the home direc- - tory of the user executing the shell is substituted instead. Other- - wise, the tilde-prefix is replaced with the home directory associated + If a word begins with an unquoted tilde character (`~~'), all of the + characters preceding the first unquoted slash (or all characters, if + there is no unquoted slash) are considered a _t_i_l_d_e_-_p_r_e_f_i_x. If none of + the characters in the tilde-prefix are quoted, the characters in the + tilde-prefix following the tilde are treated as a possible _l_o_g_i_n _n_a_m_e. + If this login name is the null string, the tilde is replaced with the + value of the shell parameter HHOOMMEE. If HHOOMMEE is unset, the home direc- + tory of the user executing the shell is substituted instead. Other- + wise, the tilde-prefix is replaced with the home directory associated with the specified login name. - If the tilde-prefix is a `~+', the value of the shell variable PPWWDD + If the tilde-prefix is a `~+', the value of the shell variable PPWWDD replaces the tilde-prefix. If the tilde-prefix is a `~-', the value of - the shell variable OOLLDDPPWWDD, if it is set, is substituted. If the char- - acters following the tilde in the tilde-prefix consist of a number _N, - optionally prefixed by a `+' or a `-', the tilde-prefix is replaced + the shell variable OOLLDDPPWWDD, if it is set, is substituted. If the char- + acters following the tilde in the tilde-prefix consist of a number _N, + optionally prefixed by a `+' or a `-', the tilde-prefix is replaced with the corresponding element from the directory stack, as it would be displayed by the ddiirrss builtin invoked with the tilde-prefix as an argu- - ment. If the characters following the tilde in the tilde-prefix con- + ment. If the characters following the tilde in the tilde-prefix con- sist of a number without a leading `+' or `-', `+' is assumed. If the login name is invalid, or the tilde expansion fails, the word is @@ -1573,10 +1586,15 @@ EEXXPPAANNSSIIOONN Each variable assignment is checked for unquoted tilde-prefixes immedi- ately following a :: or the first ==. In these cases, tilde expansion is - also performed. Consequently, one may use filenames with tildes in - assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the + also performed. Consequently, one may use filenames with tildes in + assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the expanded value. + Bash also performs tilde expansion on words satisfying the conditions + of variable assignments (as described above under PPAARRAAMMEETTEERRSS) when they + appear as arguments to simple commands. Bash does not do this, except + for the _d_e_c_l_a_r_a_t_i_o_n commands listed above, when in _p_o_s_i_x _m_o_d_e. + PPaarraammeetteerr EExxppaannssiioonn The `$$' character introduces parameter expansion, command substitution, or arithmetic expansion. The parameter name or symbol to be expanded @@ -1598,18 +1616,18 @@ EEXXPPAANNSSIIOONN (AArrrraayyss). If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), and - _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of variable indirec- - tion. BBaasshh uses the value of the variable formed from the rest of - _p_a_r_a_m_e_t_e_r as the name of the variable; this variable is then expanded - and that value is used in the rest of the substitution, rather than the - value of _p_a_r_a_m_e_t_e_r itself. This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The - value is subject to tilde expansion, parameter expansion, command sub- - stitution, and arithmetic expansion. If _p_a_r_a_m_e_t_e_r is a nameref, this - expands to the name of the variable referenced by _p_a_r_a_m_e_t_e_r instead of - performing the complete indirect expansion. The exceptions to this are - the expansions of ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The - exclamation point must immediately follow the left brace in order to - introduce indirection. + _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of indirection. BBaasshh + uses the value formed by expanding the rest of _p_a_r_a_m_e_t_e_r as the new + _p_a_r_a_m_e_t_e_r; this is then expanded and that value is used in the rest of + the expansion, rather than the expansion of the original _p_a_r_a_m_e_t_e_r. + This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The value is subject to tilde + expansion, parameter expansion, command substitution, and arithmetic + expansion. If _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the + parameter referenced by _p_a_r_a_m_e_t_e_r instead of performing the complete + indirect expansion. The exceptions to this are the expansions of + ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The exclamation point + must immediately follow the left brace in order to introduce indirec- + tion. In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- ter expansion, command substitution, and arithmetic expansion. @@ -2701,7 +2719,7 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN ronment cannot affect the shell's execution environment. Subshells spawned to execute command substitutions inherit the value of - the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh + the --ee option from the parent shell. When not in _p_o_s_i_x _m_o_d_e, bbaasshh clears the --ee option in such subshells. If a command is followed by a && and job control is not active, the @@ -4379,71 +4397,78 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e _._._.] - ccoommpplleettee --pprr [--DDEE] [_n_a_m_e ...] + ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...] Specify how arguments to each _n_a_m_e should be completed. If the --pp option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. The --rr option removes a completion spec- ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- - pletion specifications. The --DD option indicates that the - remaining options and actions should apply to the ``default'' - command completion; that is, completion attempted on a command - for which no completion has previously been defined. The --EE - option indicates that the remaining options and actions should - apply to ``empty'' command completion; that is, completion - attempted on a blank line. - - The process of applying these completion specifications when - word completion is attempted is described above under PPrrooggrraamm-- + pletion specifications. The --DD option indicates that other sup- + plied options and actions should apply to the ``default'' com- + mand completion; that is, completion attempted on a command for + which no completion has previously been defined. The --EE option + indicates that other supplied options and actions should apply + to ``empty'' command completion; that is, completion attempted + on a blank line. The --II option indicates that other supplied + options and actions should apply to completion on the inital + non-assignment word on the line, or after a command delimiter + such as ;; or ||, which is usually command name completion. If + multiple options are supplied, the --DD option takes precedence + over --EE, and both take precedence over --II. If any of --DD, --EE, or + --II are supplied, any other _n_a_m_e arguments are ignored; these + completions only apply to the case specified by the option. + + The process of applying these completion specifications when + word completion is attempted is described above under PPrrooggrraamm-- mmaabbllee CCoommpplleettiioonn. - Other options, if specified, have the following meanings. The - arguments to the --GG, --WW, and --XX options (and, if necessary, the - --PP and --SS options) should be quoted to protect them from expan- + Other options, if specified, have the following meanings. The + arguments to the --GG, --WW, and --XX options (and, if necessary, the + --PP and --SS options) should be quoted to protect them from expan- sion before the ccoommpplleettee builtin is invoked. --oo _c_o_m_p_-_o_p_t_i_o_n - The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- - spec's behavior beyond the simple generation of comple- + The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- + spec's behavior beyond the simple generation of comple- tions. _c_o_m_p_-_o_p_t_i_o_n may be one of: bbaasshhddeeffaauulltt Perform the rest of the default bbaasshh completions if the compspec generates no matches. - ddeeffaauulltt Use readline's default filename completion if + ddeeffaauulltt Use readline's default filename completion if the compspec generates no matches. ddiirrnnaammeess - Perform directory name completion if the comp- + Perform directory name completion if the comp- spec generates no matches. ffiilleennaammeess - Tell readline that the compspec generates file- - names, so it can perform any filename-specific - processing (like adding a slash to directory - names, quoting special characters, or suppress- - ing trailing spaces). Intended to be used with + Tell readline that the compspec generates file- + names, so it can perform any filename-specific + processing (like adding a slash to directory + names, quoting special characters, or suppress- + ing trailing spaces). Intended to be used with shell functions. - nnooqquuoottee Tell readline not to quote the completed words - if they are filenames (quoting filenames is the + nnooqquuoottee Tell readline not to quote the completed words + if they are filenames (quoting filenames is the default). - nnoossoorrtt Tell readline not to sort the list of possible + nnoossoorrtt Tell readline not to sort the list of possible completions alphabetically. - nnoossppaaccee Tell readline not to append a space (the - default) to words completed at the end of the + nnoossppaaccee Tell readline not to append a space (the + default) to words completed at the end of the line. pplluussddiirrss - After any matches defined by the compspec are - generated, directory name completion is - attempted and any matches are added to the + After any matches defined by the compspec are + generated, directory name completion is + attempted and any matches are added to the results of the other actions. --AA _a_c_t_i_o_n - The _a_c_t_i_o_n may be one of the following to generate a + The _a_c_t_i_o_n may be one of the following to generate a list of possible completions: aalliiaass Alias names. May also be specified as --aa. aarrrraayyvvaarr Array variable names. bbiinnddiinngg RReeaaddlliinnee key binding names. - bbuuiillttiinn Names of shell builtin commands. May also be + bbuuiillttiinn Names of shell builtin commands. May also be specified as --bb. ccoommmmaanndd Command names. May also be specified as --cc. ddiirreeccttoorryy @@ -4451,7 +4476,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ddiissaabblleedd Names of disabled shell builtins. eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be + eexxppoorrtt Names of exported shell variables. May also be specified as --ee. ffiillee File names. May also be specified as --ff. ffuunnccttiioonn @@ -4460,17 +4485,17 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hheellppttooppiicc Help topics as accepted by the hheellpp builtin. hhoossttnnaammee - Hostnames, as taken from the file specified by + Hostnames, as taken from the file specified by the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also + jjoobb Job names, if job control is active. May also be specified as --jj. - kkeeyywwoorrdd Shell reserved words. May also be specified as + kkeeyywwoorrdd Shell reserved words. May also be specified as --kk. rruunnnniinngg Names of running jobs, if job control is active. sseerrvviiccee Service names. May also be specified as --ss. - sseettoopptt Valid arguments for the --oo option to the sseett + sseettoopptt Valid arguments for the --oo option to the sseett builtin. - sshhoopptt Shell option names as accepted by the sshhoopptt + sshhoopptt Shell option names as accepted by the sshhoopptt builtin. ssiiggnnaall Signal names. ssttooppppeedd Names of stopped jobs, if job control is active. @@ -4479,190 +4504,194 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Names of all shell variables. May also be spec- ified as --vv. --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its + _c_o_m_m_a_n_d is executed in a subshell environment, and its output is used as the possible completions. --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When the function is executed, the - first argument ($$11) is the name of the command whose - arguments are being completed, the second argument ($$22) + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When the function is executed, the + first argument ($$11) is the name of the command whose + arguments are being completed, the second argument ($$22) is the word being completed, and the third argument ($$33) - is the word preceding the word being completed on the - current command line. When it finishes, the possible - completions are retrieved from the value of the CCOOMMPPRREE-- + is the word preceding the word being completed on the + current command line. When it finishes, the possible + completions are retrieved from the value of the CCOOMMPPRREE-- PPLLYY array variable. --GG _g_l_o_b_p_a_t - The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to generate the possible completions. --PP _p_r_e_f_i_x - _p_r_e_f_i_x is added at the beginning of each possible com- + _p_r_e_f_i_x is added at the beginning of each possible com- pletion after all other options have been applied. --SS _s_u_f_f_i_x _s_u_f_f_i_x is appended to each possible completion after all other options have been applied. --WW _w_o_r_d_l_i_s_t - The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS - special variable as delimiters, and each resultant word - is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, in order to provide a mechanism for the words to contain - shell metacharacters or characters in the value of IIFFSS. - The possible completions are the members of the resul- + shell metacharacters or characters in the value of IIFFSS. + The possible completions are the members of the resul- tant list which match the word being completed. --XX _f_i_l_t_e_r_p_a_t - _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. + _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. It is applied to the list of possible completions gener- - ated by the preceding options and arguments, and each - completion matching _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this + ated by the preceding options and arguments, and each + completion matching _f_i_l_t_e_r_p_a_t is removed from the list. + A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. - The return value is true unless an invalid option is supplied, - an option other than --pp or --rr is supplied without a _n_a_m_e argu- - ment, an attempt is made to remove a completion specification + The return value is true unless an invalid option is supplied, + an option other than --pp or --rr is supplied without a _n_a_m_e argu- + ment, an attempt is made to remove a completion specification for a _n_a_m_e for which no specification exists, or an error occurs adding a completion specification. - ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEE] [++oo _o_p_t_i_o_n] [_n_a_m_e] + ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e] Modify completion options for each _n_a_m_e according to the - _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es - are supplied. If no _o_p_t_i_o_ns are given, display the completion - options for each _n_a_m_e or the current completion. The possible - values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin - described above. The --DD option indicates that the remaining + _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es + are supplied. If no _o_p_t_i_o_ns are given, display the completion + options for each _n_a_m_e or the current completion. The possible + values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin + described above. The --DD option indicates that other supplied options should apply to the ``default'' command completion; that - is, completion attempted on a command for which no completion - has previously been defined. The --EE option indicates that the - remaining options should apply to ``empty'' command completion; - that is, completion attempted on a blank line. - - The return value is true unless an invalid option is supplied, + is, completion attempted on a command for which no completion + has previously been defined. The --EE option indicates that other + supplied options should apply to ``empty'' command completion; + that is, completion attempted on a blank line. The --II option + indicates that other supplied options should apply to completion + on the inital non-assignment word on the line, or after a com- + mand delimiter such as ;; or ||, which is usually command name + completion. + + The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a _n_a_m_e for which no completion specification exists, or an output error occurs. ccoonnttiinnuuee [_n] Resume the next iteration of the enclosing ffoorr, wwhhiillee, uunnttiill, or - sseelleecctt loop. If _n is specified, resume at the _nth enclosing - loop. _n must be >= 1. If _n is greater than the number of - enclosing loops, the last enclosing loop (the ``top-level'' + sseelleecctt loop. If _n is specified, resume at the _nth enclosing + loop. _n must be >= 1. If _n is greater than the number of + enclosing loops, the last enclosing loop (the ``top-level'' loop) is resumed. The return value is 0 unless _n is not greater than or equal to 1. ddeeccllaarree [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] ttyyppeesseett [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] - Declare variables and/or give them attributes. If no _n_a_m_es are - given then display the values of variables. The --pp option will + Declare variables and/or give them attributes. If no _n_a_m_es are + given then display the values of variables. The --pp option will display the attributes and values of each _n_a_m_e. When --pp is used - with _n_a_m_e arguments, additional options, other than --ff and --FF, - are ignored. When --pp is supplied without _n_a_m_e arguments, it - will display the attributes and values of all variables having + with _n_a_m_e arguments, additional options, other than --ff and --FF, + are ignored. When --pp is supplied without _n_a_m_e arguments, it + will display the attributes and values of all variables having the attributes specified by the additional options. If no other - options are supplied with --pp, ddeeccllaarree will display the - attributes and values of all shell variables. The --ff option - will restrict the display to shell functions. The --FF option - inhibits the display of function definitions; only the function - name and attributes are printed. If the eexxttddeebbuugg shell option - is enabled using sshhoopptt, the source file name and line number + options are supplied with --pp, ddeeccllaarree will display the + attributes and values of all shell variables. The --ff option + will restrict the display to shell functions. The --FF option + inhibits the display of function definitions; only the function + name and attributes are printed. If the eexxttddeebbuugg shell option + is enabled using sshhoopptt, the source file name and line number where each _n_a_m_e is defined are displayed as well. The --FF option - implies --ff. The --gg option forces variables to be created or + implies --ff. The --gg option forces variables to be created or modified at the global scope, even when ddeeccllaarree is executed in a - shell function. It is ignored in all other cases. The follow- + shell function. It is ignored in all other cases. The follow- ing options can be used to restrict output to variables with the specified attribute or to give variables attributes: - --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss + --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss above). - --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss + --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss above). --ff Use function names only. --ii The variable is treated as an integer; arithmetic evalua- - tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when + tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when the variable is assigned a value. - --ll When the variable is assigned a value, all upper-case - characters are converted to lower-case. The upper-case + --ll When the variable is assigned a value, all upper-case + characters are converted to lower-case. The upper-case attribute is disabled. - --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name - reference to another variable. That other variable is - defined by the value of _n_a_m_e. All references, assign- - ments, and attribute modifications to _n_a_m_e, except those - using or changing the --nn attribute itself, are performed - on the variable referenced by _n_a_m_e's value. The nameref + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name + reference to another variable. That other variable is + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref attribute cannot be applied to array variables. --rr Make _n_a_m_es readonly. These names cannot then be assigned values by subsequent assignment statements or unset. - --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions - inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling - shell. The trace attribute has no special meaning for + --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions + inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling + shell. The trace attribute has no special meaning for variables. - --uu When the variable is assigned a value, all lower-case - characters are converted to upper-case. The lower-case + --uu When the variable is assigned a value, all lower-case + characters are converted to upper-case. The lower-case attribute is disabled. - --xx Mark _n_a_m_es for export to subsequent commands via the + --xx Mark _n_a_m_es for export to subsequent commands via the environment. - Using `+' instead of `-' turns off the attribute instead, with + Using `+' instead of `-' turns off the attribute instead, with the exceptions that ++aa may not be used to destroy an array vari- - able and ++rr will not remove the readonly attribute. When used + able and ++rr will not remove the readonly attribute. When used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as with the llooccaall command, unless the --gg option is supplied. If a vari- - able name is followed by =_v_a_l_u_e, the value of the variable is - set to _v_a_l_u_e. When using --aa or --AA and the compound assignment - syntax to create array variables, additional attributes do not + able name is followed by =_v_a_l_u_e, the value of the variable is + set to _v_a_l_u_e. When using --aa or --AA and the compound assignment + syntax to create array variables, additional attributes do not take effect until subsequent assignments. The return value is 0 - unless an invalid option is encountered, an attempt is made to - define a function using ``-f foo=bar'', an attempt is made to - assign a value to a readonly variable, an attempt is made to - assign a value to an array variable without using the compound - assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a - valid shell variable name, an attempt is made to turn off read- - only status for a readonly variable, an attempt is made to turn + unless an invalid option is encountered, an attempt is made to + define a function using ``-f foo=bar'', an attempt is made to + assign a value to a readonly variable, an attempt is made to + assign a value to an array variable without using the compound + assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a + valid shell variable name, an attempt is made to turn off read- + only status for a readonly variable, an attempt is made to turn off array status for an array variable, or an attempt is made to display a non-existent function with --ff. ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]] - Without options, displays the list of currently remembered - directories. The default display is on a single line with - directory names separated by spaces. Directories are added to - the list with the ppuusshhdd command; the ppooppdd command removes - entries from the list. The current directory is always the + Without options, displays the list of currently remembered + directories. The default display is on a single line with + directory names separated by spaces. Directories are added to + the list with the ppuusshhdd command; the ppooppdd command removes + entries from the list. The current directory is always the first directory in the stack. --cc Clears the directory stack by deleting all of the entries. - --ll Produces a listing using full pathnames; the default + --ll Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. --pp Print the directory stack with one entry per line. - --vv Print the directory stack with one entry per line, pre- + --vv Print the directory stack with one entry per line, pre- fixing each entry with its index in the stack. ++_n Displays the _nth entry counting from the left of the list shown by ddiirrss when invoked without options, starting with zero. - --_n Displays the _nth entry counting from the right of the + --_n Displays the _nth entry counting from the right of the list shown by ddiirrss when invoked without options, starting with zero. - The return value is 0 unless an invalid option is supplied or _n + The return value is 0 unless an invalid option is supplied or _n indexes beyond the end of the directory stack. ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] - Without options, remove each _j_o_b_s_p_e_c from the table of active - jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr - option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option - is given, each _j_o_b_s_p_e_c is not removed from the table, but is - marked so that SSIIGGHHUUPP is not sent to the job if the shell - receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option - means to remove or mark all jobs; the --rr option without a _j_o_b_- - _s_p_e_c argument restricts operation to running jobs. The return + Without options, remove each _j_o_b_s_p_e_c from the table of active + jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr + option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option + is given, each _j_o_b_s_p_e_c is not removed from the table, but is + marked so that SSIIGGHHUUPP is not sent to the job if the shell + receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option + means to remove or mark all jobs; the --rr option without a _j_o_b_- + _s_p_e_c argument restricts operation to running jobs. The return value is 0 unless a _j_o_b_s_p_e_c does not specify a valid job. eecchhoo [--nneeEE] [_a_r_g ...] - Output the _a_r_gs, separated by spaces, followed by a newline. - The return status is 0 unless a write error occurs. If --nn is + Output the _a_r_gs, separated by spaces, followed by a newline. + The return status is 0 unless a write error occurs. If --nn is specified, the trailing newline is suppressed. If the --ee option - is given, interpretation of the following backslash-escaped - characters is enabled. The --EE option disables the interpreta- - tion of these escape characters, even on systems where they are - interpreted by default. The xxppgg__eecchhoo shell option may be used - to dynamically determine whether or not eecchhoo expands these - escape characters by default. eecchhoo does not interpret ---- to - mean the end of options. eecchhoo interprets the following escape + is given, interpretation of the following backslash-escaped + characters is enabled. The --EE option disables the interpreta- + tion of these escape characters, even on systems where they are + interpreted by default. The xxppgg__eecchhoo shell option may be used + to dynamically determine whether or not eecchhoo expands these + escape characters by default. eecchhoo does not interpret ---- to + mean the end of options. eecchhoo interprets the following escape sequences: \\aa alert (bell) \\bb backspace @@ -4675,190 +4704,190 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS \\tt horizontal tab \\vv vertical tab \\\\ backslash - \\00_n_n_n the eight-bit character whose value is the octal value + \\00_n_n_n the eight-bit character whose value is the octal value _n_n_n (zero to three octal digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal + \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H (one to four hex digits) \\UU_H_H_H_H_H_H_H_H - the Unicode (ISO/IEC 10646) character whose value is the + the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] - Enable and disable builtin shell commands. Disabling a builtin + Enable and disable builtin shell commands. Disabling a builtin allows a disk command which has the same name as a shell builtin - to be executed without specifying a full pathname, even though - the shell normally searches for builtins before disk commands. - If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are + to be executed without specifying a full pathname, even though + the shell normally searches for builtins before disk commands. + If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are enabled. For example, to use the tteesstt binary found via the PPAATTHH - instead of the shell builtin version, run ``enable -n test''. - The --ff option means to load the new builtin command _n_a_m_e from + instead of the shell builtin version, run ``enable -n test''. + The --ff option means to load the new builtin command _n_a_m_e from shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading. - The --dd option will delete a builtin previously loaded with --ff. + The --dd option will delete a builtin previously loaded with --ff. If no _n_a_m_e arguments are given, or if the --pp option is supplied, a list of shell builtins is printed. With no other option argu- - ments, the list consists of all enabled shell builtins. If --nn - is supplied, only disabled builtins are printed. If --aa is sup- - plied, the list printed includes all builtins, with an indica- - tion of whether or not each is enabled. If --ss is supplied, the - output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return - value is 0 unless a _n_a_m_e is not a shell builtin or there is an + ments, the list consists of all enabled shell builtins. If --nn + is supplied, only disabled builtins are printed. If --aa is sup- + plied, the list printed includes all builtins, with an indica- + tion of whether or not each is enabled. If --ss is supplied, the + output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return + value is 0 unless a _n_a_m_e is not a shell builtin or there is an error loading a new builtin from a shared object. eevvaall [_a_r_g ...] - The _a_r_gs are read and concatenated together into a single com- - mand. This command is then read and executed by the shell, and - its exit status is returned as the value of eevvaall. If there are + The _a_r_gs are read and concatenated together into a single com- + mand. This command is then read and executed by the shell, and + its exit status is returned as the value of eevvaall. If there are no _a_r_g_s, or only null arguments, eevvaall returns 0. eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]] - If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process - is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If + If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process + is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If the --ll option is supplied, the shell places a dash at the begin- - ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what + ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with - an empty environment. If --aa is supplied, the shell passes _n_a_m_e + an empty environment. If --aa is supplied, the shell passes _n_a_m_e as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can- - not be executed for some reason, a non-interactive shell exits, - unless the eexxeeccffaaiill shell option is enabled. In that case, it - returns failure. An interactive shell returns failure if the - file cannot be executed. A subshell exits unconditionally if - eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take - effect in the current shell, and the return status is 0. If + not be executed for some reason, a non-interactive shell exits, + unless the eexxeeccffaaiill shell option is enabled. In that case, it + returns failure. An interactive shell returns failure if the + file cannot be executed. A subshell exits unconditionally if + eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take + effect in the current shell, and the return status is 0. If there is a redirection error, the return status is 1. eexxiitt [_n] - Cause the shell to exit with a status of _n. If _n is omitted, + Cause the shell to exit with a status of _n. If _n is omitted, the exit status is that of the last command executed. A trap on EEXXIITT is executed before the shell terminates. eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ... eexxppoorrtt --pp - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or - if the --pp option is supplied, a list of names of all exported - variables is printed. The --nn option causes the export property + The supplied _n_a_m_e_s are marked for automatic export to the envi- + ronment of subsequently executed commands. If the --ff option is + given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or + if the --pp option is supplied, a list of names of all exported + variables is printed. The --nn option causes the export property to be removed from each _n_a_m_e. If a variable name is followed by =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns an exit status of 0 unless an invalid option is encountered, one - of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- plied with a _n_a_m_e that is not a function. ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t - from the history list and displays or edits and re-executes - them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate - the last command beginning with that string) or as a number (an - index into the history list, where a negative number is used as - an offset from the current command number). If _l_a_s_t is not + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate + the last command beginning with that string) or as a number (an + index into the history list, where a negative number is used as + an offset from the current command number). If _l_a_s_t is not specified, it is set to the current command for listing (so that - ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- + ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- wise. If _f_i_r_s_t is not specified, it is set to the previous com- mand for editing and -16 for listing. - The --nn option suppresses the command numbers when listing. The - --rr option reverses the order of the commands. If the --ll option - is given, the commands are listed on standard output. Other- - wise, the editor given by _e_n_a_m_e is invoked on a file containing - those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT - variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. - If neither variable is set, _v_i is used. When editing is com- + The --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, _v_i is used. When editing is com- plete, the edited commands are echoed and executed. - In the second form, _c_o_m_m_a_n_d is re-executed after each instance - of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as - _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', - so that typing ``r cc'' runs the last command beginning with + In the second form, _c_o_m_m_a_n_d is re-executed after each instance + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as + _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', + so that typing ``r cc'' runs the last command beginning with ``cc'' and typing ``r'' re-executes the last command. - If the first form is used, the return value is 0 unless an - invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history - lines out of range. If the --ee option is supplied, the return + If the first form is used, the return value is 0 unless an + invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history + lines out of range. If the --ee option is supplied, the return value is the value of the last command executed or failure if an error occurs with the temporary file of commands. If the second - form is used, the return status is that of the command re-exe- - cuted, unless _c_m_d does not specify a valid history line, in + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in which case ffcc returns failure. ffgg [_j_o_b_s_p_e_c] - Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b - is used. The return value is that of the command placed into - the foreground, or failure if run when job control is disabled + is used. The return value is that of the command placed into + the foreground, or failure if run when job control is disabled or, when run with job control enabled, if _j_o_b_s_p_e_c does not spec- - ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started without job control. ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] - ggeettooppttss is used by shell procedures to parse positional parame- - ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- - nized; if a character is followed by a colon, the option is - expected to have an argument, which should be separated from it - by white space. The colon and question mark characters may not - be used as option characters. Each time it is invoked, ggeettooppttss - places the next option in the shell variable _n_a_m_e, initializing + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- + nized; if a character is followed by a colon, the option is + expected to have an argument, which should be separated from it + by white space. The colon and question mark characters may not + be used as option characters. Each time it is invoked, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing _n_a_m_e if it does not exist, and the index of the next argument to be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to - 1 each time the shell or a shell script is invoked. When an - option requires an argument, ggeettooppttss places that argument into - the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- - cally; it must be manually reset between multiple calls to + 1 each time the shell or a shell script is invoked. When an + option requires an argument, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to ggeettooppttss within the same shell invocation if a new set of parame- ters is to be used. - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of the first non-option argument, and _n_a_m_e is set to ?. - ggeettooppttss normally parses the positional parameters, but if more + ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - ggeettooppttss can report errors in two ways. If the first character - of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In - normal operation, diagnostic messages are printed when invalid - options or missing option arguments are encountered. If the - variable OOPPTTEERRRR is set to 0, no error messages will be dis- + ggeettooppttss can report errors in two ways. If the first character + of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In + normal operation, diagnostic messages are printed when invalid + options or missing option arguments are encountered. If the + variable OOPPTTEERRRR is set to 0, no error messages will be dis- played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon. If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if - not silent, prints an error message and unsets OOPPTTAARRGG. If - ggeettooppttss is silent, the option character found is placed in + not silent, prints an error message and unsets OOPPTTAARRGG. If + ggeettooppttss is silent, the option character found is placed in OOPPTTAARRGG and no diagnostic message is printed. - If a required argument is not found, and ggeettooppttss is not silent, - a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a - diagnostic message is printed. If ggeettooppttss is silent, then a - colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option + If a required argument is not found, and ggeettooppttss is not silent, + a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a + diagnostic message is printed. If ggeettooppttss is silent, then a + colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option character found. - ggeettooppttss returns true if an option, specified or unspecified, is + ggeettooppttss returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs. hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e - is determined by searching the directories in $$PPAATTHH and remem- + is determined by searching the directories in $$PPAATTHH and remem- bered. Any previously-remembered pathname is discarded. If the --pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e - is used as the full filename of the command. The --rr option - causes the shell to forget all remembered locations. The --dd - option causes the shell to forget the remembered location of - each _n_a_m_e. If the --tt option is supplied, the full pathname to - which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu- - ments are supplied with --tt, the _n_a_m_e is printed before the - hashed full pathname. The --ll option causes output to be dis- + is used as the full filename of the command. The --rr option + causes the shell to forget all remembered locations. The --dd + option causes the shell to forget the remembered location of + each _n_a_m_e. If the --tt option is supplied, the full pathname to + which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu- + ments are supplied with --tt, the _n_a_m_e is printed before the + hashed full pathname. The --ll option causes output to be dis- played in a format that may be reused as input. If no arguments - are given, or if only --ll is supplied, information about remem- - bered commands is printed. The return status is true unless a + are given, or if only --ll is supplied, information about remem- + bered commands is printed. The return status is true unless a _n_a_m_e is not found or an invalid option is supplied. hheellpp [--ddmmss] [_p_a_t_t_e_r_n] - Display helpful information about builtin commands. If _p_a_t_t_e_r_n - is specified, hheellpp gives detailed help on all commands matching - _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control + Display helpful information about builtin commands. If _p_a_t_t_e_r_n + is specified, hheellpp gives detailed help on all commands matching + _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control structures is printed. --dd Display a short description of each _p_a_t_t_e_r_n --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like @@ -4876,53 +4905,53 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] With no options, display the command history list with line num- bers. Lines listed with a ** have been modified. An argument of - _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- - FFOORRMMAATT is set and not null, it is used as a format string for - _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- - played history entry. No intervening blank is printed between - the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is - supplied, it is used as the name of the history file; if not, - the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the + _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- + FFOORRMMAATT is set and not null, it is used as a format string for + _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- + played history entry. No intervening blank is printed between + the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is + supplied, it is used as the name of the history file; if not, + the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the following meanings: --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t - Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t + Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t is negative, it is interpreted as relative to one greater than the last history position, so negative indices count - back from the end of the history, and an index of -1 + back from the end of the history, and an index of -1 refers to the current hhiissttoorryy --dd command. --dd _s_t_a_r_t-_e_n_d - Delete the history entries between positions _s_t_a_r_t and - _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t + Delete the history entries between positions _s_t_a_r_t and + _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t and _e_n_d are interpreted as described above. - --aa Append the ``new'' history lines to the history file. - These are history lines entered since the beginning of + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of the current bbaasshh session, but not already appended to the history file. - --nn Read the history lines not already read from the history - file into the current history list. These are lines - appended to the history file since the beginning of the + --nn Read the history lines not already read from the history + file into the current history list. These are lines + appended to the history file since the beginning of the current bbaasshh session. - --rr Read the contents of the history file and append them to + --rr Read the contents of the history file and append them to the current history list. --ww Write the current history list to the history file, over- writing the history file's contents. - --pp Perform history substitution on the following _a_r_g_s and - display the result on the standard output. Does not - store the results in the history list. Each _a_r_g must be + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. - If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- - tion associated with each history entry is written to the his- - tory file, marked with the history comment character. When the - history file is read, lines beginning with the history comment - character followed immediately by a digit are interpreted as + If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- + tion associated with each history entry is written to the his- + tory file, marked with the history comment character. When the + history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while - reading or writing the history file, an invalid _o_f_f_s_e_t is sup- + reading or writing the history file, an invalid _o_f_f_s_e_t is sup- plied as an argument to --dd, or the history expansion supplied as an argument to --pp fails. @@ -4931,210 +4960,210 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed + --nn Display information only about jobs that have changed status since the user was last notified of their status. - --pp List only the process ID of the job's process group + --pp List only the process ID of the job's process group leader. --rr Display only running jobs. --ss Display only stopped jobs. - If _j_o_b_s_p_e_c is given, output is restricted to information about - that job. The return status is 0 unless an invalid option is + If _j_o_b_s_p_e_c is given, output is restricted to information about + that job. The return status is 0 unless an invalid option is encountered or an invalid _j_o_b_s_p_e_c is supplied. If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in - _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and + _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are + Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive + signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or + a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not + present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the + signal names. If any arguments are supplied when --ll is given, + the names of the signals corresponding to the arguments are listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. The --LL option is - equivalent to --ll. kkiillll returns true if at least one signal was - successfully sent, or false if an error occurs or an invalid + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was + successfully sent, or false if an error occurs or an invalid option is encountered. lleett _a_r_g [_a_r_g ...] Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett + MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett returns 1; 0 is returned otherwise. llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + For each argument, a local variable named _n_a_m_e is created, and + assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddeeccllaarree. When llooccaall is used within a function, it causes the - variable _n_a_m_e to have a visible scope restricted to that func- - tion and its children. If _n_a_m_e is -, the set of shell options - is made local to the function in which llooccaall is invoked: shell - options changed using the sseett builtin inside the function are - restored to their original values when the function returns. - With no operands, llooccaall writes a list of local variables to the - standard output. It is an error to use llooccaall when not within a + variable _n_a_m_e to have a visible scope restricted to that func- + tion and its children. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. + With no operands, llooccaall writes a list of local variables to the + standard output. It is an error to use llooccaall when not within a function. The return status is 0 unless llooccaall is used outside a - function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly + function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. llooggoouutt Exit a login shell. - mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - Read lines from the standard input into the indexed array vari- - able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- - plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, have the following meanings: - --dd The first character of _d_e_l_i_m is used to terminate each - input line, rather than newline. If _d_e_l_i_m is the empty + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. If _d_e_l_i_m is the empty string, mmaappffiillee will terminate a line when it reads a NUL character. - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are + --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are copied. - --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default + --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default index is 0. --ss Discard the first _c_o_u_n_t lines read. - --tt Remove a trailing _d_e_l_i_m (default newline) from each line + --tt Remove a trailing _d_e_l_i_m (default newline) from each line read. - --uu Read lines from file descriptor _f_d instead of the stan- + --uu Read lines from file descriptor _f_d instead of the stan- dard input. - --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The --cc option specifies _q_u_a_n_t_u_m. - --cc Specify the number of lines read between each call to + --cc Specify the number of lines read between each call to _c_a_l_l_b_a_c_k. - If --CC is specified without --cc, the default quantum is 5000. + If --CC is specified without --cc, the default quantum is 5000. When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next array element to be assigned and the line to be assigned to that - element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after the line is read but before the array element is assigned. - If not supplied with an explicit origin, mmaappffiillee will clear + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_r_a_y before assigning to it. - mmaappffiillee returns successfully unless an invalid option or option - argument is supplied, _a_r_r_a_y is invalid or unassignable, or if + mmaappffiillee returns successfully unless an invalid option or option + argument is supplied, _a_r_r_a_y is invalid or unassignable, or if _a_r_r_a_y is not an indexed array. ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to the new top directory. Arguments, if supplied, have the follow- ing meanings: - --nn Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is manipulated. - ++_n Removes the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero. For example: ``popd + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd +0'' removes the first directory, ``popd +1'' the second. --_n Removes the _nth entry counting from the right of the list - shown by ddiirrss, starting with zero. For example: ``popd - -0'' removes the last directory, ``popd -1'' the next to + shown by ddiirrss, starting with zero. For example: ``popd + -0'' removes the last directory, ``popd -1'' the next to last. - If the ppooppdd command is successful, a ddiirrss is performed as well, - and the return status is 0. ppooppdd returns false if an invalid + If the ppooppdd command is successful, a ddiirrss is performed as well, + and the return status is 0. ppooppdd returns false if an invalid option is encountered, the directory stack is empty, a non-exis- tent directory stack entry is specified, or the directory change fails. pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s] - Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the - control of the _f_o_r_m_a_t. The --vv option causes the output to be - assigned to the variable _v_a_r rather than being printed to the + Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the + control of the _f_o_r_m_a_t. The --vv option causes the output to be + assigned to the variable _v_a_r rather than being printed to the standard output. - The _f_o_r_m_a_t is a character string which contains three types of - objects: plain characters, which are simply copied to standard - output, character escape sequences, which are converted and - copied to the standard output, and format specifications, each - of which causes printing of the next successive _a_r_g_u_m_e_n_t. In + The _f_o_r_m_a_t is a character string which contains three types of + objects: plain characters, which are simply copied to standard + output, character escape sequences, which are converted and + copied to the standard output, and format specifications, each + of which causes printing of the next successive _a_r_g_u_m_e_n_t. In addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff interprets the following extensions: %%bb causes pprriinnttff to expand backslash escape sequences in the corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. - %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a + %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. %%((_d_a_t_e_f_m_t))TT - causes pprriinnttff to output the date-time string resulting - from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). The corresponding _a_r_g_u_m_e_n_t is an integer representing the - number of seconds since the epoch. Two special argument - values may be used: -1 represents the current time, and - -2 represents the time the shell was invoked. If no - argument is specified, conversion behaves as if -1 had - been given. This is an exception to the usual pprriinnttff + number of seconds since the epoch. Two special argument + values may be used: -1 represents the current time, and + -2 represents the time the shell was invoked. If no + argument is specified, conversion behaves as if -1 had + been given. This is an exception to the usual pprriinnttff behavior. - Arguments to non-string format specifiers are treated as C con- + Arguments to non-string format specifiers are treated as C con- stants, except that a leading plus or minus sign is allowed, and - if the leading character is a single or double quote, the value + if the leading character is a single or double quote, the value is the ASCII value of the following character. - The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- _m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s than are supplied, - the extra format specifications behave as if a zero value or - null string, as appropriate, had been supplied. The return + the extra format specifications behave as if a zero value or + null string, as appropriate, had been supplied. The return value is zero on success, non-zero on failure. ppuusshhdd [--nn] [+_n] [-_n] ppuusshhdd [--nn] [_d_i_r] - Adds a directory to the top of the directory stack, or rotates - the stack, making the new top of the stack the current working - directory. With no arguments, ppuusshhdd exchanges the top two - directories and returns 0, unless the directory stack is empty. + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working + directory. With no arguments, ppuusshhdd exchanges the top two + directories and returns 0, unless the directory stack is empty. Arguments, if supplied, have the following meanings: - --nn Suppresses the normal change of directory when rotating - or adding directories to the stack, so that only the + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the stack is manipulated. - ++_n Rotates the stack so that the _nth directory (counting - from the left of the list shown by ddiirrss, starting with + ++_n Rotates the stack so that the _nth directory (counting + from the left of the list shown by ddiirrss, starting with zero) is at the top. - --_n Rotates the stack so that the _nth directory (counting - from the right of the list shown by ddiirrss, starting with + --_n Rotates the stack so that the _nth directory (counting + from the right of the list shown by ddiirrss, starting with zero) is at the top. _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory as if it had been supplied + new current working directory as if it had been supplied as the argument to the ccdd builtin. If the ppuusshhdd command is successful, a ddiirrss is performed as well. - If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r - fails. With the second form, ppuusshhdd returns 0 unless the direc- - tory stack is empty, a non-existent directory stack element is - specified, or the directory change to the specified new current + If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r + fails. With the second form, ppuusshhdd returns 0 unless the direc- + tory stack is empty, a non-existent directory stack element is + specified, or the directory change to the specified new current directory fails. ppwwdd [--LLPP] - Print the absolute pathname of the current working directory. + Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the --PP option is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command - is enabled. If the --LL option is used, the pathname printed may - contain symbolic links. The return status is 0 unless an error - occurs while reading the name of the current directory or an + is enabled. If the --LL option is used, the pathname printed may + contain symbolic links. The return status is 0 unless an error + occurs while reading the name of the current directory or an invalid option is supplied. rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] - One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, split - into words as described above under WWoorrdd SSpplliittttiinngg, and the + One line is read from the standard input, or from the file + descriptor _f_d supplied as an argument to the --uu option, split + into words as described above under WWoorrdd SSpplliittttiinngg, and the first word is assigned to the first _n_a_m_e, the second word to the second _n_a_m_e, and so on. If there are more words than names, the remaining words and their intervening delimiters are assigned to - the last _n_a_m_e. If there are fewer words read from the input - stream than names, the remaining names are assigned empty val- - ues. The characters in IIFFSS are used to split the line into + the last _n_a_m_e. If there are fewer words read from the input + stream than names, the remaining names are assigned empty val- + ues. The characters in IIFFSS are used to split the line into words using the same rules the shell uses for expansion (described above under WWoorrdd SSpplliittttiinngg). The backslash character (\\) may be used to remove any special meaning for the next char- - acter read and for line continuation. Options, if supplied, + acter read and for line continuation. Options, if supplied, have the following meanings: --aa _a_n_a_m_e The words are assigned to sequential indices of the array @@ -5142,31 +5171,31 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS new values are assigned. Other _n_a_m_e arguments are ignored. --dd _d_e_l_i_m - The first character of _d_e_l_i_m is used to terminate the - input line, rather than newline. If _d_e_l_i_m is the empty - string, rreeaadd will terminate a line when it reads a NUL + The first character of _d_e_l_i_m is used to terminate the + input line, rather than newline. If _d_e_l_i_m is the empty + string, rreeaadd will terminate a line when it reads a NUL character. --ee If the standard input is coming from a terminal, rreeaaddlliinnee - (see RREEAADDLLIINNEE above) is used to obtain the line. Read- - line uses the current (or default, if line editing was - not previously active) editing settings, but uses Read- + (see RREEAADDLLIINNEE above) is used to obtain the line. Read- + line uses the current (or default, if line editing was + not previously active) editing settings, but uses Read- line's default filename completion. --ii _t_e_x_t - If rreeaaddlliinnee is being used to read the line, _t_e_x_t is + If rreeaaddlliinnee is being used to read the line, _t_e_x_t is placed into the editing buffer before editing begins. --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than + rreeaadd returns after reading _n_c_h_a_r_s characters rather than waiting for a complete line of input, but honors a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the + iter if fewer than _n_c_h_a_r_s characters are read before the delimiter. --NN _n_c_h_a_r_s - rreeaadd returns after reading exactly _n_c_h_a_r_s characters - rather than waiting for a complete line of input, unless - EOF is encountered or rreeaadd times out. Delimiter charac- - ters encountered in the input are not treated specially - and do not cause rreeaadd to return until _n_c_h_a_r_s characters - are read. The result is not split on the characters in - IIFFSS; the intent is that the variable is assigned exactly + rreeaadd returns after reading exactly _n_c_h_a_r_s characters + rather than waiting for a complete line of input, unless + EOF is encountered or rreeaadd times out. Delimiter charac- + ters encountered in the input are not treated specially + and do not cause rreeaadd to return until _n_c_h_a_r_s characters + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly the characters read (with the exception of backslash; see the --rr option below). --pp _p_r_o_m_p_t @@ -5174,131 +5203,131 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not be used as a line + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not be used as a line continuation. --ss Silent mode. If input is coming from a terminal, charac- ters are not echoed. --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if a complete - line of input (or a specified number of characters) is - not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- - mal number with a fractional portion following the deci- - mal point. This option is only effective if rreeaadd is - reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. + Cause rreeaadd to time out and return failure if a complete + line of input (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. If rreeaadd times out, rreeaadd saves any partial input read into - the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd - returns immediately, without trying to read any data. - The exit status is 0 if input is available on the speci- - fied file descriptor, non-zero otherwise. The exit sta- + the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd + returns immediately, without trying to read any data. + The exit status is 0 if input is available on the speci- + fied file descriptor, non-zero otherwise. The exit sta- tus is greater than 128 if the timeout is exceeded. --uu _f_d Read input from file descriptor _f_d. If no _n_a_m_e_s are supplied, the line read is assigned to the vari- - able RREEPPLLYY. The exit status is zero, unless end-of-file is + able RREEPPLLYY. The exit status is zero, unless end-of-file is encountered, rreeaadd times out (in which case the status is greater - than 128), a variable assignment error (such as assigning to a + than 128), a variable assignment error (such as assigning to a readonly variable) occurs, or an invalid file descriptor is sup- plied as the argument to --uu. rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - arrays; the --AA option restricts the variables to associative - arrays. If both options are supplied, --AA takes precedence. If - no _n_a_m_e arguments are given, or if the --pp option is supplied, a + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed + arrays; the --AA option restricts the variables to associative + arrays. If both options are supplied, --AA takes precedence. If + no _n_a_m_e arguments are given, or if the --pp option is supplied, a list of all readonly names is printed. The other options may be - used to restrict the output to a subset of the set of readonly - names. The --pp option causes output to be displayed in a format - that may be reused as input. If a variable name is followed by - =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return - status is 0 unless an invalid option is encountered, one of the + used to restrict the output to a subset of the set of readonly + names. The --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with a _n_a_m_e that is not a function. rreettuurrnn [_n] - Causes a function to stop executing and return the value speci- - fied by _n to its caller. If _n is omitted, the return status is - that of the last command executed in the function body. If - rreettuurrnn is executed by a trap handler, the last command used to - determine the status is the last command executed before the - trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the - last command used to determine the status is the last command - executed by the trap handler before rreettuurrnn was invoked. If - rreettuurrnn is used outside a function, but during execution of a - script by the .. (ssoouurrccee) command, it causes the shell to stop - executing that script and return either _n or the exit status of - the last command executed within the script as the exit status - of the script. If _n is supplied, the return value is its least - significant 8 bits. The return status is non-zero if rreettuurrnn is - supplied a non-numeric argument, or is used outside a function - and not during execution of a script by .. or ssoouurrccee. Any com- - mand associated with the RREETTUURRNN trap is executed before execu- + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If + rreettuurrnn is executed by a trap handler, the last command used to + determine the status is the last command executed before the + trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the + last command used to determine the status is the last command + executed by the trap handler before rreettuurrnn was invoked. If + rreettuurrnn is used outside a function, but during execution of a + script by the .. (ssoouurrccee) command, it causes the shell to stop + executing that script and return either _n or the exit status of + the last command executed within the script as the exit status + of the script. If _n is supplied, the return value is its least + significant 8 bits. The return status is non-zero if rreettuurrnn is + supplied a non-numeric argument, or is used outside a function + and not during execution of a script by .. or ssoouurrccee. Any com- + mand associated with the RREETTUURRNN trap is executed before execu- tion resumes after the function or script. sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - Without options, the name and value of each shell variable are + Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables can- - not be reset. In _p_o_s_i_x mode, only shell variables are listed. - The output is sorted according to the current locale. When - options are specified, they set or unset shell attributes. Any - arguments remaining after option processing are treated as val- + not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed. + The output is sorted according to the current locale. When + options are specified, they set or unset shell attributes. Any + arguments remaining after option processing are treated as val- ues for the positional parameters and are assigned, in order, to - $$11, $$22, ...... $$_n. Options, if specified, have the following + $$11, $$22, ...... $$_n. Options, if specified, have the following meanings: --aa Each variable or function that is created or modified is - given the export attribute and marked for export to the + given the export attribute and marked for export to the environment of subsequent commands. - --bb Report the status of terminated background jobs immedi- + --bb Report the status of terminated background jobs immedi- ately, rather than before the next primary prompt. This is effective only when job control is enabled. - --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a - single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d + --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a + single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status. - The shell does not exit if the command that fails is - part of the command list immediately following a wwhhiillee - or uunnttiill keyword, part of the test following the iiff or - eelliiff reserved words, part of any command executed in a - &&&& or |||| list except the command following the final &&&& + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& or ||||, any command in a pipeline but the last, or if the - command's return value is being inverted with !!. If a - compound command other than a subshell returns a non- - zero status because a command failed while --ee was being - ignored, the shell does not exit. A trap on EERRRR, if - set, is executed before the shell exits. This option + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT above), and may cause subshells to exit before executing all the commands in the subshell. - If a compound command or shell function executes in a - context where --ee is being ignored, none of the commands - executed within the compound command or function body - will be affected by the --ee setting, even if --ee is set - and a command returns a failure status. If a compound - command or shell function sets --ee while executing in a - context where --ee is ignored, that setting will not have - any effect until the compound command or the command + If a compound command or shell function executes in a + context where --ee is being ignored, none of the commands + executed within the compound command or function body + will be affected by the --ee setting, even if --ee is set + and a command returns a failure status. If a compound + command or shell function sets --ee while executing in a + context where --ee is ignored, that setting will not have + any effect until the compound command or the command containing the function call completes. --ff Disable pathname expansion. - --hh Remember the location of commands as they are looked up + --hh Remember the location of commands as they are looked up for execution. This is enabled by default. - --kk All arguments in the form of assignment statements are - placed in the environment for a command, not just those + --kk All arguments in the form of assignment statements are + placed in the environment for a command, not just those that precede the command name. - --mm Monitor mode. Job control is enabled. This option is - on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run + --mm Monitor mode. Job control is enabled. This option is + on by default for interactive shells on systems that + support it (see JJOOBB CCOONNTTRROOLL above). All processes run in a separate process group. When a background job com- pletes, the shell prints a line containing its exit sta- tus. --nn Read commands but do not execute them. This may be used - to check a shell script for syntax errors. This is + to check a shell script for syntax errors. This is ignored by interactive shells. --oo _o_p_t_i_o_n_-_n_a_m_e The _o_p_t_i_o_n_-_n_a_m_e can be one of the following: @@ -5306,10 +5335,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Same as --aa. bbrraacceeeexxppaanndd Same as --BB. - eemmaaccss Use an emacs-style command line editing inter- + eemmaaccss Use an emacs-style command line editing inter- face. This is enabled by default when the shell is interactive, unless the shell is started with - the ----nnooeeddiittiinngg option. This also affects the + the ----nnooeeddiittiinngg option. This also affects the editing interface used for rreeaadd --ee. eerrrreexxiitt Same as --ee. eerrrrttrraaccee @@ -5323,8 +5352,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS HHIISSTTOORRYY. This option is on by default in inter- active shells. iiggnnoorreeeeooff - The effect is as if the shell command - ``IGNOREEOF=10'' had been executed (see SShheellll + The effect is as if the shell command + ``IGNOREEOF=10'' had been executed (see SShheellll VVaarriiaabblleess above). kkeeyywwoorrdd Same as --kk. mmoonniittoorr Same as --mm. @@ -5339,384 +5368,384 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS pphhyyssiiccaall Same as --PP. ppiippeeffaaiill - If set, the return value of a pipeline is the - value of the last (rightmost) command to exit - with a non-zero status, or zero if all commands - in the pipeline exit successfully. This option + If set, the return value of a pipeline is the + value of the last (rightmost) command to exit + with a non-zero status, or zero if all commands + in the pipeline exit successfully. This option is disabled by default. - ppoossiixx Change the behavior of bbaasshh where the default - operation differs from the POSIX standard to - match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO + ppoossiixx Change the behavior of bbaasshh where the default + operation differs from the POSIX standard to + match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO below for a reference to a document that details how posix mode affects bash's behavior. pprriivviilleeggeedd Same as --pp. vveerrbboossee Same as --vv. - vvii Use a vi-style command line editing interface. + vvii Use a vi-style command line editing interface. This also affects the editing interface used for rreeaadd --ee. xxttrraaccee Same as --xx. If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the - current options are printed. If ++oo is supplied with no - _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the - current option settings is displayed on the standard + current options are printed. If ++oo is supplied with no + _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the + current option settings is displayed on the standard output. - --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and - $$BBAASSHH__EENNVV files are not processed, shell functions are - not inherited from the environment, and the SSHHEELLLLOOPPTTSS, - BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they + --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and + $$BBAASSHH__EENNVV files are not processed, shell functions are + not inherited from the environment, and the SSHHEELLLLOOPPTTSS, + BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they appear in the environment, are ignored. If the shell is - started with the effective user (group) id not equal to - the real user (group) id, and the --pp option is not sup- + started with the effective user (group) id not equal to + the real user (group) id, and the --pp option is not sup- plied, these actions are taken and the effective user id - is set to the real user id. If the --pp option is sup- - plied at startup, the effective user id is not reset. - Turning this option off causes the effective user and + is set to the real user id. If the --pp option is sup- + plied at startup, the effective user id is not reset. + Turning this option off causes the effective user and group ids to be set to the real user and group ids. --tt Exit after reading and executing one command. --uu Treat unset variables and parameters other than the spe- - cial parameters "@" and "*" as an error when performing - parameter expansion. If expansion is attempted on an - unset variable or parameter, the shell prints an error - message, and, if not interactive, exits with a non-zero + cial parameters "@" and "*" as an error when performing + parameter expansion. If expansion is attempted on an + unset variable or parameter, the shell prints an error + message, and, if not interactive, exits with a non-zero status. --vv Print shell input lines as they are read. - --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command + play the expanded value of PPSS44, followed by the command and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn + --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn above). This is on by default. - --CC If set, bbaasshh does not overwrite an existing file with - the >>, >>&&, and <<>> redirection operators. This may be + --CC If set, bbaasshh does not overwrite an existing file with + the >>, >>&&, and <<>> redirection operators. This may be overridden when creating output files by using the redi- rection operator >>|| instead of >>. --EE If set, any trap on EERRRR is inherited by shell functions, - command substitutions, and commands executed in a sub- - shell environment. The EERRRR trap is normally not inher- + command substitutions, and commands executed in a sub- + shell environment. The EERRRR trap is normally not inher- ited in such cases. --HH Enable !! style history substitution. This option is on by default when the shell is interactive. - --PP If set, the shell does not resolve symbolic links when - executing commands such as ccdd that change the current + --PP If set, the shell does not resolve symbolic links when + executing commands such as ccdd that change the current working directory. It uses the physical directory structure instead. By default, bbaasshh follows the logical - chain of directories when performing commands which + chain of directories when performing commands which change the current directory. - --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by - shell functions, command substitutions, and commands - executed in a subshell environment. The DDEEBBUUGG and + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by + shell functions, command substitutions, and commands + executed in a subshell environment. The DDEEBBUUGG and RREETTUURRNN traps are normally not inherited in such cases. - ---- If no arguments follow this option, then the positional + ---- If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parame- - ters are set to the _a_r_gs, even if some of them begin + ters are set to the _a_r_gs, even if some of them begin with a --. - -- Signal the end of options, cause all remaining _a_r_gs to + -- Signal the end of options, cause all remaining _a_r_gs to be assigned to the positional parameters. The --xx and --vv options are turned off. If there are no _a_r_gs, the posi- tional parameters remain unchanged. - The options are off by default unless otherwise noted. Using + - rather than - causes these options to be turned off. The - options can also be specified as arguments to an invocation of - the shell. The current set of options may be found in $$--. The + The options are off by default unless otherwise noted. Using + + rather than - causes these options to be turned off. The + options can also be specified as arguments to an invocation of + the shell. The current set of options may be found in $$--. The return status is always true unless an invalid option is encoun- tered. sshhiifftt [_n] - The positional parameters from _n+1 ... are renamed to $$11 ........ - Parameters represented by the numbers $$## down to $$##-_n+1 are - unset. _n must be a non-negative number less than or equal to - $$##. If _n is 0, no parameters are changed. If _n is not given, - it is assumed to be 1. If _n is greater than $$##, the positional - parameters are not changed. The return status is greater than + The positional parameters from _n+1 ... are renamed to $$11 ........ + Parameters represented by the numbers $$## down to $$##-_n+1 are + unset. _n must be a non-negative number less than or equal to + $$##. If _n is 0, no parameters are changed. If _n is not given, + it is assumed to be 1. If _n is greater than $$##, the positional + parameters are not changed. The return status is greater than zero if _n is greater than $$## or less than zero; otherwise 0. sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...] - Toggle the values of settings controlling optional shell behav- - ior. The settings can be either those listed below, or, if the + Toggle the values of settings controlling optional shell behav- + ior. The settings can be either those listed below, or, if the --oo option is used, those available with the --oo option to the sseett builtin command. With no options, or with the --pp option, a list - of all settable options is displayed, with an indication of + of all settable options is displayed, with an indication of whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output - is restricted to those options. The --pp option causes output to - be displayed in a form that may be reused as input. Other + is restricted to those options. The --pp option causes output to + be displayed in a form that may be reused as input. Other options have the following meanings: --ss Enable (set) each _o_p_t_n_a_m_e. --uu Disable (unset) each _o_p_t_n_a_m_e. - --qq Suppresses normal output (quiet mode); the return status + --qq Suppresses normal output (quiet mode); the return status indicates whether the _o_p_t_n_a_m_e is set or unset. If multi- - ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- - tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- + ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- + tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- wise. - --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for + --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for the --oo option to the sseett builtin. - If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt - shows only those options which are set or unset, respectively. - Unless otherwise noted, the sshhoopptt options are disabled (unset) + If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt + shows only those options which are set or unset, respectively. + Unless otherwise noted, the sshhoopptt options are disabled (unset) by default. - The return status when listing options is zero if all _o_p_t_n_a_m_e_s - are enabled, non-zero otherwise. When setting or unsetting - options, the return status is zero unless an _o_p_t_n_a_m_e is not a + The return status when listing options is zero if all _o_p_t_n_a_m_e_s + are enabled, non-zero otherwise. When setting or unsetting + options, the return status is zero unless an _o_p_t_n_a_m_e is not a valid shell option. The list of sshhoopptt options is: aassssoocc__eexxppaanndd__oonnccee - If set, the shell suppresses multiple evaluation of - associative array subscripts during arithmetic expres- - sion evaluation and while executing builtins that can + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expres- + sion evaluation and while executing builtins that can perform variable assignments. - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- + aauuttooccdd If set, a command name that is the name of a directory + is executed as if it were the argument to the ccdd com- mand. This option is only used by interactive shells. ccddaabbllee__vvaarrss - If set, an argument to the ccdd builtin command that is - not a directory is assumed to be the name of a variable + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable whose value is the directory to change to. ccddssppeellll If set, minor errors in the spelling of a directory com- - ponent in a ccdd command will be corrected. The errors + ponent in a ccdd command will be corrected. The errors checked for are transposed characters, a missing charac- - ter, and one character too many. If a correction is - found, the corrected filename is printed, and the com- - mand proceeds. This option is only used by interactive + ter, and one character too many. If a correction is + found, the corrected filename is printed, and the com- + mand proceeds. This option is only used by interactive shells. cchheecckkhhaasshh If set, bbaasshh checks that a command found in the hash ta- - ble exists before trying to execute it. If a hashed - command no longer exists, a normal path search is per- + ble exists before trying to execute it. If a hashed + command no longer exists, a normal path search is per- formed. cchheecckkjjoobbss If set, bbaasshh lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs + jobs before exiting an interactive shell. If any jobs are running, this causes the exit to be deferred until a - second exit is attempted without an intervening command - (see JJOOBB CCOONNTTRROOLL above). The shell always postpones + second exit is attempted without an intervening command + (see JJOOBB CCOONNTTRROOLL above). The shell always postpones exiting if any jobs are stopped. cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each external - (non-builtin) command and, if necessary, updates the + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the values of LLIINNEESS and CCOOLLUUMMNNSS. - ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- - line command in the same history entry. This allows - easy re-editing of multi-line commands. This option is - enabled by default, but only has an effect if command + ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- + line command in the same history entry. This allows + easy re-editing of multi-line commands. This option is + enabled by default, but only has an effect if command history is enabled, as described above under HHIISSTTOORRYY. ccoommppaatt3311 If set, bbaasshh changes its behavior to that of version 3.1 - with respect to quoted arguments to the [[[[ conditional + with respect to quoted arguments to the [[[[ conditional command's ==~~ operator and locale-specific string compar- - ison when using the [[[[ conditional command's << and >> - operators. Bash versions prior to bash-4.1 use ASCII + ison when using the [[[[ conditional command's << and >> + operators. Bash versions prior to bash-4.1 use ASCII collation and _s_t_r_c_m_p(3); bash-4.1 and later use the cur- rent locale's collation sequence and _s_t_r_c_o_l_l(3). ccoommppaatt3322 If set, bbaasshh changes its behavior to that of version 3.2 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see previous item) and the effect of interrupting a - command list. Bash versions 3.2 and earlier continue - with the next command in the list after one terminates + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see previous item) and the effect of interrupting a + command list. Bash versions 3.2 and earlier continue + with the next command in the list after one terminates due to an interrupt. ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see description of ccoommppaatt3311) and the effect of inter- - rupting a command list. Bash versions 4.0 and later - interrupt the list as if the shell received the inter- - rupt; previous versions continue with the next command + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command in the list. ccoommppaatt4411 - If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even num- - ber) and the characters between the single quotes are - considered quoted. This is the behavior of posix mode - through version 4.1. The default bash behavior remains + If set, bbaasshh, when in _p_o_s_i_x _m_o_d_e, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains as in previous versions. ccoommppaatt4422 - If set, bbaasshh does not process the replacement string in - the pattern substitution word expansion using quote + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote removal. ccoommppaatt4433 - If set, bbaasshh does not print a warning message if an - attempt is made to use a quoted compound array assign- - ment as an argument to ddeeccllaarree, makes word expansion - errors non-fatal errors that cause the current command - to fail (the default behavior is to make them fatal + If set, bbaasshh does not print a warning message if an + attempt is made to use a quoted compound array assign- + ment as an argument to ddeeccllaarree, makes word expansion + errors non-fatal errors that cause the current command + to fail (the default behavior is to make them fatal errors that cause the shell to exit), and does not reset - the loop state when a shell function is executed (this - allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect + the loop state when a shell function is executed (this + allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect loops in the caller's context). ccoommppaatt4444 - If set, bbaasshh saves the positional parameters to + If set, bbaasshh saves the positional parameters to BASH_ARGV and BASH_ARGC before they are used, regardless of whether or not extended debugging mode is enabled. ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that - expand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing buf- - fer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. The filenames ````..'''' - and ````....'''' must always be matched explicitly, even if + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set at shell invocation, arrange to execute the - debugger profile before the shell starts, identical to - the ----ddeebbuuggggeerr option. If set after invocation, behav- + If set at shell invocation, arrange to execute the + debugger profile before the shell starts, identical to + the ----ddeebbuuggggeerr option. If set after invocation, behav- ior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), the shell + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- parisons. That is, the current locale's collating - sequence is not taken into account, so bb will not col- - late between AA and BB, and upper-case and lower-case + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. iinnhheerriitt__eerrrreexxiitt - If set, command substitution inherits the value of the - eerrrreexxiitt option, instead of unsetting it in the subshell - environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This + and all remaining characters on that line to be ignored + in an interactive shell (see CCOOMMMMEENNTTSS above). This option is enabled by default. llaassttppiippee - If set, and job control is not active, the shell runs + If set, and job control is not active, the shell runs the last command of a pipeline not executed in the back- ground in the current shell environment. - lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line + lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. llooccaallvvaarr__iinnhheerriitt If set, local variables inherit the value and attributes of a variable of the same name that exists at a previous - scope before any new value is assigned. The nameref + scope before any new value is assigned. The nameref attribute is not inherited. llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be + The shell sets this option if it is started as a login + shell (see IINNVVOOCCAATTIIOONN above). The value may not be changed. mmaaiillwwaarrnn - If set, and a file that bbaasshh is checking for mail has - been accessed since the last time it was checked, the - message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- + If set, and a file that bbaasshh is checking for mail has + been accessed since the last time it was checked, the + message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- played. nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - If set, and rreeaaddlliinnee is being used, bbaasshh will not + If set, and rreeaaddlliinnee is being used, bbaasshh will not attempt to search the PPAATTHH for possible completions when completion is attempted on an empty line. nnooccaasseegglloobb - If set, bbaasshh matches filenames in a case-insensitive + If set, bbaasshh matches filenames in a case-insensitive fashion when performing pathname expansion (see PPaatthhnnaammee EExxppaannssiioonn above). nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive + If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or [[[[ conditional commands, when performing pattern substi- - tution word expansions, or when filtering possible com- + tution word expansions, or when filtering possible com- pletions as part of programmable completion. nnuullllgglloobb - If set, bbaasshh allows patterns which match no files (see - PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, + If set, bbaasshh allows patterns which match no files (see + PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, rather than themselves. pprrooggccoommpp If set, the programmable completion facilities (see PPrroo-- @@ -5724,50 +5753,50 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS enabled by default. pprroommppttvvaarrss If set, prompt strings undergo parameter expansion, com- - mand substitution, arithmetic expansion, and quote - removal after being expanded as described in PPRROOMMPPTTIINNGG + mand substitution, arithmetic expansion, and quote + removal after being expanded as described in PPRROOMMPPTTIINNGG above. This option is enabled by default. rreessttrriicctteedd__sshheellll - The shell sets this option if it is started in + The shell sets this option if it is started in restricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value - may not be changed. This is not reset when the startup - files are executed, allowing the startup files to dis- + may not be changed. This is not reset when the startup + files are executed, allowing the startup files to dis- cover whether or not a shell is restricted. sshhiifftt__vveerrbboossee - If set, the sshhiifftt builtin prints an error message when + If set, the sshhiifftt builtin prints an error message when the shift count exceeds the number of positional parame- ters. ssoouurrcceeppaatthh If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to - find the directory containing the file supplied as an + find the directory containing the file supplied as an argument. This option is enabled by default. xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape + If set, the eecchhoo builtin expands backslash-escape sequences by default. ssuussppeenndd [--ff] - Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT signal. A login shell cannot be suspended; the --ff option can be used to override this and force the suspension. The return sta- - tus is 0 unless the shell is a login shell and --ff is not sup- + tus is 0 unless the shell is a login shell and --ff is not sup- plied, or if job control is not enabled. tteesstt _e_x_p_r [[ _e_x_p_r ]] Return a status of 0 (true) or 1 (false) depending on the evalu- ation of the conditional expression _e_x_p_r. Each operator and op- - erand must be a separate argument. Expressions are composed of - the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. - tteesstt does not accept any options, nor does it accept and ignore + erand must be a separate argument. Expressions are composed of + the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. + tteesstt does not accept any options, nor does it accept and ignore an argument of ---- as signifying the end of options. - Expressions may be combined using the following operators, + Expressions may be combined using the following operators, listed in decreasing order of precedence. The evaluation - depends on the number of arguments; see below. Operator prece- + depends on the number of arguments; see below. Operator prece- dence is used when there are five or more arguments. !! _e_x_p_r True if _e_x_p_r is false. (( _e_x_p_r )) - Returns the value of _e_x_p_r. This may be used to override + Returns the value of _e_x_p_r. This may be used to override the normal precedence of operators. _e_x_p_r_1 -aa _e_x_p_r_2 True if both _e_x_p_r_1 and _e_x_p_r_2 are true. @@ -5784,120 +5813,120 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS null. 2 arguments If the first argument is !!, the expression is true if and - only if the second argument is null. If the first argu- - ment is one of the unary conditional operators listed - above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is + only if the second argument is null. If the first argu- + ment is one of the unary conditional operators listed + above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is true if the unary test is true. If the first argument is not a valid unary conditional operator, the expression is false. 3 arguments The following conditions are applied in the order listed. - If the second argument is one of the binary conditional + If the second argument is one of the binary conditional operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the result of the expression is the result of the binary test - using the first and third arguments as operands. The --aa - and --oo operators are considered binary operators when - there are three arguments. If the first argument is !!, - the value is the negation of the two-argument test using + using the first and third arguments as operands. The --aa + and --oo operators are considered binary operators when + there are three arguments. If the first argument is !!, + the value is the negation of the two-argument test using the second and third arguments. If the first argument is exactly (( and the third argument is exactly )), the result - is the one-argument test of the second argument. Other- + is the one-argument test of the second argument. Other- wise, the expression is false. 4 arguments If the first argument is !!, the result is the negation of - the three-argument expression composed of the remaining + the three-argument expression composed of the remaining arguments. Otherwise, the expression is parsed and eval- - uated according to precedence using the rules listed + uated according to precedence using the rules listed above. 5 or more arguments - The expression is parsed and evaluated according to + The expression is parsed and evaluated according to precedence using the rules listed above. - When used with tteesstt or [[, the << and >> operators sort lexico- + When used with tteesstt or [[, the << and >> operators sort lexico- graphically using ASCII ordering. - ttiimmeess Print the accumulated user and system times for the shell and + ttiimmeess Print the accumulated user and system times for the shell and for processes run from the shell. The return status is 0. ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...] - The command _a_r_g is to be read and executed when the shell - receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a - single _s_i_g_s_p_e_c) or --, each specified signal is reset to its - original disposition (the value it had upon entrance to the - shell). If _a_r_g is the null string the signal specified by each - _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. - If _a_r_g is not present and --pp has been supplied, then the trap - commands associated with each _s_i_g_s_p_e_c are displayed. If no - arguments are supplied or if only --pp is given, ttrraapp prints the - list of commands associated with each signal. The --ll option - causes the shell to print a list of signal names and their cor- - responding numbers. Each _s_i_g_s_p_e_c is either a signal name - defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are + The command _a_r_g is to be read and executed when the shell + receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a + single _s_i_g_s_p_e_c) or --, each specified signal is reset to its + original disposition (the value it had upon entrance to the + shell). If _a_r_g is the null string the signal specified by each + _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. + If _a_r_g is not present and --pp has been supplied, then the trap + commands associated with each _s_i_g_s_p_e_c are displayed. If no + arguments are supplied or if only --pp is given, ttrraapp prints the + list of commands associated with each signal. The --ll option + causes the shell to print a list of signal names and their cor- + responding numbers. Each _s_i_g_s_p_e_c is either a signal name + defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are case insensitive and the SSIIGG prefix is optional. - If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit - from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- - cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, - _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the - first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR - above). Refer to the description of the eexxttddeebbuugg option to the + If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit + from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- + cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, + _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the + first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR + above). Refer to the description of the eexxttddeebbuugg option to the sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell function or a script executed with the .. or ssoouurrccee builtins fin- ishes executing. - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to - the following conditions. The EERRRR trap is not executed if the + the following conditions. The EERRRR trap is not executed if the failed command is part of the command list immediately following - a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, + a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, part of a command executed in a &&&& or |||| list except the command - following the final &&&& or ||||, any command in a pipeline but the - last, or if the command's return value is being inverted using - !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) + following the final &&&& or ||||, any command in a pipeline but the + last, or if the command's return value is being inverted using + !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) option. - Signals ignored upon entry to the shell cannot be trapped or - reset. Trapped signals that are not being ignored are reset to + Signals ignored upon entry to the shell cannot be trapped or + reset. Trapped signals that are not being ignored are reset to their original values in a subshell or subshell environment when - one is created. The return status is false if any _s_i_g_s_p_e_c is + one is created. The return status is false if any _s_i_g_s_p_e_c is invalid; otherwise ttrraapp returns true. ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] - With no options, indicate how each _n_a_m_e would be interpreted if + With no options, indicate how each _n_a_m_e would be interpreted if used as a command name. If the --tt option is used, ttyyppee prints a - string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or - _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, - builtin, or disk file, respectively. If the _n_a_m_e is not found, - then nothing is printed, and an exit status of false is - returned. If the --pp option is used, ttyyppee either returns the + string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or + _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, + builtin, or disk file, respectively. If the _n_a_m_e is not found, + then nothing is printed, and an exit status of false is + returned. If the --pp option is used, ttyyppee either returns the name of the disk file that would be executed if _n_a_m_e were speci- fied as a command name, or nothing if ``type -t name'' would not - return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, + return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, even if ``type -t name'' would not return _f_i_l_e. If a command is hashed, --pp and --PP print the hashed value, which is not necessar- - ily the file that appears first in PPAATTHH. If the --aa option is - used, ttyyppee prints all of the places that contain an executable + ily the file that appears first in PPAATTHH. If the --aa option is + used, ttyyppee prints all of the places that contain an executable named _n_a_m_e. This includes aliases and functions, if and only if the --pp option is not also used. The table of hashed commands is - not consulted when using --aa. The --ff option suppresses shell + not consulted when using --aa. The --ff option suppresses shell function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true if all of the arguments are found, false if any are not found. uulliimmiitt [--HHSSaabbccddeeffiikkllmmnnppqqrrssttuuvvxxPPTT [_l_i_m_i_t]] - Provides control over the resources available to the shell and - to processes started by it, on systems that allow such control. + Provides control over the resources available to the shell and + to processes started by it, on systems that allow such control. The --HH and --SS options specify that the hard or soft limit is set - for the given resource. A hard limit cannot be increased by a - non-root user once it is set; a soft limit may be increased up - to the value of the hard limit. If neither --HH nor --SS is speci- + for the given resource. A hard limit cannot be increased by a + non-root user once it is set; a soft limit may be increased up + to the value of the hard limit. If neither --HH nor --SS is speci- fied, both the soft and hard limits are set. The value of _l_i_m_i_t can be a number in the unit specified for the resource or one of the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the - current hard limit, the current soft limit, and no limit, - respectively. If _l_i_m_i_t is omitted, the current value of the - soft limit of the resource is printed, unless the --HH option is + current hard limit, the current soft limit, and no limit, + respectively. If _l_i_m_i_t is omitted, the current value of the + soft limit of the resource is printed, unless the --HH option is given. When more than one resource is specified, the limit name and unit are printed before the value. Other options are inter- preted as follows: @@ -5906,12 +5935,12 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --cc The maximum size of core files created --dd The maximum size of a process's data segment --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its + --ff The maximum size of files written by the shell and its children --ii The maximum number of pending signals --kk The maximum number of kqueues that may be allocated --ll The maximum size that may be locked into memory - --mm The maximum resident set size (many systems do not honor + --mm The maximum resident set size (many systems do not honor this limit) --nn The maximum number of open file descriptors (most systems do not allow this value to be set) @@ -5920,53 +5949,53 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr The maximum real-time scheduling priority --ss The maximum stack size --tt The maximum amount of cpu time in seconds - --uu The maximum number of processes available to a single + --uu The maximum number of processes available to a single user - --vv The maximum amount of virtual memory available to the + --vv The maximum amount of virtual memory available to the shell and, on some systems, to its children --xx The maximum number of file locks --PP The maximum number of pseudoterminals --TT The maximum number of threads - If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the - new value of the specified resource. If no option is given, - then --ff is assumed. Values are in 1024-byte increments, except - for --tt, which is in seconds; --pp, which is in units of 512-byte - blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; - and, when in Posix mode, --cc and --ff, which are in 512-byte incre- + If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is given, + then --ff is assumed. Values are in 1024-byte increments, except + for --tt, which is in seconds; --pp, which is in units of 512-byte + blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; + and, when in posix mode, --cc and --ff, which are in 512-byte incre- ments. The return status is 0 unless an invalid option or argu- ment is supplied, or an error occurs while setting a new limit. uummaasskk [--pp] [--SS] [_m_o_d_e] The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with - a digit, it is interpreted as an octal number; otherwise it is - interpreted as a symbolic mode mask similar to that accepted by - _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is - printed. The --SS option causes the mask to be printed in sym- - bolic form; the default output is an octal number. If the --pp + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp option is supplied, and _m_o_d_e is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode - was successfully changed or if no _m_o_d_e argument was supplied, + was successfully changed or if no _m_o_d_e argument was supplied, and false otherwise. uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, all alias definitions are removed. The return value + Remove each _n_a_m_e from the list of defined aliases. If --aa is + supplied, all alias definitions are removed. The return value is true unless a supplied _n_a_m_e is not a defined alias. uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] - For each _n_a_m_e, remove the corresponding variable or function. + For each _n_a_m_e, remove the corresponding variable or function. If the --vv option is given, each _n_a_m_e refers to a shell variable, - and that variable is removed. Read-only variables may not be - unset. If --ff is specified, each _n_a_m_e refers to a shell func- - tion, and the function definition is removed. If the --nn option - is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, - _n_a_m_e will be unset rather than the variable it references. --nn - has no effect if the --ff option is supplied. If no options are - supplied, each _n_a_m_e refers to a variable; if there is no vari- - able by that name, any function with that name is unset. Each - unset variable or function is removed from the environment - passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e refers to a variable; if there is no vari- + able by that name, any function with that name is unset. Each + unset variable or function is removed from the environment + passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special properties, even if they are sub- sequently reset. The exit status is true unless a _n_a_m_e is read- @@ -5974,23 +6003,23 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS wwaaiitt [--ffnn] [_i_d _._._.] Wait for each specified child process and return its termination - status. Each _i_d may be a process ID or a job specification; if - a job spec is given, all processes in that job's pipeline are + status. Each _i_d may be a process ID or a job specification; if + a job spec is given, all processes in that job's pipeline are waited for. If _i_d is not given, all currently active child pro- cesses are waited for, and the return status is zero. If the --nn - option is supplied, wwaaiitt waits for any job to terminate and - returns its exit status. If the --ff option is supplied, and job + option is supplied, wwaaiitt waits for any job to terminate and + returns its exit status. If the --ff option is supplied, and job control is enabled, wwaaiitt forces _i_d to terminate before returning - its status, instead of returning when it changes status. If _i_d - specifies a non-existent process or job, the return status is - 127. Otherwise, the return status is the exit status of the + its status, instead of returning when it changes status. If _i_d + specifies a non-existent process or job, the return status is + 127. Otherwise, the return status is the exit status of the last process or job waited for. RREESSTTRRIICCTTEEDD SSHHEELLLL If bbaasshh is started with the name rrbbaasshh, or the --rr option is supplied at - invocation, the shell becomes restricted. A restricted shell is used - to set up an environment more controlled than the standard shell. It - behaves identically to bbaasshh with the exception that the following are + invocation, the shell becomes restricted. A restricted shell is used + to set up an environment more controlled than the standard shell. It + behaves identically to bbaasshh with the exception that the following are disallowed or not performed: +o changing directories with ccdd @@ -5999,16 +6028,16 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying command names containing // - +o specifying a filename containing a // as an argument to the .. + +o specifying a filename containing a // as an argument to the .. builtin command - +o specifying a filename containing a slash as an argument to the + +o specifying a filename containing a slash as an argument to the --pp option to the hhaasshh builtin command - +o importing function definitions from the shell environment at + +o importing function definitions from the shell environment at startup - +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at + +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at startup +o redirecting output using the >, >|, <>, >&, &>, and >> redirect- @@ -6017,10 +6046,10 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o using the eexxeecc builtin command to replace the shell with another command - +o adding or deleting builtin commands with the --ff and --dd options + +o adding or deleting builtin commands with the --ff and --dd options to the eennaabbllee builtin command - +o using the eennaabbllee builtin command to enable disabled shell + +o using the eennaabbllee builtin command to enable disabled shell builtins +o specifying the --pp option to the ccoommmmaanndd builtin command @@ -6030,14 +6059,14 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL These restrictions are enforced after any startup files are read. When a command that is found to be a shell script is executed (see CCOOMM-- - MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell + MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell spawned to execute the script. SSEEEE AALLSSOO _B_a_s_h _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, Brian Fox and Chet Ramey _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey - _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_: _S_h_e_l_l _a_n_d _U_t_i_l_i_- + _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_: _S_h_e_l_l _a_n_d _U_t_i_l_i_- _t_i_e_s, IEEE -- http://pubs.opengroup.org/onlinepubs/9699919799/ http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode @@ -6055,7 +6084,7 @@ FFIILLEESS _~_/_._b_a_s_h_r_c The individual per-interactive-shell startup file _~_/_._b_a_s_h___l_o_g_o_u_t - The individual login shell cleanup file, executed when a login + The individual login shell cleanup file, executed when a login shell exits _~_/_._i_n_p_u_t_r_c Individual _r_e_a_d_l_i_n_e initialization file @@ -6069,14 +6098,14 @@ AAUUTTHHOORRSS BBUUGG RREEPPOORRTTSS If you find a bug in bbaasshh,, you should report it. But first, you should - make sure that it really is a bug, and that it appears in the latest - version of bbaasshh. The latest version is always available from + make sure that it really is a bug, and that it appears in the latest + version of bbaasshh. The latest version is always available from _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/. - Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g - command to submit a bug report. If you have a fix, you are encouraged - to mail that as well! Suggestions and `philosophical' bug reports may - be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup + Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g + command to submit a bug report. If you have a fix, you are encouraged + to mail that as well! Suggestions and `philosophical' bug reports may + be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup ggnnuu..bbaasshh..bbuugg. ALL bug reports should include: @@ -6087,7 +6116,7 @@ BBUUGG RREEPPOORRTTSS A description of the bug behaviour A short script or `recipe' which exercises the bug - _b_a_s_h_b_u_g inserts the first three items automatically into the template + _b_a_s_h_b_u_g inserts the first three items automatically into the template it provides for filing a bug report. Comments and bug reports concerning this manual page should be directed @@ -6104,10 +6133,10 @@ BBUUGGSS Shell builtin commands and functions are not stoppable/restartable. Compound commands and command sequences of the form `a ; b ; c' are not - handled gracefully when process suspension is attempted. When a - process is stopped, the shell immediately executes the next command in - the sequence. It suffices to place the sequence of commands between - parentheses to force it into a subshell, which may be stopped as a + handled gracefully when process suspension is attempted. When a + process is stopped, the shell immediately executes the next command in + the sequence. It suffices to place the sequence of commands between + parentheses to force it into a subshell, which may be stopped as a unit. Array variables may not (yet) be exported. @@ -6116,4 +6145,4 @@ BBUUGGSS -GNU Bash 5.0 2018 March 15 BASH(1) +GNU Bash 5.0 2018 August 7 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index cf712fe34..9561ed87a 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -5,12 +5,12 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Thu Mar 15 11:30:03 EDT 2018 +.\" Last Change: Tue Aug 7 12:01:07 EDT 2018 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2018 March 15" "GNU Bash 5.0" +.TH BASH 1 "2018 August 7" "GNU Bash 5.0" .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. @@ -739,7 +739,7 @@ to be matched as a string. An additional binary operator, \fB=~\fP, is available, with the same precedence as \fB==\fP and \fB!=\fP. When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in \fIregex\fP(3)). +a POSIX extended regular expression and matched accordingly (as in \fIregex\fP(3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional @@ -1357,7 +1357,14 @@ If is null, the parameters are joined without intervening separators. .TP .B @ -Expands to the positional parameters, starting from one. When the +Expands to the positional parameters, starting from one. +In contexts where word splitting is performed, this expands each +positional parameter to a separate word; if not within double +quotes, these words are subject to word splitting. +In contexts where word splitting is not performed, +this expands to a single word +with each positional parameter separated by a space. +When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "\fB$@\fP" is equivalent to "\fB$1\fP" "\fB$2\fP" ... @@ -1499,7 +1506,8 @@ only when in extended debugging mode (see the description of the option to the .B shopt builtin below). -Setting \fBextdebug\fP after the shell has started to execute a script +Setting \fBextdebug\fP after the shell has started to execute a script, +or referencing this variable when \fBextdebug\fP is not set, may result in inconsistent values. .TP .B BASH_ARGV @@ -1519,7 +1527,8 @@ only when in extended debugging mode option to the .B shopt builtin below). -Setting \fBextdebug\fP after the shell has started to execute a script +Setting \fBextdebug\fP after the shell has started to execute a script, +or referencing this variable when \fBextdebug\fP is not set, may result in inconsistent values. .TP .B BASH_ARGV0 @@ -2072,7 +2081,7 @@ line editing. Similar to .SM .BR BASH_ENV ; -used when the shell is invoked in POSIX mode. +used when the shell is invoked in \fIposix mode\fP. .TP .B EXECIGNORE A colon-separated list of shell patterns (see \fBPattern Matching\fP) @@ -2277,6 +2286,11 @@ startup file, overriding the default of .B READLINE below). .TP +.B INSIDE_EMACS +If this variable appears in the environment when the shell starts, +\fBbash\fP assumes that it is running inside an Emacs shell buffer +and may disable line editing, depending on the value of \fBTERM\fP. +.TP .B LANG Used to determine the locale category for any category not specifically selected with a variable starting with \fBLC_\fP. @@ -2400,6 +2414,8 @@ running, \fBbash\fP enables \fIposix mode\fP, as if the command .if t \f(CWset -o posix\fP .if n \fIset -o posix\fP had been executed. +When the shell enters \fIposix mode\fP, it sets this variable if it was +not already set. .TP .B PROMPT_COMMAND If set, the value is executed as a command prior to issuing each primary @@ -2914,6 +2930,14 @@ and .SM .BR CDPATH , and the shell assigns the expanded value. +.PP +Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (as described above under +.SM +.BR PARAMETERS ) +when they appear as arguments to simple commands. +Bash does not do this, except for the \fIdeclaration\fP commands listed +above, when in \fIposix mode\fP. .SS Parameter Expansion .PP The `\fB$\fP' character introduces parameter expansion, @@ -2945,16 +2969,16 @@ The \fIparameter\fP is a shell parameter as described above .PP If the first character of \fIparameter\fP is an exclamation point (\fB!\fP), and \fIparameter\fP is not a \fInameref\fP, -it introduces a level of variable indirection. -\fBBash\fP uses the value of the variable formed from the rest of -\fIparameter\fP as the name of the variable; this variable is then -expanded and that value is used in the rest of the substitution, rather -than the value of \fIparameter\fP itself. +it introduces a level of indirection. +\fBBash\fP uses the value formed by expanding the rest of +\fIparameter\fP as the new \fIparameter\fP; this is then +expanded and that value is used in the rest of the expansion, rather +than the expansion of the original \fIparameter\fP. This is known as \fIindirect expansion\fP. The value is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. If \fIparameter\fP is a nameref, this expands to the name of the -variable referenced by \fIparameter\fP instead of performing the +parameter referenced by \fIparameter\fP instead of performing the complete indirect expansion. The exceptions to this are the expansions of ${\fB!\fP\fIprefix\fP\fB*\fP} and ${\fB!\fP\fIname\fP[\fI@\fP]} described below. @@ -4821,7 +4845,7 @@ subshell environment. Changes made to the subshell environment cannot affect the shell's execution environment. .PP Subshells spawned to execute command substitutions inherit the value of -the \fB\-e\fP option from the parent shell. When not in \fIposix\fP mode, +the \fB\-e\fP option from the parent shell. When not in \fIposix mode\fP, \fBbash\fP clears the \fB\-e\fP option in such subshells. .PP If a command is followed by a \fB&\fP and job control is not active, the @@ -7640,12 +7664,12 @@ will be displayed. The return value is true unless an invalid option is supplied, or no matches were generated. .TP -\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-DE\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] +\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-DEI\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] .br [\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname ...\fP] .PD 0 .TP -\fBcomplete\fP \fB\-pr\fP [\fB\-DE\fP] [\fIname\fP ...] +\fBcomplete\fP \fB\-pr\fP [\fB\-DEI\fP] [\fIname\fP ...] .PD Specify how arguments to each \fIname\fP should be completed. If the \fB\-p\fP option is supplied, or if no options are supplied, @@ -7654,12 +7678,21 @@ them to be reused as input. The \fB\-r\fP option removes a completion specification for each \fIname\fP, or, if no \fIname\fPs are supplied, all completion specifications. -The \fB\-D\fP option indicates that the remaining options and actions should +The \fB\-D\fP option indicates that other supplied options and actions should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The \fB\-E\fP option indicates that the remaining options and actions should +The \fB\-E\fP option indicates that other supplied options and actions should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The \fB\-I\fP option indicates that other supplied options and actions should +apply to completion on the inital non-assignment word on the line, or after +a command delimiter such as \fB;\fP or \fB|\fP, which is usually command +name completion. +If multiple options are supplied, the \fB\-D\fP option takes precedence +over \fB\-E\fP, and both take precedence over \fB\-I\fP. +If any of \fB\-D\fP, \fB\-E\fP, or \fB\-I\fP are supplied, any other +\fIname\fP arguments are ignored; these completions only apply to the case +specified by the option. .sp 1 The process of applying these completion specifications when word completion is attempted is described above under \fBProgrammable Completion\fP. @@ -7855,7 +7888,7 @@ a \fIname\fP for which no specification exists, or an error occurs adding a completion specification. .RE .TP -\fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DE\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP] +\fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DEI\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP] Modify completion options for each \fIname\fP according to the \fIoption\fPs, or for the currently-executing completion if no \fIname\fPs are supplied. @@ -7863,12 +7896,16 @@ If no \fIoption\fPs are given, display the completion options for each \fIname\fP or the current completion. The possible values of \fIoption\fP are those valid for the \fBcomplete\fP builtin described above. -The \fB\-D\fP option indicates that the remaining options should +The \fB\-D\fP option indicates that other supplied options should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The \fB\-E\fP option indicates that the remaining options should +The \fB\-E\fP option indicates that other supplied options should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The \fB\-I\fP option indicates that other supplied options should +apply to completion on the inital non-assignment word on the line, +or after a command delimiter such as \fB;\fP or \fB|\fP, which is usually +command name completion. .sp 1 The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a \fIname\fP for which no completion @@ -9271,7 +9308,7 @@ Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. -In \fIposix\fP mode, only shell variables are listed. +In \fIposix mode\fP, only shell variables are listed. The output is sorted according to the current locale. When options are specified, they set or unset shell attributes. Any arguments remaining after option processing are treated @@ -9817,7 +9854,7 @@ interrupt; previous versions continue with the next command in the list. .B compat41 If set, .BR bash , -when in \fIposix\fP mode, treats a single quote in a double-quoted +when in \fIposix mode\fP, treats a single quote in a double-quoted parameter expansion as a special character. The single quotes must match (an even number) and the characters between the single quotes are considered quoted. This is the behavior of posix mode through version 4.1. @@ -10589,7 +10626,7 @@ which is in units of 512-byte blocks; and .BR \-u , which are unscaled values; -and, when in Posix mode, +and, when in posix mode, .B \-c and .BR \-f , diff --git a/doc/bash.html b/doc/bash.html index 54b42fec7..08e1b4a43 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2018 March 15BASH(1) +BASH(1)2018 August 7BASH(1)

Index @@ -965,7 +965,7 @@ to be matched as a string. An additional binary operator, =~, is available, with the same precedence as == and !=. When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in regex(3)). +a POSIX extended regular expression and matched accordingly (as in regex(3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional @@ -1738,7 +1738,14 @@ is null, the parameters are joined without intervening separators.
@
-Expands to the positional parameters, starting from one. When the +Expands to the positional parameters, starting from one. +In contexts where word splitting is performed, this expands each +positional parameter to a separate word; if not within double +quotes, these words are subject to word splitting. +In contexts where word splitting is not performed, +this expands to a single word +with each positional parameter separated by a space. +When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$@" is equivalent to "$1" "$2" ... @@ -1922,7 +1929,8 @@ option to the shopt builtin below). -Setting extdebug after the shell has started to execute a script +Setting extdebug after the shell has started to execute a script, +or referencing this variable when extdebug is not set, may result in inconsistent values.
BASH_ARGV @@ -1947,7 +1955,8 @@ option to the shopt builtin below). -Setting extdebug after the shell has started to execute a script +Setting extdebug after the shell has started to execute a script, +or referencing this variable when extdebug is not set, may result in inconsistent values.
BASH_ARGV0 @@ -2634,7 +2643,7 @@ Similar to BASH_ENV; -used when the shell is invoked in POSIX mode. +used when the shell is invoked in posix mode.
EXECIGNORE
@@ -2887,6 +2896,12 @@ startup file, overriding the default of below). +
INSIDE_EMACS + +
+If this variable appears in the environment when the shell starts, +bash assumes that it is running inside an Emacs shell buffer +and may disable line editing, depending on the value of TERM.
LANG
@@ -3043,6 +3058,8 @@ running, bash enables posix mode, as if the command set -o posix had been executed. +When the shell enters posix mode, it sets this variable if it was +not already set.
PROMPT_COMMAND
@@ -3698,6 +3715,16 @@ and and the shell assigns the expanded value. +

+ +Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (as described above under +PARAMETERS) + + +when they appear as arguments to simple commands. +Bash does not do this, except for the declaration commands listed +above, when in posix mode.  

Parameter Expansion

@@ -3738,16 +3765,16 @@ The parameter is a shell parameter as described above If the first character of parameter is an exclamation point (!), and parameter is not a nameref, -it introduces a level of variable indirection. -Bash uses the value of the variable formed from the rest of -parameter as the name of the variable; this variable is then -expanded and that value is used in the rest of the substitution, rather -than the value of parameter itself. +it introduces a level of indirection. +Bash uses the value formed by expanding the rest of +parameter as the new parameter; this is then +expanded and that value is used in the rest of the expansion, rather +than the expansion of the original parameter. This is known as indirect expansion. The value is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. If parameter is a nameref, this expands to the name of the -variable referenced by parameter instead of performing the +parameter referenced by parameter instead of performing the complete indirect expansion. The exceptions to this are the expansions of ${!prefix*} and ${!name[@]} described below. @@ -6125,7 +6152,7 @@ cannot affect the shell's execution environment.

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

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

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

complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command]
+
complete [-abcdefgjksuv] [-o comp-option] [-DEI] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command]

[-X filterpat] [-P prefix] [-S suffix] name [name ...] -
complete -pr [-DE] [name ...]
+
complete -pr [-DEI] [name ...]
Specify how arguments to each name should be completed. If the -p option is supplied, or if no options are supplied, @@ -9759,12 +9786,21 @@ them to be reused as input. The -r option removes a completion specification for each name, or, if no names are supplied, all completion specifications. -The -D option indicates that the remaining options and actions should +The -D option indicates that other supplied options and actions should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The -E option indicates that the remaining options and actions should +The -E option indicates that other supplied options and actions should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The -I option indicates that other supplied options and actions should +apply to completion on the inital non-assignment word on the line, or after +a command delimiter such as ; or |, which is usually command +name completion. +If multiple options are supplied, the -D option takes precedence +over -E, and both take precedence over -I. +If any of -D, -E, or -I are supplied, any other +name arguments are ignored; these completions only apply to the case +specified by the option.

The process of applying these completion specifications when word completion is attempted is described above under Programmable Completion. @@ -9995,7 +10031,7 @@ a name for which no specification exists, or an error occurs adding a completion specification. -

compopt [-o option] [-DE] [+o option] [name]
+
compopt [-o option] [-DEI] [+o option] [name]
Modify completion options for each name according to the options, or for the currently-executing completion if no names are supplied. @@ -10003,12 +10039,16 @@ If no options are given, display the completion options for each name or the current completion. The possible values of option are those valid for the complete builtin described above. -The -D option indicates that the remaining options should +The -D option indicates that other supplied options should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The -E option indicates that the remaining options should +The -E option indicates that other supplied options should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The -I option indicates that other supplied options should +apply to completion on the inital non-assignment word on the line, +or after a command delimiter such as ; or |, which is usually +command name completion.

The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a name for which no completion @@ -11727,7 +11767,7 @@ Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. -In posix mode, only shell variables are listed. +In posix mode, only shell variables are listed. The output is sorted according to the current locale. When options are specified, they set or unset shell attributes. Any arguments remaining after option processing are treated @@ -12444,7 +12484,7 @@ interrupt; previous versions continue with the next command in the list. If set, bash, -when in posix mode, treats a single quote in a double-quoted +when in posix mode, treats a single quote in a double-quoted parameter expansion as a special character. The single quotes must match (an even number) and the characters between the single quotes are considered quoted. This is the behavior of posix mode through version 4.1. @@ -13426,7 +13466,7 @@ and -u, which are unscaled values; -and, when in Posix mode, +and, when in posix mode, -c and @@ -13852,7 +13892,7 @@ There may be only one active coprocess at a time.


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

@@ -13958,6 +13998,6 @@ There may be only one active coprocess at a time.
This document was created by man2html from bash.1.
-Time: 19 March 2018 09:43:32 EDT +Time: 07 September 2018 16:15:28 EDT diff --git a/doc/bash.info b/doc/bash.info index 9a4edb080..171e1a7f1 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -2,9 +2,9 @@ This is bash.info, produced by makeinfo version 6.5 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 5.0, 15 March 2018). +Bash shell (version 5.0, 7 August 2018). - This is Edition 5.0, last updated 15 March 2018, of 'The GNU Bash + This is Edition 5.0, last updated 7 August 2018, of 'The GNU Bash Reference Manual', for 'Bash', Version 5.0. Copyright (C) 1988-2018 Free Software Foundation, Inc. @@ -27,10 +27,10 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 5.0, 15 March 2018). The Bash home page is +Bash shell (version 5.0, 7 August 2018). The Bash home page is . - This is Edition 5.0, last updated 15 March 2018, of 'The GNU Bash + This is Edition 5.0, last updated 7 August 2018, of 'The GNU Bash Reference Manual', for 'Bash', Version 5.0. Bash contains features that appear in other popular shells, and some @@ -768,7 +768,9 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: 'case' The syntax of the 'case' command is: - case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac + case WORD in + [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... + esac 'case' will selectively execute the COMMAND-LIST corresponding to the first PATTERN that matches WORD. The match is performed @@ -883,30 +885,30 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: 'shopt' in *note The Shopt Builtin::) is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches ('==') or does not match - ('!=')the pattern, and 1 otherwise. Any part of the pattern may be - quoted to force the quoted portion to be matched as a string. + ('!=') the pattern, and 1 otherwise. Any part of the pattern may + be quoted to force the quoted portion to be matched as a string. An additional binary operator, '=~', is available, with the same precedence as '==' and '!='. When it is used, the string to the - right of the operator is considered an extended regular expression - and matched accordingly (as in regex3)). The return value is 0 if - the string matches the pattern, and 1 otherwise. If the regular - expression is syntactically incorrect, the conditional expression's - return value is 2. If the 'nocasematch' shell option (see the - description of 'shopt' in *note The Shopt Builtin::) is enabled, - the match is performed without regard to the case of alphabetic - characters. Any part of the pattern may be quoted to force the - quoted portion to be matched as a string. Bracket expressions in - regular expressions must be treated carefully, since normal quoting - characters lose their meanings between brackets. If the pattern is - stored in a shell variable, quoting the variable expansion forces - the entire pattern to be matched as a string. Substrings matched - by parenthesized subexpressions within the regular expression are - saved in the array variable 'BASH_REMATCH'. The element of - 'BASH_REMATCH' with index 0 is the portion of the string matching - the entire regular expression. The element of 'BASH_REMATCH' with - index N is the portion of the string matching the Nth parenthesized - subexpression. + right of the operator is considered a POSIX extended regular + expression and matched accordingly (as in regex3)). The return + value is 0 if the string matches the pattern, and 1 otherwise. If + the regular expression is syntactically incorrect, the conditional + expression's return value is 2. If the 'nocasematch' shell option + (see the description of 'shopt' in *note The Shopt Builtin::) is + enabled, the match is performed without regard to the case of + alphabetic characters. Any part of the pattern may be quoted to + force the quoted portion to be matched as a string. Bracket + expressions in regular expressions must be treated carefully, since + normal quoting characters lose their meanings between brackets. If + the pattern is stored in a shell variable, quoting the variable + expansion forces the entire pattern to be matched as a string. + Substrings matched by parenthesized subexpressions within the + regular expression are saved in the array variable 'BASH_REMATCH'. + The element of 'BASH_REMATCH' with index 0 is the portion of the + string matching the entire regular expression. The element of + 'BASH_REMATCH' with index N is the portion of the string matching + the Nth parenthesized subexpression. For example, the following will match a line (stored in the shell variable LINE) if there is a sequence of characters in the value @@ -1103,7 +1105,8 @@ read from a file (in this case, filenames listed one per line): done < file | process-output with a more compact syntax reminiscent of lambdas: - cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output + cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | + process-output Parallel provides a built-in mechanism to remove filename extensions, which lends itself to batch file transformations or renaming: @@ -1118,10 +1121,18 @@ take arguments from the command line; the above can also be written as If a command generates output, you may want to preserve the input order in the output. For instance, the following command - { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel traceroute will display as output the traceroute invocation that finishes first. Adding the '-k' option - { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel -k traceroute will ensure that the output of 'traceroute foss.org.my' is displayed first. @@ -1406,15 +1417,21 @@ only be referenced; assignment to them is not allowed. is null, the parameters are joined without intervening separators. '@' - ($@) Expands to the positional parameters, starting from one. When - the expansion occurs within double quotes, each parameter expands - to a separate word. That is, '"$@"' is equivalent to '"$1" "$2" - ...'. If the double-quoted expansion occurs within a word, the - expansion of the first parameter is joined with the beginning part - of the original word, and the expansion of the last parameter is - joined with the last part of the original word. When there are no - positional parameters, '"$@"' and '$@' expand to nothing (i.e., - they are removed). + ($@) Expands to the positional parameters, starting from one. In + contexts where word splitting is performed, this expands each + positional parameter to a separate word; if not within double + quotes, these words are subject to word splitting. In contexts + where word splitting is not performed, this expands to a single + word with each positional parameter separated by a space. When the + expansion occurs within double quotes, and word splitting is + performed, each parameter expands to a separate word. That is, + '"$@"' is equivalent to '"$1" "$2" ...'. If the double-quoted + expansion occurs within a word, the expansion of the first + parameter is joined with the beginning part of the original word, + and the expansion of the last parameter is joined with the last + part of the original word. When there are no positional + parameters, '"$@"' and '$@' expand to nothing (i.e., they are + removed). '#' ($#) Expands to the number of positional parameters in decimal. @@ -1628,6 +1645,11 @@ assigns the expanded value. '~-N' The string that would be displayed by 'dirs -N' + Bash also performs tilde expansion on words satisfying the conditions +of variable assignments (*note Shell Parameters::) when they appear as +arguments to simple commands. Bash does not do this, except for the +DECLARATION commands listed above, when in POSIX mode. +  File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions @@ -1653,18 +1675,17 @@ parameter with more than one digit, or when PARAMETER is followed by a character that is not to be interpreted as part of its name. If the first character of PARAMETER is an exclamation point (!), and -PARAMETER is not a NAMEREF, it introduces a level of variable -indirection. Bash uses the value of the variable formed from the rest -of PARAMETER as the name of the variable; this variable is then expanded -and that value is used in the rest of the substitution, rather than the -value of PARAMETER itself. This is known as 'indirect expansion'. The -value is subject to tilde expansion, parameter expansion, command -substitution, and arithmetic expansion. If PARAMETER is a nameref, this -expands to the name of the variable referenced by PARAMETER instead of -performing the complete indirect expansion. The exceptions to this are -the expansions of ${!PREFIX*} and ${!NAME[@]} described below. The -exclamation point must immediately follow the left brace in order to -introduce indirection. +PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash +uses the value formed by expanding the rest of PARAMETER as the new +PARAMETER; this is then expanded and that value is used in the rest of +the expansion, rather than the expansion of the original PARAMETER. +This is known as 'indirect expansion'. The value is subject to tilde +expansion, parameter expansion, command substitution, and arithmetic +expansion. If PARAMETER is a nameref, this expands to the name of the +variable referenced by PARAMETER instead of performing the complete +indirect expansion. The exceptions to this are the expansions of +${!PREFIX*} and ${!NAME[@]} described below. The exclamation point must +immediately follow the left brace in order to introduce indirection. In each of the cases below, WORD is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. @@ -3662,8 +3683,8 @@ standard. Exit a login shell, returning a status of N to the shell's parent. 'mapfile' - mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] - [-C CALLBACK] [-c QUANTUM] [ARRAY] + mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable ARRAY, or from file descriptor FD if the '-u' option is supplied. @@ -3846,8 +3867,8 @@ standard. Read input from file descriptor FD. 'readarray' - readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] - [-C CALLBACK] [-c QUANTUM] [ARRAY] + readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable ARRAY, or from file descriptor FD if the '-u' option is supplied. @@ -4826,7 +4847,8 @@ Variables::). onto 'BASH_ARGC'. The shell sets 'BASH_ARGC' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of the 'extdebug' option to the 'shopt' builtin). Setting 'extdebug' - after the shell has started to execute a script may result in + after the shell has started to execute a script, or referencing + this variable when 'extdebug' is not set, may result in inconsistent values. 'BASH_ARGV' @@ -4838,7 +4860,8 @@ Variables::). sets 'BASH_ARGV' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of the 'extdebug' option to the 'shopt' builtin). Setting 'extdebug' after the shell has - started to execute a script may result in inconsistent values. + started to execute a script, or referencing this variable when + 'extdebug' is not set, may result in inconsistent values. 'BASH_ARGV0' When referenced, this variable expands to the name of the shell or @@ -5228,7 +5251,7 @@ Variables::). as the sole input. If set, the value denotes the number of consecutive 'EOF' characters that can be read as the first character on an input line before the shell will exit. If the - variable exists but does not have a numeric value (or has no value) + variable exists but does not have a numeric value, or has no value, then the default is 10. If the variable does not exist, then 'EOF' signifies the end of input to the shell. This is only in effect for interactive shells. @@ -5237,6 +5260,12 @@ Variables::). The name of the Readline initialization file, overriding the default of '~/.inputrc'. +'INSIDE_EMACS' + If Bash finds this variable in the environment when the shell + starts, it assumes that the shell is running in an Emacs shell + buffer and may disable line editing depending on the value of + 'TERM'. + 'LANG' Used to determine the locale category for any category not specifically selected with a variable starting with 'LC_'. @@ -5317,7 +5346,8 @@ Variables::). supplied. If it is set while the shell is running, Bash enables POSIX mode, as if the command set -o posix - had been executed. + had been executed. When the shell enters POSIX mode, it sets this + variable if it was not already set. 'PPID' The process ID of the shell's parent process. This variable is @@ -5484,9 +5514,12 @@ File: bash.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Feat 6.1 Invoking Bash ================= - bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] - bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] - bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] + bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] + bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] + bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] All of the single-character options used with the 'set' builtin (*note The Set Builtin::) can be used as options when the shell is @@ -5832,8 +5865,8 @@ several ways. 9. In the absence of any traps, Bash ignores 'SIGTERM' (*note Signals::). - 10. In the absence of any traps, 'SIGINT' is caught and handled - ((*note Signals::). 'SIGINT' will interrupt some shell builtins. + 10. In the absence of any traps, 'SIGINT' is caught and handled (*note + Signals::). 'SIGINT' will interrupt some shell builtins. 11. An interactive login shell sends a 'SIGHUP' to all jobs on exit if the 'huponexit' shell option has been enabled (*note Signals::). @@ -6453,7 +6486,8 @@ of commands executed during the current shell session. After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject -to the value of the 'promptvars' shell option (*note Bash Builtins::). +to the value of the 'promptvars' shell option (*note The Shopt +Builtin::).  File: bash.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features @@ -6511,212 +6545,214 @@ startup files. The following list is what's changed when 'POSIX mode' is in effect: - 1. When a command in the hash table no longer exists, Bash will + 1. Bash ensures that the 'POSIXLY_CORRECT' variable is set. + + 2. When a command in the hash table no longer exists, Bash will re-search '$PATH' to find the new location. This is also available with 'shopt -s checkhash'. - 2. The message printed by the job control code and builtins when a job + 3. The message printed by the job control code and builtins when a job exits with a non-zero status is 'Done(status)'. - 3. The message printed by the job control code and builtins when a job + 4. The message printed by the job control code and builtins when a job is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, 'SIGTSTP'. - 4. Alias expansion is always enabled, even in non-interactive shells. + 5. Alias expansion is always enabled, even in non-interactive shells. - 5. Reserved words appearing in a context where reserved words are + 6. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + 7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number and '!!' to '!' are enabled, and parameter expansion is performed on the values of 'PS1' and 'PS2' regardless of the setting of the 'promptvars' option. - 7. The POSIX startup files are executed ('$ENV') rather than the + 8. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. - 8. Tilde expansion is only performed on assignments preceding a + 9. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 9. The default history file is '~/.sh_history' (this is the default + 10. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 10. Redirection operators do not perform filename expansion on the + 11. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 11. Redirection operators do not perform word splitting on the word in + 12. Redirection operators do not perform word splitting on the word in the redirection. - 12. Function names must be valid shell 'name's. That is, they may not + 13. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 13. Function names may not be the same as one of the POSIX special + 14. Function names may not be the same as one of the POSIX special builtins. - 14. POSIX special builtins are found before shell functions during + 15. POSIX special builtins are found before shell functions during command lookup. - 15. When printing shell function definitions (e.g., by 'type'), Bash + 16. When printing shell function definitions (e.g., by 'type'), Bash does not print the 'function' keyword. - 16. Literal tildes that appear as the first character in elements of + 17. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 17. The 'time' reserved word may be used by itself as a command. When + 18. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 18. When parsing and expanding a ${...} expansion that appears within + 19. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 19. The parser does not recognize 'time' as a reserved word if the + 20. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 20. The '!' character does not introduce history expansion within a + 21. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 21. If a POSIX special builtin returns an error status, a + 22. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 22. A non-interactive shell exits with an error status if a variable + 23. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 23. A non-interactive shell exits with an error status if a variable + 24. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 24. A non-interactive shell exits with an error status if the + 25. A non-interactive shell exits with an error status if the iteration variable in a 'for' statement or the selection variable in a 'select' statement is a readonly variable. - 25. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 26. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 26. Non-interactive shells exit if a syntax error in an arithmetic + 27. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 27. Non-interactive shells exit if a parameter expansion error occurs. + 28. Non-interactive shells exit if a parameter expansion error occurs. - 28. Non-interactive shells exit if there is a syntax error in a script + 29. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 29. Process substitution is not available. + 30. Process substitution is not available. - 30. While variable indirection is available, it may not be applied to + 31. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 31. When expanding the '*' special parameter in a pattern context + 32. When expanding the '*' special parameter in a pattern context where the expansion is double-quoted does not treat the '$*' as if it were double-quoted. - 32. Assignment statements preceding POSIX special builtins persist in + 33. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 33. Assignment statements preceding shell function calls persist in + 34. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 34. The 'command' builtin does not prevent builtins that take + 35. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 35. The 'bg' builtin uses the required format to describe each job + 36. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 36. The output of 'kill -l' prints all the signal names on a single + 37. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 37. The 'kill' builtin does not accept signal names with a 'SIG' + 38. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 38. The 'export' and 'readonly' builtin commands display their output + 39. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 39. The 'trap' builtin displays signal names without the leading + 40. The 'trap' builtin displays signal names without the leading 'SIG'. - 40. The 'trap' builtin doesn't check the first argument for a possible + 41. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 41. The '.' and 'source' builtins do not search the current directory + 42. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 42. Enabling POSIX mode has the effect of setting the + 43. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 43. When the 'alias' builtin displays alias definitions, it does not + 44. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 44. When the 'set' builtin is invoked without options, it does not + 45. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 45. When the 'set' builtin is invoked without options, it displays + 46. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 47. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 47. The 'pwd' builtin verifies that the value it prints is the same as + 48. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the '-P' option. - 48. When listing the history, the 'fc' builtin does not include an + 49. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 49. The default editor used by 'fc' is 'ed'. + 50. The default editor used by 'fc' is 'ed'. - 50. The 'type' and 'command' builtins will not report a non-executable + 51. The 'type' and 'command' builtins will not report a non-executable file as having been found, though the shell will attempt to execute such a file if it is the only so-named file found in '$PATH'. - 51. The 'vi' editing mode will invoke the 'vi' editor directly when + 52. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 52. When the 'xpg_echo' option is enabled, Bash does not attempt to + 53. When the 'xpg_echo' option is enabled, Bash does not attempt to interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 53. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 54. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 55. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 55. The 'read' builtin may be interrupted by a signal for which a trap + 56. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 56. Bash removes an exited background process's status from the list + 57. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default @@ -7374,7 +7410,7 @@ Variable Settings If set to 'on', and COMPLETION-IGNORE-CASE is enabled, Readline treats hyphens ('-') and underscores ('_') as equivalent when performing case-insensitive filename matching - and completion. + and completion. The default value is 'off'. 'completion-prefix-display-length' The length in characters of the common prefix of a list of @@ -7650,7 +7686,7 @@ Key Bindings Meta-Rubout: backward-kill-word Control-o: "> output" - In the above example, 'C-u' is bound to the function + In the example above, 'C-u' is bound to the function 'universal-argument', 'M-DEL' is bound to the function 'backward-kill-word', and 'C-o' is bound to run the macro expressed on the right hand side (that is, to insert the text @@ -8141,7 +8177,7 @@ File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: C assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters are inserted as if each one - was bound to 'self-insert') instead of executing any editing + was bound to 'self-insert' instead of executing any editing commands. 'transpose-chars (C-t)' @@ -8737,26 +8773,34 @@ happening. no matches were generated. 'complete' - complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST] - [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] + complete [-abcdefgjksuv] [-o COMP-OPTION] [-DEI] [-A ACTION] [-G GLOBPAT] + [-W WORDLIST] [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] [-P PREFIX] [-S SUFFIX] NAME [NAME ...] - complete -pr [-DE] [NAME ...] + complete -pr [-DEI] [NAME ...] Specify how arguments to each NAME should be completed. If the '-p' option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. The '-r' option removes a completion specification for each NAME, or, if no NAMEs are supplied, all - completion specifications. The '-D' option indicates that the - remaining options and actions should apply to the "default" command + completion specifications. The '-D' option indicates that other + supplied options and actions should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The '-E' option indicates - that the remaining options and actions should apply to "empty" + that other supplied options and actions should apply to "empty" command completion; that is, completion attempted on a blank line. + The '-I' option indicates that other supplied options and actions + should apply to completion on the inital non-assignment word on the + line, or after a command delimiter such as ';' or '|', which is + usually command name completion. If multiple options are supplied, + the '-D' option takes precedence over '-E', and both take + precedence over '-I'. If any of '-D', '-E', or '-I' are supplied, + any other NAME arguments are ignored; these completions only apply + to the case specified by the option. The process of applying these completion specifications when word completion is attempted is described above (*note Programmable - Completion::). The '-D' option takes precedence over '-E'. + Completion::). Other options, if specified, have the following meanings. The arguments to the '-G', '-W', and '-X' options (and, if necessary, @@ -8783,7 +8827,7 @@ happening. 'filenames' Tell Readline that the compspec generates filenames, so it can perform any filename-specific processing (like - adding a slash to directory names quoting special + adding a slash to directory names, quoting special characters, or suppressing trailing spaces). This option is intended to be used with shell functions specified with '-F'. @@ -8936,20 +8980,24 @@ happening. completion specification. 'compopt' - compopt [-o OPTION] [-DE] [+o OPTION] [NAME] + compopt [-o OPTION] [-DEI] [+o OPTION] [NAME] Modify completion options for each NAME according to the OPTIONs, or for the currently-executing completion if no NAMEs are supplied. If no OPTIONs are given, display the completion options for each NAME or the current completion. The possible values of OPTION are those valid for the 'complete' builtin described above. The '-D' - option indicates that the remaining options should apply to the + option indicates that other supplied options should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The - '-E' option indicates that the remaining options should apply to + '-E' option indicates that other supplied options should apply to "empty" command completion; that is, completion attempted on a - blank line. + blank line. The '-I' option indicates that other supplied options + should apply to completion on the inital non-assignment word on the + line, or after a command delimiter such as ';' or '|', which is + usually command name completion. - The '-D' option takes precedence over '-E'. + If multiple options are supplied, the '-D' option takes precedence + over '-E', and both take precedence over '-I' The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a NAME for which no @@ -8993,7 +9041,7 @@ retrieves the completions from there when the function returns. local cur _skipdot _cdpath local i j k - # Tilde expansion, with side effect of expanding tilde to full pathname + # Tilde expansion, which also expands tilde to full pathname case "$2" in \~*) eval cur="$2" ;; *) cur=$2 ;; @@ -9263,7 +9311,8 @@ previous commands quickly. History expansion is performed immediately after a complete line is read, before the shell breaks it into words, and is performed on each -line individually without taking quoting on previous lines into account. +line individually. Bash attempts to inform the history expansion +functions about quoting still in effect from previous lines. History expansion takes place in two parts. The first is to determine which line from the history list should be used during @@ -9274,10 +9323,20 @@ are called "words". Various "modifiers" are available to manipulate the selected words. The line is broken into words in the same fashion that Bash does, so that several words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the -history expansion character, which is '!' by default. Only '\' and ''' -may be used to escape the history expansion character, but the history -expansion character is also treated as quoted if it immediately precedes -the closing double quote in a double-quoted string. +history expansion character, which is '!' by default. + + History expansion implements shell-like quoting conventions: a +backslash can be used to remove the special handling for the next +character; single quotes enclose verbatim sequences of characters, and +can be used to inhibit history expansion; and characters enclosed within +double quotes may be subject to history expansion, since backslash can +escape the history expansion character, but single quotes may not, since +they are not treated specially within double quotes. + + When using the shell, only '\' and ''' may be used to escape the +history expansion character, but the history expansion character is also +treated as quoted if it immediately precedes the closing double quote in +a double-quoted string. Several shell options settable with the 'shopt' builtin (*note The Shopt Builtin::) may be used to tailor the behavior of history @@ -9760,8 +9819,8 @@ and linked, rather than changing run-time features. '--enable-largefile' Enable support for large files - (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if - the operating system requires special compiler options to build + (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the + operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support. @@ -10881,7 +10940,7 @@ D.1 Index of Shell Builtin Commands * complete: Programmable Completion Builtins. (line 30) * compopt: Programmable Completion Builtins. - (line 229) + (line 237) * continue: Bourne Shell Builtins. (line 85) * declare: Bash Builtins. (line 148) @@ -10966,9 +11025,9 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 122) + (line 124) * ]]: Conditional Constructs. - (line 122) + (line 124) * {: Command Grouping. (line 21) * }: Command Grouping. (line 21) * case: Conditional Constructs. @@ -10990,7 +11049,7 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 80) + (line 82) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) @@ -11006,24 +11065,24 @@ D.3 Parameter and Variable Index [index] * Menu: -* !: Special Parameters. (line 50) -* #: Special Parameters. (line 33) -* $: Special Parameters. (line 45) -* $!: Special Parameters. (line 51) -* $#: Special Parameters. (line 34) -* $$: Special Parameters. (line 46) +* !: Special Parameters. (line 56) +* #: Special Parameters. (line 39) +* $: Special Parameters. (line 51) +* $!: Special Parameters. (line 57) +* $#: Special Parameters. (line 40) +* $$: Special Parameters. (line 52) * $*: Special Parameters. (line 10) -* $-: Special Parameters. (line 41) -* $0: Special Parameters. (line 56) -* $?: Special Parameters. (line 37) +* $-: Special Parameters. (line 47) +* $0: Special Parameters. (line 62) +* $?: Special Parameters. (line 43) * $@: Special Parameters. (line 23) -* $_: Special Parameters. (line 65) +* $_: Special Parameters. (line 71) * *: Special Parameters. (line 9) -* -: Special Parameters. (line 40) -* 0: Special Parameters. (line 55) -* ?: Special Parameters. (line 36) +* -: Special Parameters. (line 46) +* 0: Special Parameters. (line 61) +* ?: Special Parameters. (line 42) * @: Special Parameters. (line 22) -* _: Special Parameters. (line 64) +* _: Special Parameters. (line 70) * auto_resume: Job Control Variables. (line 6) * BASH: Bash Variables. (line 13) @@ -11031,21 +11090,21 @@ D.3 Parameter and Variable Index * BASHPID: Bash Variables. (line 25) * BASH_ALIASES: Bash Variables. (line 32) * BASH_ARGC: Bash Variables. (line 41) -* BASH_ARGV: Bash Variables. (line 53) -* BASH_ARGV0: Bash Variables. (line 64) -* BASH_CMDS: Bash Variables. (line 72) -* BASH_COMMAND: Bash Variables. (line 81) -* BASH_COMPAT: Bash Variables. (line 86) -* BASH_ENV: Bash Variables. (line 101) -* BASH_EXECUTION_STRING: Bash Variables. (line 107) -* BASH_LINENO: Bash Variables. (line 110) -* BASH_LOADABLES_PATH: Bash Variables. (line 118) -* BASH_REMATCH: Bash Variables. (line 122) -* BASH_SOURCE: Bash Variables. (line 130) -* BASH_SUBSHELL: Bash Variables. (line 137) -* BASH_VERSINFO: Bash Variables. (line 142) -* BASH_VERSION: Bash Variables. (line 165) -* BASH_XTRACEFD: Bash Variables. (line 168) +* BASH_ARGV: Bash Variables. (line 54) +* BASH_ARGV0: Bash Variables. (line 66) +* BASH_CMDS: Bash Variables. (line 74) +* BASH_COMMAND: Bash Variables. (line 83) +* BASH_COMPAT: Bash Variables. (line 88) +* BASH_ENV: Bash Variables. (line 103) +* BASH_EXECUTION_STRING: Bash Variables. (line 109) +* BASH_LINENO: Bash Variables. (line 112) +* BASH_LOADABLES_PATH: Bash Variables. (line 120) +* BASH_REMATCH: Bash Variables. (line 124) +* BASH_SOURCE: Bash Variables. (line 132) +* BASH_SUBSHELL: Bash Variables. (line 139) +* BASH_VERSINFO: Bash Variables. (line 144) +* BASH_VERSION: Bash Variables. (line 167) +* BASH_XTRACEFD: Bash Variables. (line 170) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. @@ -11054,12 +11113,12 @@ D.3 Parameter and Variable Index (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 179) +* CHILD_MAX: Bash Variables. (line 181) * colored-completion-prefix: Readline Init File Syntax. (line 55) * colored-stats: Readline Init File Syntax. (line 62) -* COLUMNS: Bash Variables. (line 186) +* COLUMNS: Bash Variables. (line 188) * comment-begin: Readline Init File Syntax. (line 68) * completion-display-width: Readline Init File Syntax. @@ -11072,90 +11131,91 @@ D.3 Parameter and Variable Index (line 91) * completion-query-items: Readline Init File Syntax. (line 98) -* COMPREPLY: Bash Variables. (line 238) -* COMP_CWORD: Bash Variables. (line 192) -* COMP_KEY: Bash Variables. (line 221) -* COMP_LINE: Bash Variables. (line 198) -* COMP_POINT: Bash Variables. (line 203) -* COMP_TYPE: Bash Variables. (line 211) -* COMP_WORDBREAKS: Bash Variables. (line 225) -* COMP_WORDS: Bash Variables. (line 231) +* COMPREPLY: Bash Variables. (line 240) +* COMP_CWORD: Bash Variables. (line 194) +* COMP_KEY: Bash Variables. (line 223) +* COMP_LINE: Bash Variables. (line 200) +* COMP_POINT: Bash Variables. (line 205) +* COMP_TYPE: Bash Variables. (line 213) +* COMP_WORDBREAKS: Bash Variables. (line 227) +* COMP_WORDS: Bash Variables. (line 233) * convert-meta: Readline Init File Syntax. (line 108) -* COPROC: Bash Variables. (line 244) -* DIRSTACK: Bash Variables. (line 248) +* COPROC: Bash Variables. (line 246) +* DIRSTACK: Bash Variables. (line 250) * disable-completion: Readline Init File Syntax. (line 116) * echo-control-characters: Readline Init File Syntax. (line 121) * editing-mode: Readline Init File Syntax. (line 126) -* EMACS: Bash Variables. (line 258) +* EMACS: Bash Variables. (line 260) * emacs-mode-string: Readline Init File Syntax. (line 132) * enable-bracketed-paste: Readline Init File Syntax. (line 142) * enable-keypad: Readline Init File Syntax. (line 150) -* ENV: Bash Variables. (line 263) -* EPOCHREALTIME: Bash Variables. (line 267) -* EPOCHSECONDS: Bash Variables. (line 275) -* EUID: Bash Variables. (line 282) -* EXECIGNORE: Bash Variables. (line 286) +* ENV: Bash Variables. (line 265) +* EPOCHREALTIME: Bash Variables. (line 269) +* EPOCHSECONDS: Bash Variables. (line 277) +* EUID: Bash Variables. (line 284) +* EXECIGNORE: Bash Variables. (line 288) * expand-tilde: Readline Init File Syntax. (line 161) -* FCEDIT: Bash Variables. (line 299) -* FIGNORE: Bash Variables. (line 303) -* FUNCNAME: Bash Variables. (line 309) -* FUNCNEST: Bash Variables. (line 326) -* GLOBIGNORE: Bash Variables. (line 331) -* GROUPS: Bash Variables. (line 338) -* histchars: Bash Variables. (line 344) -* HISTCMD: Bash Variables. (line 359) -* HISTCONTROL: Bash Variables. (line 364) -* HISTFILE: Bash Variables. (line 380) -* HISTFILESIZE: Bash Variables. (line 384) -* HISTIGNORE: Bash Variables. (line 395) +* FCEDIT: Bash Variables. (line 301) +* FIGNORE: Bash Variables. (line 305) +* FUNCNAME: Bash Variables. (line 311) +* FUNCNEST: Bash Variables. (line 328) +* GLOBIGNORE: Bash Variables. (line 333) +* GROUPS: Bash Variables. (line 340) +* histchars: Bash Variables. (line 346) +* HISTCMD: Bash Variables. (line 361) +* HISTCONTROL: Bash Variables. (line 366) +* HISTFILE: Bash Variables. (line 382) +* HISTFILESIZE: Bash Variables. (line 386) +* HISTIGNORE: Bash Variables. (line 397) * history-preserve-point: Readline Init File Syntax. (line 165) * history-size: Readline Init File Syntax. (line 171) -* HISTSIZE: Bash Variables. (line 415) -* HISTTIMEFORMAT: Bash Variables. (line 422) +* HISTSIZE: Bash Variables. (line 417) +* HISTTIMEFORMAT: Bash Variables. (line 424) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. (line 180) -* HOSTFILE: Bash Variables. (line 430) -* HOSTNAME: Bash Variables. (line 441) -* HOSTTYPE: Bash Variables. (line 444) +* HOSTFILE: Bash Variables. (line 432) +* HOSTNAME: Bash Variables. (line 443) +* HOSTTYPE: Bash Variables. (line 446) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 447) +* IGNOREEOF: Bash Variables. (line 449) * input-meta: Readline Init File Syntax. (line 187) -* INPUTRC: Bash Variables. (line 457) +* INPUTRC: Bash Variables. (line 459) +* INSIDE_EMACS: Bash Variables. (line 463) * isearch-terminators: Readline Init File Syntax. (line 195) * keymap: Readline Init File Syntax. (line 202) -* LANG: Bash Variables. (line 461) -* LC_ALL: Bash Variables. (line 465) -* LC_COLLATE: Bash Variables. (line 469) -* LC_CTYPE: Bash Variables. (line 476) +* LANG: Bash Variables. (line 469) +* LC_ALL: Bash Variables. (line 473) +* LC_COLLATE: Bash Variables. (line 477) +* LC_CTYPE: Bash Variables. (line 484) * LC_MESSAGES: Locale Translation. (line 11) -* LC_MESSAGES <1>: Bash Variables. (line 481) -* LC_NUMERIC: Bash Variables. (line 485) -* LC_TIME: Bash Variables. (line 489) -* LINENO: Bash Variables. (line 493) -* LINES: Bash Variables. (line 497) -* MACHTYPE: Bash Variables. (line 503) +* LC_MESSAGES <1>: Bash Variables. (line 489) +* LC_NUMERIC: Bash Variables. (line 493) +* LC_TIME: Bash Variables. (line 497) +* LINENO: Bash Variables. (line 501) +* LINES: Bash Variables. (line 505) +* MACHTYPE: Bash Variables. (line 511) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 507) +* MAILCHECK: Bash Variables. (line 515) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 515) +* MAPFILE: Bash Variables. (line 523) * mark-modified-lines: Readline Init File Syntax. (line 232) * mark-symlinked-directories: Readline Init File Syntax. @@ -11166,42 +11226,42 @@ D.3 Parameter and Variable Index (line 249) * meta-flag: Readline Init File Syntax. (line 187) -* OLDPWD: Bash Variables. (line 519) +* OLDPWD: Bash Variables. (line 527) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 522) +* OPTERR: Bash Variables. (line 530) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 526) +* OSTYPE: Bash Variables. (line 534) * output-meta: Readline Init File Syntax. (line 254) * page-completions: Readline Init File Syntax. (line 260) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 529) -* POSIXLY_CORRECT: Bash Variables. (line 534) -* PPID: Bash Variables. (line 543) -* PROMPT_COMMAND: Bash Variables. (line 547) -* PROMPT_DIRTRIM: Bash Variables. (line 551) -* PS0: Bash Variables. (line 557) +* PIPESTATUS: Bash Variables. (line 537) +* POSIXLY_CORRECT: Bash Variables. (line 542) +* PPID: Bash Variables. (line 552) +* PROMPT_COMMAND: Bash Variables. (line 556) +* PROMPT_DIRTRIM: Bash Variables. (line 560) +* PS0: Bash Variables. (line 566) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 562) -* PS4: Bash Variables. (line 567) -* PWD: Bash Variables. (line 575) -* RANDOM: Bash Variables. (line 578) -* READLINE_LINE: Bash Variables. (line 583) -* READLINE_POINT: Bash Variables. (line 587) -* REPLY: Bash Variables. (line 591) +* PS3: Bash Variables. (line 571) +* PS4: Bash Variables. (line 576) +* PWD: Bash Variables. (line 584) +* RANDOM: Bash Variables. (line 587) +* READLINE_LINE: Bash Variables. (line 592) +* READLINE_POINT: Bash Variables. (line 596) +* REPLY: Bash Variables. (line 600) * revert-all-at-newline: Readline Init File Syntax. (line 270) -* SECONDS: Bash Variables. (line 594) -* SHELL: Bash Variables. (line 600) -* SHELLOPTS: Bash Variables. (line 605) -* SHLVL: Bash Variables. (line 614) +* SECONDS: Bash Variables. (line 603) +* SHELL: Bash Variables. (line 609) +* SHELLOPTS: Bash Variables. (line 614) +* SHLVL: Bash Variables. (line 623) * show-all-if-ambiguous: Readline Init File Syntax. (line 276) * show-all-if-unmodified: Readline Init File Syntax. @@ -11212,10 +11272,10 @@ D.3 Parameter and Variable Index (line 297) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 619) -* TMOUT: Bash Variables. (line 657) -* TMPDIR: Bash Variables. (line 669) -* UID: Bash Variables. (line 673) +* TIMEFORMAT: Bash Variables. (line 628) +* TMOUT: Bash Variables. (line 666) +* TMPDIR: Bash Variables. (line 678) +* UID: Bash Variables. (line 682) * vi-cmd-mode-string: Readline Init File Syntax. (line 310) * vi-ins-mode-string: Readline Init File Syntax. @@ -11512,7 +11572,7 @@ D.5 Concept Index * installation: Basic Installation. (line 6) * interaction, readline: Readline Interaction. (line 6) -* interactive shell: Invoking Bash. (line 128) +* interactive shell: Invoking Bash. (line 131) * interactive shell <1>: Interactive Shells. (line 6) * internationalization: Locale Translation. (line 6) * job: Definitions. (line 38) @@ -11523,7 +11583,7 @@ D.5 Concept Index * killing text: Readline Killing Commands. (line 6) * localization: Locale Translation. (line 6) -* login shell: Invoking Bash. (line 125) +* login shell: Invoking Bash. (line 128) * matching, pattern: Pattern Matching. (line 6) * metacharacter: Definitions. (line 46) * name: Definitions. (line 51) @@ -11606,112 +11666,112 @@ Node: Lists23781 Node: Compound Commands25520 Node: Looping Constructs26532 Node: Conditional Constructs29027 -Node: Command Grouping40082 -Node: Coprocesses41561 -Node: GNU Parallel43464 -Node: Shell Functions47438 -Node: Shell Parameters54521 -Node: Positional Parameters58934 -Node: Special Parameters59834 -Node: Shell Expansions63171 -Node: Brace Expansion65294 -Node: Tilde Expansion68018 -Node: Shell Parameter Expansion70366 -Node: Command Substitution84849 -Node: Arithmetic Expansion86204 -Node: Process Substitution87136 -Node: Word Splitting88256 -Node: Filename Expansion90200 -Node: Pattern Matching92730 -Node: Quote Removal96716 -Node: Redirections97011 -Node: Executing Commands106569 -Node: Simple Command Expansion107239 -Node: Command Search and Execution109169 -Node: Command Execution Environment111545 -Node: Environment114529 -Node: Exit Status116188 -Node: Signals117858 -Node: Shell Scripts119825 -Node: Shell Builtin Commands122340 -Node: Bourne Shell Builtins124378 -Node: Bash Builtins145036 -Node: Modifying Shell Behavior173944 -Node: The Set Builtin174289 -Node: The Shopt Builtin184702 -Node: Special Builtins201572 -Node: Shell Variables202551 -Node: Bourne Shell Variables202988 -Node: Bash Variables205092 -Node: Bash Features235106 -Node: Invoking Bash236005 -Node: Bash Startup Files241991 -Node: Interactive Shells247094 -Node: What is an Interactive Shell?247504 -Node: Is this Shell Interactive?248153 -Node: Interactive Shell Behavior248968 -Node: Bash Conditional Expressions252456 -Node: Shell Arithmetic256822 -Node: Aliases259639 -Node: Arrays262187 -Node: The Directory Stack267553 -Node: Directory Stack Builtins268337 -Node: Controlling the Prompt271305 -Node: The Restricted Shell274067 -Node: Bash POSIX Mode275892 -Node: Job Control286243 -Node: Job Control Basics286703 -Node: Job Control Builtins291671 -Node: Job Control Variables296398 -Node: Command Line Editing297554 -Node: Introduction and Notation299225 -Node: Readline Interaction300848 -Node: Readline Bare Essentials302039 -Node: Readline Movement Commands303822 -Node: Readline Killing Commands304782 -Node: Readline Arguments306700 -Node: Searching307744 -Node: Readline Init File309930 -Node: Readline Init File Syntax311077 -Node: Conditional Init Constructs331448 -Node: Sample Init File335644 -Node: Bindable Readline Commands338761 -Node: Commands For Moving339965 -Node: Commands For History341814 -Node: Commands For Text346109 -Node: Commands For Killing349498 -Node: Numeric Arguments351979 -Node: Commands For Completion353118 -Node: Keyboard Macros357309 -Node: Miscellaneous Commands357996 -Node: Readline vi Mode363949 -Node: Programmable Completion364856 -Node: Programmable Completion Builtins372450 -Node: A Programmable Completion Example382336 -Node: Using History Interactively387587 -Node: Bash History Facilities388271 -Node: Bash History Builtins391276 -Node: History Interaction395807 -Node: Event Designators398874 -Node: Word Designators400093 -Node: Modifiers401730 -Node: Installing Bash403132 -Node: Basic Installation404269 -Node: Compilers and Options407527 -Node: Compiling For Multiple Architectures408268 -Node: Installation Names409961 -Node: Specifying the System Type410779 -Node: Sharing Defaults411495 -Node: Operation Controls412168 -Node: Optional Features413126 -Node: Reporting Bugs423652 -Node: Major Differences From The Bourne Shell424846 -Node: GNU Free Documentation License441698 -Node: Indexes466875 -Node: Builtin Index467329 -Node: Reserved Word Index474156 -Node: Variable Index476604 -Node: Function Index492282 -Node: Concept Index505585 +Node: Command Grouping40110 +Node: Coprocesses41589 +Node: GNU Parallel43492 +Node: Shell Functions47550 +Node: Shell Parameters54633 +Node: Positional Parameters59046 +Node: Special Parameters59946 +Node: Shell Expansions63660 +Node: Brace Expansion65783 +Node: Tilde Expansion68507 +Node: Shell Parameter Expansion71124 +Node: Command Substitution85580 +Node: Arithmetic Expansion86935 +Node: Process Substitution87867 +Node: Word Splitting88987 +Node: Filename Expansion90931 +Node: Pattern Matching93461 +Node: Quote Removal97447 +Node: Redirections97742 +Node: Executing Commands107300 +Node: Simple Command Expansion107970 +Node: Command Search and Execution109900 +Node: Command Execution Environment112276 +Node: Environment115260 +Node: Exit Status116919 +Node: Signals118589 +Node: Shell Scripts120556 +Node: Shell Builtin Commands123071 +Node: Bourne Shell Builtins125109 +Node: Bash Builtins145767 +Node: Modifying Shell Behavior174675 +Node: The Set Builtin175020 +Node: The Shopt Builtin185433 +Node: Special Builtins202303 +Node: Shell Variables203282 +Node: Bourne Shell Variables203719 +Node: Bash Variables205823 +Node: Bash Features236283 +Node: Invoking Bash237182 +Node: Bash Startup Files243195 +Node: Interactive Shells248298 +Node: What is an Interactive Shell?248708 +Node: Is this Shell Interactive?249357 +Node: Interactive Shell Behavior250172 +Node: Bash Conditional Expressions253659 +Node: Shell Arithmetic258025 +Node: Aliases260842 +Node: Arrays263390 +Node: The Directory Stack268756 +Node: Directory Stack Builtins269540 +Node: Controlling the Prompt272508 +Node: The Restricted Shell275274 +Node: Bash POSIX Mode277099 +Node: Job Control287514 +Node: Job Control Basics287974 +Node: Job Control Builtins292942 +Node: Job Control Variables297669 +Node: Command Line Editing298825 +Node: Introduction and Notation300496 +Node: Readline Interaction302119 +Node: Readline Bare Essentials303310 +Node: Readline Movement Commands305093 +Node: Readline Killing Commands306053 +Node: Readline Arguments307971 +Node: Searching309015 +Node: Readline Init File311201 +Node: Readline Init File Syntax312348 +Node: Conditional Init Constructs332748 +Node: Sample Init File336944 +Node: Bindable Readline Commands340061 +Node: Commands For Moving341265 +Node: Commands For History343114 +Node: Commands For Text347409 +Node: Commands For Killing350797 +Node: Numeric Arguments353278 +Node: Commands For Completion354417 +Node: Keyboard Macros358608 +Node: Miscellaneous Commands359295 +Node: Readline vi Mode365248 +Node: Programmable Completion366155 +Node: Programmable Completion Builtins373749 +Node: A Programmable Completion Example384442 +Node: Using History Interactively389682 +Node: Bash History Facilities390366 +Node: Bash History Builtins393371 +Node: History Interaction397902 +Node: Event Designators401522 +Node: Word Designators402741 +Node: Modifiers404378 +Node: Installing Bash405780 +Node: Basic Installation406917 +Node: Compilers and Options410175 +Node: Compiling For Multiple Architectures410916 +Node: Installation Names412609 +Node: Specifying the System Type413427 +Node: Sharing Defaults414143 +Node: Operation Controls414816 +Node: Optional Features415774 +Node: Reporting Bugs426292 +Node: Major Differences From The Bourne Shell427486 +Node: GNU Free Documentation License444338 +Node: Indexes469515 +Node: Builtin Index469969 +Node: Reserved Word Index476796 +Node: Variable Index479244 +Node: Function Index494995 +Node: Concept Index508298  End Tag Table diff --git a/doc/bash.pdf b/doc/bash.pdf index de5d31297..b38b46d1c 100644 Binary files a/doc/bash.pdf and b/doc/bash.pdf differ diff --git a/doc/bash.ps b/doc/bash.ps index deccb7a74..5a7dc2d8a 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Mon Mar 19 09:43:22 2018 +%%CreationDate: Fri Sep 7 15:34:15 2018 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%+ font Symbol %%DocumentSuppliedResources: procset grops 1.22 3 -%%Pages: 80 +%%Pages: 81 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -340,7 +340,7 @@ F .475(xtended deb)-.15 F(ug-)-.2 E (~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti) 144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E (TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(1)198.45 E 0 Cg EP +(2018 August 7)145.395 E(1)199.555 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -462,8 +462,8 @@ F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035 Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25 G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 (un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15 -F(ariable)-.25 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(2)198.45 E -0 Cg EP +F(ariable)-.25 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(2)199.555 +E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -598,7 +598,7 @@ F .389(wed by)-.25 F F2(blank)2.889 E F0 .389(-separated w)B .389 -.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 722.4 Q (gument zero.)-.18 E(The remaining w)5 E(ords are passed as ar)-.1 E (guments to the in)-.18 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dc).1 G(ommand.) --2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(3)198.45 E 0 Cg EP +-2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(3)199.555 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -714,8 +714,8 @@ E -.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G (returns a non-zero e)2.935 F .435(xit status.)-.15 F .434 (The return status of AND)5.434 F(and OR lists is the e)108 705.6 Q (xit status of the last command e)-.15 E -.15(xe)-.15 G -(cuted in the list.).15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(4)198.45 E 0 Cg EP +(cuted in the list.).15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E +(4)199.555 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -802,9 +802,9 @@ to force the quoted portion to be matched as a string.)-2.5 E .243 (An additional binary operator)144 481.2 R(,)-.4 E F1(=~)2.743 E F0 2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243 (ilable, with the same precedence as).25 F F1(==)2.743 E F0(and)2.743 E -F1(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F 1.953 -(used, the string to the right of the operator is considered an e)144 -493.2 R 1.953(xtended re)-.15 F 1.953(gular e)-.15 F 1.953 +F1(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F .182 +(used, the string to the right of the operator is considered a POSIX e) +144 493.2 R .182(xtended re)-.15 F .181(gular e)-.15 F .181 (xpression and)-.15 F .207(matched accordingly \(as in)144 505.2 R F2 -.37(re)2.707 G -.1(ge)-.03 G(x)-.1 E F0 2.707(\(3\)\). The)B .207 (return v)2.707 F .207 @@ -844,8 +844,8 @@ F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049 2.5 E F0 .523(Returns the v)180 685.2 R .522(alue of)-.25 F F2 -.2(ex) 3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522(his may be used to o) -5.522 F -.15(ve)-.15 G .522(rride the normal precedence of).15 F -(operators.)180 697.2 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(5) -198.45 E 0 Cg EP +(operators.)180 697.2 Q(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(5) +199.555 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -993,8 +993,8 @@ F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 -.15 F .103(xit sta-)-.15 F(tus of the last command e)144 688.8 Q -.15 (xe)-.15 G(cuted, or zero if no condition tested true.).15 E F1(while) 108 705.6 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1 -(done)2.5 E F0(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(6)198.45 E 0 -Cg EP +(done)2.5 E F0(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(6)199.555 E +0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -1128,7 +1128,7 @@ F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951 (omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108 698.4 Q .3 -.15(ve s)-.25 H(hells.).15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(7)198.45 E 0 Cg EP +(2018 August 7)145.395 E(7)199.555 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -1233,7 +1233,7 @@ ngle-quoted, as if the dollar sign had not been present.)-.15 E 2.64(Ad) 108 720 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F F4($)A F0(")A F2(string)A F0 .14 ("\) will cause the string to be translated according)B(GNU Bash 5.0)72 -768 Q(2018 March 15)144.29 E(8)198.45 E 0 Cg EP +768 Q(2018 August 7)145.395 E(8)199.555 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP @@ -1384,7 +1384,7 @@ F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144 (ke).2 G .444(d, and may be reassigned using).1 F(the)108 722.4 Q F1 (set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional\ parameters may not be assigned to with assignment statements.)5.833 F -(The)5.834 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(9)198.45 E 0 +(The)5.834 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(9)199.555 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup @@ -1422,2272 +1422,2298 @@ F2($1)A/F3 10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0(",)A .833(is unset, the parameters are)3.082 F(separated by spaces.)144 237.6 Q(If)5 E F1(IFS)2.5 E F0 (is null, the parameters are joined without interv)2.25 E -(ening separators.)-.15 E F2(@)108 249.6 Q F0 .606 +(ening separators.)-.15 E F2(@)108 249.6 Q F0 .722 (Expands to the positional parameters, starting from one.)144 249.6 R -.605(When the e)5.605 F .605(xpansion occurs within dou-)-.15 F .113 -(ble quotes, each parameter e)144 261.6 R .113(xpands to a separate w) --.15 F 2.614(ord. That)-.1 F .114(is, ")2.614 F F2($@)A F0 2.614("i)C -2.614(se)-2.614 G(qui)-2.614 E -.25(va)-.25 G .114(lent to ").25 F F2 -($1)A F0 2.614("")C F2($2)-2.614 E F0 2.614(".)C(..)-2.614 E .135 -(If the double-quoted e)144 273.6 R .135(xpansion occurs within a w)-.15 -F .135(ord, the e)-.1 F .134 -(xpansion of the \214rst parameter is joined)-.15 F .15(with the be)144 -285.6 R .15(ginning part of the original w)-.15 F .151(ord, and the e) --.1 F .151(xpansion of the last parameter is joined with)-.15 F .338 -(the last part of the original w)144 297.6 R 2.838(ord. When)-.1 F .337 -(there are no positional parameters, ")2.838 F F2($@)A F0 2.837("a)C(nd) --2.837 E F2($@)2.837 E F0 -.15(ex)2.837 G(pand).15 E -(to nothing \(i.e., the)144 309.6 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15 -(ve)-.15 G(d\).).15 E F2(#)108 321.6 Q F0 -(Expands to the number of positional parameters in decimal.)144 321.6 Q -F2(?)108 333.6 Q F0(Expands to the e)144 333.6 Q +.722(In conte)5.722 F .722(xts where w)-.15 F .722(ord splitting is per) +-.1 F(-)-.2 E 1.165(formed, this e)144 261.6 R 1.165 +(xpands each positional parameter to a separate w)-.15 F 1.165 +(ord; if not within double quotes,)-.1 F .655(these w)144 273.6 R .655 +(ords are subject to w)-.1 F .655(ord splitting.)-.1 F .655(In conte) +5.655 F .655(xts where w)-.15 F .654 +(ord splitting is not performed, this)-.1 F -.15(ex)144 285.6 S .748 +(pands to a single w).15 F .748 +(ord with each positional parameter separated by a space.)-.1 F .748 +(When the e)5.748 F(xpan-)-.15 E 1.091 +(sion occurs within double quotes, each parameter e)144 297.6 R 1.091 +(xpands to a separate w)-.15 F 3.59(ord. That)-.1 F 1.09(is, ")3.59 F F2 +($@)A F0 3.59("i)C(s)-3.59 E(equi)144 309.6 Q -.25(va)-.25 G .412 +(lent to ").25 F F2($1)A F0 2.912("")C F2($2)-2.912 E F0 2.912(".)C +2.912(.. If)-2.912 F .413(the double-quoted e)2.913 F .413 +(xpansion occurs within a w)-.15 F .413(ord, the e)-.1 F .413 +(xpansion of)-.15 F .38(the \214rst parameter is joined with the be)144 +321.6 R .379(ginning part of the original w)-.15 F .379(ord, and the e) +-.1 F .379(xpansion of the)-.15 F 1.774 +(last parameter is joined with the last part of the original w)144 333.6 +R 4.274(ord. When)-.1 F 1.774(there are no positional)4.274 F +(parameters, ")144 345.6 Q F2($@)A F0 2.5("a)C(nd)-2.5 E F2($@)2.5 E F0 +-.15(ex)2.5 G(pand to nothing \(i.e., the).15 E 2.5(ya)-.15 G(re remo) +-2.5 E -.15(ve)-.15 G(d\).).15 E F2(#)108 357.6 Q F0 +(Expands to the number of positional parameters in decimal.)144 357.6 Q +F2(?)108 369.6 Q F0(Expands to the e)144 369.6 Q (xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15 -E(ground pipeline.)-.15 E F2108 345.6 Q F0 .881 -(Expands to the current option \215ags as speci\214ed upon in)144 345.6 -R -.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.382 E F0 -.2(bu)3.382 G -.882(iltin command, or).2 F(those set by the shell itself \(such as the) -144 357.6 Q F22.5 E F0(option\).)2.5 E F2($)108 369.6 Q F0 .214 -(Expands to the process ID of the shell.)144 369.6 R .214 +E(ground pipeline.)-.15 E F2108 381.6 Q F0 .882 +(Expands to the current option \215ags as speci\214ed upon in)144 381.6 +R -.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.381 E F0 -.2(bu)3.381 G +.881(iltin command, or).2 F(those set by the shell itself \(such as the) +144 393.6 Q F22.5 E F0(option\).)2.5 E F2($)108 405.6 Q F0 .214 +(Expands to the process ID of the shell.)144 405.6 R .214 (In a \(\) subshell, it e)5.214 F .214 (xpands to the process ID of the current)-.15 F -(shell, not the subshell.)144 381.6 Q F2(!)108 393.6 Q F0 .499(Expands \ +(shell, not the subshell.)144 417.6 Q F2(!)108 429.6 Q F0 .499(Expands \ to the process ID of the job most recently placed into the background, \ -whether e)144 393.6 R -.15(xe)-.15 G(cuted).15 E -(as an asynchronous command or using the)144 405.6 Q F2(bg)2.5 E F0 -.2 +whether e)144 429.6 R -.15(xe)-.15 G(cuted).15 E +(as an asynchronous command or using the)144 441.6 Q F2(bg)2.5 E F0 -.2 (bu)2.5 G(iltin \(see).2 E F1(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E -(w\).)-.25 E F2(0)108 417.6 Q F0 1.692 -(Expands to the name of the shell or shell script.)144 417.6 R 1.691 -(This is set at shell initialization.)6.692 F(If)6.691 E F2(bash)4.191 E -F0(is)4.191 E(in)144 429.6 Q -.2(vo)-.4 G -.1(ke).2 G 3.077(dw).1 G .577 -(ith a \214le of commands,)-3.077 F F2($0)3.077 E F0 .578 -(is set to the name of that \214le.)3.077 F(If)5.578 E F2(bash)3.078 E -F0 .578(is started with the)3.078 F F23.078 E F0 .369 -(option, then)144 441.6 R F2($0)2.869 E F0 .369 +(w\).)-.25 E F2(0)108 453.6 Q F0 1.691 +(Expands to the name of the shell or shell script.)144 453.6 R 1.692 +(This is set at shell initialization.)6.692 F(If)6.692 E F2(bash)4.192 E +F0(is)4.192 E(in)144 465.6 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 +(ith a \214le of commands,)-3.078 F F2($0)3.078 E F0 .578 +(is set to the name of that \214le.)3.078 F(If)5.577 E F2(bash)3.077 E +F0 .577(is started with the)3.077 F F23.077 E F0 .368 +(option, then)144 477.6 R F2($0)2.869 E F0 .369 (is set to the \214rst ar)2.869 F .369(gument after the string to be e) --.18 F -.15(xe)-.15 G .369(cuted, if one is present.).15 F(Other)5.368 E -(-)-.2 E(wise, it is set to the \214lename used to in)144 453.6 Q -.2 +-.18 F -.15(xe)-.15 G .369(cuted, if one is present.).15 F(Other)5.369 E +(-)-.2 E(wise, it is set to the \214lename used to in)144 489.6 Q -.2 (vo)-.4 G -.1(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25 (iv e)-2.5 H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E -F2(_)108 465.6 Q F0 .054 -(At shell startup, set to the absolute pathname used to in)144 465.6 R --.2(vo)-.4 G .255 -.1(ke t).2 H .055(he shell or shell script being e).1 -F -.15(xe)-.15 G(cuted).15 E .692(as passed in the en)144 477.6 R .692 +F2(_)108 501.6 Q F0 .055 +(At shell startup, set to the absolute pathname used to in)144 501.6 R +-.2(vo)-.4 G .255 -.1(ke t).2 H .054(he shell or shell script being e).1 +F -.15(xe)-.15 G(cuted).15 E .691(as passed in the en)144 513.6 R .691 (vironment or ar)-.4 F .691(gument list.)-.18 F(Subsequently)5.691 E -3.191(,e)-.65 G .691(xpands to the last ar)-3.341 F .691(gument to the) --.18 F(pre)144 489.6 Q .57(vious command, after e)-.25 F 3.07 +3.191(,e)-.65 G .692(xpands to the last ar)-3.341 F .692(gument to the) +-.18 F(pre)144 525.6 Q .571(vious command, after e)-.25 F 3.071 (xpansion. Also)-.15 F .571(set to the full pathname used to in)3.071 F --.2(vo)-.4 G .771 -.1(ke e).2 H .571(ach command).1 F -.15(exe)144 501.6 -S 1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 +-.2(vo)-.4 G .77 -.1(ke e).2 H .57(ach command).1 F -.15(exe)144 537.6 S +1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 (xported to that command.)-.15 F 1.6(When checking mail, this)6.6 F (parameter holds the name of the mail \214le currently being check)144 -513.6 Q(ed.)-.1 E F2(Shell V)87 530.4 Q(ariables)-.92 E F0(The follo)108 -542.4 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) -108 559.2 S(SH).3 E F0(Expands to the full \214lename used to in)144 -559.2 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E -F0(.)A F2 -.3(BA)108 571.2 S(SHOPTS).3 E F0 2.548(Ac)144 583.2 S .049 -(olon-separated list of enabled shell options.)-2.548 F .049(Each w) +549.6 Q(ed.)-.1 E F2(Shell V)87 566.4 Q(ariables)-.92 E F0(The follo)108 +578.4 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) +108 595.2 S(SH).3 E F0(Expands to the full \214lename used to in)144 +595.2 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E +F0(.)A F2 -.3(BA)108 607.2 S(SHOPTS).3 E F0 2.549(Ac)144 619.2 S .049 +(olon-separated list of enabled shell options.)-2.549 F .049(Each w) 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F22.549 E F0 1.398(option to the)144 595.2 +(gument for the)-.18 F F22.548 E F0 1.398(option to the)144 631.2 R F2(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F1 1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo) -3.648 E 3.898(w\). The)-.25 F(options)3.898 E .476(appearing in)144 -607.2 R F1 -.27(BA)2.976 G(SHOPTS).27 E F0 .476(are those reported as) -2.726 F F3(on)3.206 E F0(by)3.217 E F2(shopt)2.977 E F0 5.477(.I)C 2.977 -(ft)-5.477 G .477(his v)-2.977 F .477(ariable is in the en)-.25 F -(vironment)-.4 E(when)144 619.2 Q F2(bash)3.142 E F0 .642(starts up, ea\ -ch shell option in the list will be enabled before reading an)3.142 F -3.141(ys)-.15 G .641(tartup \214les.)-3.141 F(This v)144 631.2 Q -(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 643.2 S(SHPID).3 E -F0 .187(Expands to the process ID of the current)144 655.2 R F2(bash) -2.687 E F0 2.688(process. This)2.688 F(dif)2.688 E .188(fers from)-.25 F -F2($$)2.688 E F0 .188(under certain circum-)2.688 F .548 -(stances, such as subshells that do not require)144 667.2 R F2(bash) -3.048 E F0 .548(to be re-initialized.)3.048 F .548(Assignments to)5.548 -F F1 -.27(BA)3.048 G(SHPID).27 E F0(ha)144 679.2 Q .3 -.15(ve n)-.2 H +3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144 +643.2 R F1 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as) +2.727 F F3(on)3.207 E F0(by)3.217 E F2(shopt)2.977 E F0 5.476(.I)C 2.976 +(ft)-5.476 G .476(his v)-2.976 F .476(ariable is in the en)-.25 F +(vironment)-.4 E(when)144 655.2 Q F2(bash)3.141 E F0 .642(starts up, ea\ +ch shell option in the list will be enabled before reading an)3.141 F +3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 667.2 Q +(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 679.2 S(SHPID).3 E +F0 .188(Expands to the process ID of the current)144 691.2 R F2(bash) +2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F +F2($$)2.687 E F0 .187(under certain circum-)2.687 F .548 +(stances, such as subshells that do not require)144 703.2 R F2(bash) +3.048 E F0 .548(to be re-initialized.)3.048 F .549(Assignments to)5.549 +F F1 -.27(BA)3.049 G(SHPID).27 E F0(ha)144 715.2 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F2 -.3(BA)2.5 G(SHPID).3 E F0(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F2 -.3(BA)108 691.2 S(SH_ALIASES).3 E F0 1.195(An associati)144 -703.2 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose m\ -embers correspond to the internal list of aliases as main-)-.25 F .16 -(tained by the)144 715.2 R F2(alias)2.66 E F0 -.2(bu)2.66 G 2.66 -(iltin. Elements).2 F .16 -(added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 -(ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 -(array elements currently does not cause aliases to be remo)144 727.2 R --.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) -9.503 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(10)193.45 E 0 Cg EP +-2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(10)194.555 E 0 Cg +EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.3(BA)144 84 S(SH_ALIASES).3 E F0 +SF -.3(BA)108 84 S(SH_ALIASES).3 E F0 1.195(An associati)144 96 R 1.495 +-.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose members corresp\ +ond to the internal list of aliases as main-)-.25 F .16(tained by the) +144 108 R F1(alias)2.66 E F0 -.2(bu)2.66 G 2.66(iltin. Elements).2 F .16 +(added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 +(ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 +(array elements currently does not cause aliases to be remo)144 120 R +-.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) +9.502 E F1 -.3(BA)144 132 S(SH_ALIASES).3 E F0 (is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1 -.3(BA)108 96 S(SH_ARGC).3 E F0 .935(An array v)144 108 R .935 -(ariable whose v)-.25 F .934 +-2.5 E F1 -.3(BA)108 144 S(SH_ARGC).3 E F0 .934(An array v)144 156 R +.934(ariable whose v)-.25 F .934 (alues are the number of parameters in each frame of the current)-.25 F -F1(bash)3.434 E F0 -.15(exe)144 120 S .535(cution call stack.).15 F .535 +F1(bash)3.435 E F0 -.15(exe)144 168 S .535(cution call stack.).15 F .535 (The number of parameters to the current subroutine \(shell function or\ - script)5.535 F -.15(exe)144 132 S .142(cuted with).15 F F1(.)2.642 E F0 -(or)2.642 E F1(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa)-2.642 G -2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141 -(When a subroutine is e)5.141 F -.15(xe)-.15 G .141 -(cuted, the number of).15 F 2.63(parameters passed is pushed onto)144 -144 R/F2 9/Times-Bold@0 SF -.27(BA)5.13 G(SH_ARGC).27 E/F3 9 -/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F2 -.27(BA)5.131 G -(SH_ARGC).27 E F0 2.631(only when in)4.881 F -.15(ex)144 156 S .284 -(tended deb).15 F .284(ugging mode \(see the description of the)-.2 F F1 -(extdeb)2.784 E(ug)-.2 E F0 .283(option to the)2.783 F F1(shopt)2.783 E -F0 -.2(bu)2.783 G .283(iltin belo).2 F(w\).)-.25 E(Setting)144 168 Q F1 -(extdeb)2.5 E(ug)-.2 E F0(after the shell has started to e)2.5 E -.15 -(xe)-.15 G(cute a script may result in inconsistent v).15 E(alues.)-.25 -E F1 -.3(BA)108 180 S(SH_ARGV).3 E F0 .979(An array v)144 192 R .979 + script)5.535 F -.15(exe)144 180 S .141(cuted with).15 F F1(.)2.641 E F0 +(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa)-2.641 G +2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142 +(When a subroutine is e)5.142 F -.15(xe)-.15 G .142 +(cuted, the number of).15 F 2.631(parameters passed is pushed onto)144 +192 R/F2 9/Times-Bold@0 SF -.27(BA)5.13 G(SH_ARGC).27 E/F3 9 +/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F2 -.27(BA)5.13 G +(SH_ARGC).27 E F0 2.63(only when in)4.88 F -.15(ex)144 204 S .283 +(tended deb).15 F .283(ugging mode \(see the description of the)-.2 F F1 +(extdeb)2.784 E(ug)-.2 E F0 .284(option to the)2.784 F F1(shopt)2.784 E +F0 -.2(bu)2.784 G .284(iltin belo).2 F(w\).)-.25 E(Setting)144 216 Q F1 +(extdeb)3.363 E(ug)-.2 E F0 .863(after the shell has started to e)3.363 +F -.15(xe)-.15 G .862(cute a script, or referencing this v).15 F .862 +(ariable when)-.25 F F1(extdeb)144 228 Q(ug)-.2 E F0 +(is not set, may result in inconsistent v)2.5 E(alues.)-.25 E F1 -.3(BA) +108 240 S(SH_ARGV).3 E F0 .979(An array v)144 252 R .979 (ariable containing all of the parameters in the current)-.25 F F1(bash) 3.48 E F0 -.15(exe)3.48 G .98(cution call stack.).15 F(The)5.98 E .275(\ \214nal parameter of the last subroutine call is at the top of the stac\ -k; the \214rst parameter of the initial)144 204 R 1.424 -(call is at the bottom.)144 216 R 1.424(When a subroutine is e)6.424 F +k; the \214rst parameter of the initial)144 264 R 1.424 +(call is at the bottom.)144 276 R 1.424(When a subroutine is e)6.424 F -.15(xe)-.15 G 1.424(cuted, the parameters supplied are pushed onto).15 -F F2 -.27(BA)144 228 S(SH_ARGV).27 E F3(.)A F0 2.197(The shell sets) +F F2 -.27(BA)144 288 S(SH_ARGV).27 E F3(.)A F0 2.197(The shell sets) 6.697 F F2 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F 2.197(xtended deb)-.15 F 2.197(ugging mode \(see the)-.2 F .965 -(description of the)144 240 R F1(extdeb)3.465 E(ug)-.2 E F0 .966 +(description of the)144 300 R F1(extdeb)3.465 E(ug)-.2 E F0 .966 (option to the)3.465 F F1(shopt)3.466 E F0 -.2(bu)3.466 G .966 (iltin belo).2 F 3.466(w\). Setting)-.25 F F1(extdeb)3.466 E(ug)-.2 E F0 -.966(after the shell)3.466 F(has started to e)144 252 Q -.15(xe)-.15 G -(cute a script may result in inconsistent v).15 E(alues.)-.25 E F1 -.3 -(BA)108 264 S(SH_ARGV0).3 E F0 .251(When referenced, this v)144 276 R -.251(ariable e)-.25 F .251 +.966(after the shell)3.466 F .32(has started to e)144 312 R -.15(xe)-.15 +G .32(cute a script, or referencing this v).15 F .319(ariable when)-.25 +F F1(extdeb)2.819 E(ug)-.2 E F0 .319(is not set, may result in)2.819 F +(inconsistent v)144 324 Q(alues.)-.25 E F1 -.3(BA)108 336 S(SH_ARGV0).3 +E F0 .25(When referenced, this v)144 348 R .25(ariable e)-.25 F .251 (xpands to the name of the shell or shell script \(identical to)-.15 F -F1($0)2.75 E F0 2.75(;s)C(ee)-2.75 E 1.224 -(the description of special parameter 0 abo)144 288 R -.15(ve)-.15 G +F1($0)2.751 E F0 2.751(;s)C(ee)-2.751 E 1.224 +(the description of special parameter 0 abo)144 360 R -.15(ve)-.15 G 3.724(\). Assignment).15 F(to)3.724 E F1 -.3(BA)3.724 G(SH_ARGV0).3 E F0 -1.225(causes the v)3.724 F(alue)-.25 E .247 -(assigned to also be assigned to)144 300 R F1($0)2.747 E F0 5.247(.I)C +1.224(causes the v)3.724 F(alue)-.25 E .247 +(assigned to also be assigned to)144 372 R F1($0)2.747 E F0 5.247(.I)C (f)-5.247 E F1 -.3(BA)2.747 G(SH_ARGV0).3 E F0 .247 (is unset, it loses its special properties, e)2.747 F -.15(ve)-.25 G(n) -.15 E(if it is subsequently reset.)144 312 Q F1 -.3(BA)108 324 S -(SH_CMDS).3 E F0 .667(An associati)144 336 R .967 -.15(ve a)-.25 H .667 +.15 E(if it is subsequently reset.)144 384 Q F1 -.3(BA)108 396 S +(SH_CMDS).3 E F0 .668(An associati)144 408 R .968 -.15(ve a)-.25 H .668 (rray v).15 F .668(ariable whose members correspond to the internal has\ -h table of commands)-.25 F .196(as maintained by the)144 348 R F1(hash) -2.696 E F0 -.2(bu)2.696 G 2.696(iltin. Elements).2 F .195 +h table of commands)-.25 F .195(as maintained by the)144 420 R F1(hash) +2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196 (added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15 (ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\ -t cause command names to be remo)144 360 R -.15(ve)-.15 G 3.352(df).15 G -.853(rom the hash)-3.352 F 2.5(table. If)144 372 R F1 -.3(BA)2.5 G +t cause command names to be remo)144 432 R -.15(ve)-.15 G 3.352(df).15 G +.852(rom the hash)-3.352 F 2.5(table. If)144 444 R F1 -.3(BA)2.5 G (SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 (ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1 -.3(BA)108 384 S(SH_COMMAND).3 E F0 1.243 -(The command currently being e)144 396 R -.15(xe)-.15 G 1.243 -(cuted or about to be e).15 F -.15(xe)-.15 G 1.242 -(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.242(cuting a).15 F +(ubsequently reset.)-2.5 E F1 -.3(BA)108 456 S(SH_COMMAND).3 E F0 1.242 +(The command currently being e)144 468 R -.15(xe)-.15 G 1.243 +(cuted or about to be e).15 F -.15(xe)-.15 G 1.243 +(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F (command as the result of a trap, in which case it is the command e)144 -408 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 -420 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 432 Q +480 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 +492 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 504 Q (gument to the)-.18 E F12.5 E F0(in)2.5 E -.2(vo)-.4 G -(cation option.).2 E F1 -.3(BA)108 444 S(SH_LINENO).3 E F0 .692 -(An array v)144 456 R .692(ariable whose members are the line numbers i\ -n source \214les where each corresponding)-.25 F .97(member of)144 468 R -F2(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si).1 G -1.9 -.4(nv o) --3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 10 -/Times-Italic@0 SF($i)A F1(]})A F0 .969 -(is the line number in the source)3.469 F 14.671(\214le \()144 480 R F1 -(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 +(cation option.).2 E F1 -.3(BA)108 516 S(SH_LINENO).3 E F0 .693 +(An array v)144 528 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .969(member of)144 540 +R F2(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G 3.469(si).1 G -1.9 -.4 +(nv o)-3.469 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 +10/Times-Italic@0 SF($i)A F1(]})A F0 .97 +(is the line number in the source)3.469 F 14.672(\214le \()144 552 R F1 +(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.172(\)w)C(here)-17.172 E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G -17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 492 Q(ASH_LINENO[) +17.171(sc).1 G 14.671(alled \(or)-17.171 F F1(${B)144 564 Q(ASH_LINENO[) -.3 E F4($i-1)A F1(]})A F0 .115 (if referenced within another shell function\).)2.615 F(Use)5.115 E F2 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -504 Q(.)-.55 E F1 -.3(BA)108 516 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E --.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 528 S 1.57(olon-separated list of\ +576 Q(.)-.55 E F1 -.3(BA)108 588 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E +-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 600 S 1.57(olon-separated list of\ directories in which the shell looks for dynamically loadable b)-4.07 F -(uiltins)-.2 E(speci\214ed by the)144 540 Q F1(enable)2.5 E F0(command.) -2.5 E F1 -.3(BA)108 552 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 -564 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506 -E F0 .005(binary operator to the)2.506 F F1([[)2.505 E F0 .005 -(conditional com-)2.505 F 2.506(mand. The)144 576 R .007 -(element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 -(he portion of the string matching the entire re)-2.507 F .007(gular e) --.15 F(xpression.)-.15 E .998(The element with inde)144 588 R(x)-.15 E -F4(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F -F4(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5 -(sion. This)144 600 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F1 -.3(BA)108 612 S(SH_SOURCE).3 E F0 .125(An array v)144 624 R .125(ar\ +(uiltins)-.2 E(speci\214ed by the)144 612 Q F1(enable)2.5 E F0(command.) +2.5 E F1 -.3(BA)108 624 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 +636 R .005(ariable whose members are assigned by the)-.25 F F1(=~)2.506 +E F0 .006(binary operator to the)2.506 F F1([[)2.506 E F0 .006 +(conditional com-)2.506 F 2.507(mand. The)144 648 R .007 +(element with inde)2.507 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 +(he portion of the string matching the entire re)-2.507 F .006(gular e) +-.15 F(xpression.)-.15 E .997(The element with inde)144 660 R(x)-.15 E +F4(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F +F4(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5 +(sion. This)144 672 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F1 -.3(BA)108 684 S(SH_SOURCE).3 E F0 .126(An array v)144 696 R .125(ar\ iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .781(names in the)144 636 R F2(FUNCN)3.28 E(AME) +shell function)-.25 F .78(names in the)144 708 R F2(FUNCN)3.28 E(AME) -.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 -(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F4($i)A F1(]})A -F0(is)3.28 E(de\214ned in the \214le)144 648 Q F1(${B)2.5 E(ASH_SOURCE[) --.3 E F4($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[) --.3 E F4($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 660 S(SH_SUBSHELL).3 E F0 -.296(Incremented by one within each subshell or subshell en)144 672 R -.296(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G -(cuting).15 E(in that en)144 684 Q 2.5(vironment. The)-.4 F(initial v) -2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 696 S(SH_VERSINFO).3 E F0 2.645 -(Ar)144 708 S .145(eadonly array v)-2.645 F .144 -(ariable whose members hold v)-.25 F .144 -(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144 -(.T)C(he)-5.144 E -.25(va)144 720 S -(lues assigned to the array members are as follo).25 E(ws:)-.25 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(11)193.45 E 0 Cg EP +(The shell function)5.78 F F1(${FUNCN)3.281 E(AME[)-.2 E F4($i)A F1(]})A +F0(is)3.281 E(de\214ned in the \214le)144 720 Q F1(${B)2.5 E +(ASH_SOURCE[)-.3 E F4($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E +(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0(.)A(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(11)194.555 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.3(BA)144 84 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 84 -Q(ersion number \(the)-.15 E/F2 10/Times-Italic@0 SF -.37(re)2.5 G -(lease).37 E F0(\).)A F1 -.3(BA)144 96 S(SH_VERSINFO[).3 E F0(1)A F1(])A -F0(The minor v)264 96 Q(ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1 -E F0(\).)A F1 -.3(BA)144 108 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0 -(The patch le)264 108 Q -.15(ve)-.25 G(l.).15 E F1 -.3(BA)144 120 S -(SH_VERSINFO[).3 E F0(3)A F1(])A F0(The b)264 120 Q(uild v)-.2 E -(ersion.)-.15 E F1 -.3(BA)144 132 S(SH_VERSINFO[).3 E F0(4)A F1(])A F0 -(The release status \(e.g.,)264 132 Q F2(beta1)2.5 E F0(\).)A F1 -.3(BA) -144 144 S(SH_VERSINFO[).3 E F0(5)A F1(])A F0(The v)264 144 Q(alue of) +SF -.3(BA)108 84 S(SH_SUBSHELL).3 E F0 .296 +(Incremented by one within each subshell or subshell en)144 96 R .296 +(vironment when the shell be)-.4 F .296(gins e)-.15 F -.15(xe)-.15 G +(cuting).15 E(in that en)144 108 Q 2.5(vironment. The)-.4 F(initial v) +2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 120 S(SH_VERSINFO).3 E F0 2.644 +(Ar)144 132 S .144(eadonly array v)-2.644 F .144 +(ariable whose members hold v)-.25 F .144 +(ersion information for this instance of)-.15 F F1(bash)2.645 E F0 5.145 +(.T)C(he)-5.145 E -.25(va)144 144 S +(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 +(BA)144 162 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 162 Q +(ersion number \(the)-.15 E/F2 10/Times-Italic@0 SF -.37(re)2.5 G(lease) +.37 E F0(\).)A F1 -.3(BA)144 174 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0 +(The minor v)264 174 Q(ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1 +E F0(\).)A F1 -.3(BA)144 186 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0 +(The patch le)264 186 Q -.15(ve)-.25 G(l.).15 E F1 -.3(BA)144 198 S +(SH_VERSINFO[).3 E F0(3)A F1(])A F0(The b)264 198 Q(uild v)-.2 E +(ersion.)-.15 E F1 -.3(BA)144 210 S(SH_VERSINFO[).3 E F0(4)A F1(])A F0 +(The release status \(e.g.,)264 210 Q F2(beta1)2.5 E F0(\).)A F1 -.3(BA) +144 222 S(SH_VERSINFO[).3 E F0(5)A F1(])A F0(The v)264 222 Q(alue of) -.25 E/F3 9/Times-Bold@0 SF(MA)2.5 E(CHTYPE)-.495 E/F4 9/Times-Roman@0 -SF(.)A F1 -.3(BA)108 156 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 168 Q +SF(.)A F1 -.3(BA)108 234 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 246 Q (ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 -180 Q(ORD)-.1 E F0 .396(An inde)144 192 R 2.896(xi)-.15 G(nto)-2.896 E +258 Q(ORD)-.1 E F0 .397(An inde)144 270 R 2.897(xi)-.15 G(nto)-2.897 E F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 -(ord containing the current cursor position.)-.1 F .397(This v)5.397 F -(ari-)-.25 E 1.181(able is a)144 204 R -.25(va)-.2 G 1.181 +(ord containing the current cursor position.)-.1 F .396(This v)5.396 F +(ari-)-.25 E 1.18(able is a)144 282 R -.25(va)-.2 G 1.181 (ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 -(db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F -1.18(acilities \(see)-.1 F F1(Pr)144 216 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 228 Q F0(The k)144 240 Q .3 +(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F +1.181(acilities \(see)-.1 F F1(Pr)144 294 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 306 Q F0(The k)144 318 Q .3 -.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 -.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 -H(he current completion function.).1 E F1(COMP_LINE)108 252 Q F0 1.207 -(The current command line.)144 264 R 1.208(This v)6.208 F 1.208 +H(he current completion function.).1 E F1(COMP_LINE)108 330 Q F0 1.208 +(The current command line.)144 342 R 1.208(This v)6.208 F 1.208 (ariable is a)-.25 F -.25(va)-.2 G 1.208 -(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F -2.849(mands in)144 276 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F +2.848(mands in)144 354 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 (yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 -(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F -F0(belo)144 288 Q(w\).)-.25 E F1(COMP_POINT)108 300 Q F0 .666(The inde) -144 312 R 3.166(xo)-.15 G 3.166(ft)-3.166 G .666 -(he current cursor position relati)-3.166 F .966 -.15(ve t)-.25 H 3.166 +(acilities \(see)-.1 F F1(Pr)5.349 E 2.849(ogrammable Completion)-.18 F +F0(belo)144 366 Q(w\).)-.25 E F1(COMP_POINT)108 378 Q F0 .667(The inde) +144 390 R 3.167(xo)-.15 G 3.167(ft)-3.167 G .666 +(he current cursor position relati)-3.167 F .966 -.15(ve t)-.25 H 3.166 (ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 -F .667(If the)5.667 F .535 +F .666(If the)5.666 F .534 (current cursor position is at the end of the current command, the v)144 -324 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 336 Q F0 7.005(.T)C 2.005(his v)-7.005 F 2.005 -(ariable is a)-.25 F -.25(va)-.2 G 2.006 -(ilable only in shell functions and e).25 F 2.006(xternal commands)-.15 -F(in)144 348 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +402 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 414 Q F0 7.006(.T)C 2.006(his v)-7.006 F 2.006 +(ariable is a)-.25 F -.25(va)-.2 G 2.005 +(ilable only in shell functions and e).25 F 2.005(xternal commands)-.15 +F(in)144 426 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G (he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 -360 Q F0 .042(Set to an inte)144 372 R .042(ger v)-.15 F .041(alue corr\ +438 Q F0 .041(Set to an inte)144 450 R .041(ger v)-.15 F .041(alue corr\ esponding to the type of completion attempted that caused a completion) --.25 F .337(function to be called:)144 384 R F2 -.5(TA)2.837 G(B).5 E F0 +-.25 F .338(function to be called:)144 462 R F2 -.5(TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F2(?)2.837 E F0 2.837(,f) -C .337(or listing completions after successi)-2.837 F .638 -.15(ve t) --.25 H(abs,).15 E F2(!)144 396 Q F0 4.092(,f)C 1.592 -(or listing alternati)-4.092 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np) +C .337(or listing completions after successi)-2.837 F .637 -.15(ve t) +-.25 H(abs,).15 E F2(!)144 474 Q F0 4.091(,f)C 1.591 +(or listing alternati)-4.091 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np) -4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@)4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)-4.092 -F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 408 R F2(%)4.052 E +F 1.592(ord is not)-.1 F 1.553(unmodi\214ed, or)144 486 R F2(%)4.053 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v)6.552 F 1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 -(ilable only in shell functions and).25 F -.15(ex)144 420 S 2.929 +(ilable only in shell functions and).25 F -.15(ex)144 498 S 2.928 (ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429 (yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929 -(acilities \(see)-.1 F F1(Pr)5.428 E(ogrammable)-.18 E(Completion)144 -432 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 444 Q(ORDBREAKS)-.1 E F0 -1.335(The set of characters that the)144 456 R F1 -.18(re)3.836 G -(adline).18 E F0 1.336(library treats as w)3.836 F 1.336 -(ord separators when performing w)-.1 F(ord)-.1 E 3.126(completion. If) -144 468 R F3(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626 -(is unset, it loses its special properties, e)2.876 F -.15(ve)-.25 G -3.125(ni).15 G 3.125(fi)-3.125 G 3.125(ti)-3.125 G 3.125(ss)-3.125 G -(ubse-)-3.125 E(quently reset.)144 480 Q F1(COMP_W)108 492 Q(ORDS)-.1 E -F0 .653(An array v)144 504 R .653(ariable \(see)-.25 F F1(Arrays)3.153 E -F0(belo)3.153 E .654(w\) consisting of the indi)-.25 F .654(vidual w) --.25 F .654(ords in the current command)-.1 F 4.333(line. The)144 516 R +(acilities \(see)-.1 F F1(Pr)5.429 E(ogrammable)-.18 E(Completion)144 +510 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 522 Q(ORDBREAKS)-.1 E F0 +1.336(The set of characters that the)144 534 R F1 -.18(re)3.836 G +(adline).18 E F0 1.336(library treats as w)3.836 F 1.335 +(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) +144 546 R F3(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626 +(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G +3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G +(ubse-)-3.126 E(quently reset.)144 558 Q F1(COMP_W)108 570 Q(ORDS)-.1 E +F0 .654(An array v)144 582 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E +F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w) +-.25 F .653(ords in the current command)-.1 F 4.332(line. The)144 594 R 1.832(line is split into w)4.332 F 1.832(ords as)-.1 F F1 -.18(re)4.332 G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F3 -(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144 -528 R -.15(ve)-.15 G 5.831(.T).15 G .831(his v)-5.831 F .831 -(ariable is a)-.25 F -.25(va)-.2 G .832 -(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.332 -(db).1 G 3.332(yt)-3.332 G .832(he programmable)-3.332 F(completion f) -144 540 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 552 Q(OC)-.3 E F0 .169(An array v) -144 564 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E +(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.083 E .832(described abo)144 +606 R -.15(ve)-.15 G 5.832(.T).15 G .832(his v)-5.832 F .832 +(ariable is a)-.25 F -.25(va)-.2 G .831 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.331 +(db).1 G 3.331(yt)-3.331 G .831(he programmable)-3.331 F(completion f) +144 618 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 630 Q(OC)-.3 E F0 .168(An array v) +144 642 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) --.25 F(to an unnamed coprocess \(see)144 576 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 588 Q -.55(AC) --.9 G(K).55 E F0 2.26(An array v)144 600 R 2.26(ariable \(see)-.25 F F1 +-.25 F(to an unnamed coprocess \(see)144 654 Q F1(Copr)2.5 E(ocesses) +-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 666 Q -.55(AC) +-.9 G(K).55 E F0 2.26(An array v)144 678 R 2.26(ariable \(see)-.25 F F1 (Arrays)4.76 E F0(belo)4.76 E 2.26 (w\) containing the current contents of the directory stack.)-.25 F -1.095(Directories appear in the stack in the order the)144 612 R 3.594 -(ya)-.15 G 1.094(re displayed by the)-3.594 F F1(dirs)3.594 E F0 -.2(bu) -3.594 G 3.594(iltin. Assigning).2 F(to)3.594 E 1.431 -(members of this array v)144 624 R 1.432 +1.094(Directories appear in the stack in the order the)144 690 R 3.594 +(ya)-.15 G 1.095(re displayed by the)-3.594 F F1(dirs)3.595 E F0 -.2(bu) +3.595 G 3.595(iltin. Assigning).2 F(to)3.595 E 1.432 +(members of this array v)144 702 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.432(ut the)-.2 F F1(pushd)144 636 Q F0(and)2.746 E F1(popd)2.746 E +F 1.431(ut the)-.2 F F1(pushd)144 714 Q F0(and)2.746 E F1(popd)2.746 E F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546 -.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746 -F(ariable)-.25 E .35(will not change the current directory)144 648 R +F(ariable)-.25 E .351(will not change the current directory)144 726 R 5.35(.I)-.65 G(f)-5.35 E F3(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 -(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.851 -(ni).15 G(f)-2.851 E(it is subsequently reset.)144 660 Q F1(EPOCHREAL) -108 672 Q(TIME)-.92 E F0 .338 -(Each time this parameter is referenced, it e)144 684 R .337 -(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 -696 Q F2(time)2.916 E F0 .416(\(3\)\) as a \215oating point v)B .417 -(alue with micro-second granularity)-.25 F 5.417(.A)-.65 G .417 -(ssignments to)-5.417 F F3(EPOCHRE-)2.917 E(AL)144 708 Q(TIME)-.828 E F0 -1.091(are ignored.)3.341 F(If)6.091 E F3(EPOCHREAL)3.59 E(TIME)-.828 E -F0 1.09(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 -G 3.59(ni).15 G 3.59(fi)-3.59 G 3.59(ti)-3.59 G(s)-3.59 E -(subsequently reset.)144 720 Q(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(12)193.45 E 0 Cg EP +(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.85 +(ni).15 G(f)-2.85 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(12) +194.555 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(EPOCHSECONDS)108 84 Q F0 .337 -(Each time this parameter is referenced, it e)144 96 R .338 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(it is subsequently reset.)144 84 Q/F1 10/Times-Bold@0 SF(EPOCHREAL)108 +96 Q(TIME)-.92 E F0 .337(Each time this parameter is referenced, it e) +144 108 R .338(xpands to the number of seconds since the Unix Epoch)-.15 +F(\(see)144 120 Q/F2 10/Times-Italic@0 SF(time)2.917 E F0 .417 +(\(3\)\) as a \215oating point v)B .416 +(alue with micro-second granularity)-.25 F 5.416(.A)-.65 G .416 +(ssignments to)-5.416 F/F3 9/Times-Bold@0 SF(EPOCHRE-)2.916 E(AL)144 132 +Q(TIME)-.828 E F0 1.09(are ignored.)3.34 F(If)6.09 E F3(EPOCHREAL)3.59 E +(TIME)-.828 E F0 1.09(is unset, it loses its special properties, e)3.34 +F -.15(ve)-.25 G 3.591(ni).15 G 3.591(fi)-3.591 G 3.591(ti)-3.591 G(s) +-3.591 E(subsequently reset.)144 144 Q F1(EPOCHSECONDS)108 156 Q F0 .338 +(Each time this parameter is referenced, it e)144 168 R .337 (xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 -108 Q/F2 10/Times-Italic@0 SF(time)4.042 E F0 4.042 -(\(3\)\). Assignments)B(to)4.042 E/F3 9/Times-Bold@0 SF(EPOCHSECONDS) -4.042 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3(EPOCHSECONDS)4.041 E -F0 1.541(is unset, it)3.791 F(loses its special properties, e)144 120 Q --.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1(EUID)108 132 Q F0 1.103(Expands to the ef) -144 132 R(fecti)-.25 E 1.403 -.15(ve u)-.25 H 1.103 -(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 -(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104 -(ariable is)-.25 F(readonly)144 144 Q(.)-.65 E F1(FUNCN)108 156 Q(AME) --.2 E F0 .479(An array v)144 168 R .479 +180 Q F2(time)4.041 E F0 4.041(\(3\)\). Assignments)B(to)4.041 E F3 +(EPOCHSECONDS)4.041 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3 +(EPOCHSECONDS)4.042 E F0 1.542(is unset, it)3.792 F +(loses its special properties, e)144 192 Q -.15(ve)-.25 G 2.5(ni).15 G +2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 +(EUID)108 204 Q F0 1.104(Expands to the ef)144 204 R(fecti)-.25 E 1.403 +-.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G +1.103(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103 +(ariable is)-.25 F(readonly)144 216 Q(.)-.65 E F1(FUNCN)108 228 Q(AME) +-.2 E F0 .478(An array v)144 240 R .479 (ariable containing the names of all shell functions currently in the e) --.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276 -(The element with inde)144 180 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276 -(he name of an)-2.776 F 2.777(yc)-.15 G(urrently-e)-2.777 E -.15(xe)-.15 -G .277(cuting shell function.).15 F .277(The bottom-most)5.277 F .385 -(element \(the one with the highest inde)144 192 R .384(x\) is)-.15 F/F4 -10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .384 -(ariable e)-.25 F .384(xists only when a shell func-)-.15 F .075 -(tion is e)144 204 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to) -2.575 E F3(FUNCN)2.575 E(AME)-.18 E F0(ha)2.325 E .376 -.15(ve n)-.2 H -2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.576 E -(AME)-.18 E F0 .076(is unset, it loses its)2.326 F -(special properties, e)144 216 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 -G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .111(This v)144 -234 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) +-.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 +(The element with inde)144 252 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 +(he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15 +G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384 +(element \(the one with the highest inde)144 264 R .384(x\) is)-.15 F/F4 +10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385 +(ariable e)-.25 F .385(xists only when a shell func-)-.15 F .076 +(tion is e)144 276 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to) +2.576 E F3(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H +2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.575 E +(AME)-.18 E F0 .075(is unset, it loses its)2.325 F +(special properties, e)144 288 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .11(This v)144 +306 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) .3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111 -(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 246 S(ME).2 E F0 +(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 318 S(ME).2 E F0 1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO) .3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404 -(to describe the)3.904 F .012(call stack.)144 258 R -.15(Fo)5.012 G +(to describe the)3.904 F .012(call stack.)144 330 R -.15(Fo)5.012 G 2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F2($i)A F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le) --2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.183 -(at line number)144 270 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1 -(]})A F0 6.183(.T)C(he)-6.183 E F1(caller)3.683 E F0 -.2(bu)3.683 G -1.184(iltin displays the current call stack using).2 F -(this information.)144 282 Q F1(GR)108 294 Q(OUPS)-.3 E F0 1.229 -(An array v)144 306 R 1.228(ariable containing the list of groups of wh\ -ich the current user is a member)-.25 F 6.228(.A)-.55 G(ssign-)-6.228 E -.571(ments to)144 318 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872 +-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.184 +(at line number)144 342 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F2($i)A F1 +(]})A F0 6.184(.T)C(he)-6.184 E F1(caller)3.683 E F0 -.2(bu)3.683 G +1.183(iltin displays the current call stack using).2 F +(this information.)144 354 Q F1(GR)108 366 Q(OUPS)-.3 E F0 1.228 +(An array v)144 378 R 1.228(ariable containing the list of groups of wh\ +ich the current user is a member)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E +.572(ments to)144 390 R F3(GR)3.072 E(OUPS)-.27 E F0(ha)2.822 E .872 -.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F3 (GR)3.072 E(OUPS)-.27 E F0 .572 (is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G -3.072(ni).15 G 3.072(fi)-3.072 G 3.072(ti)-3.072 G(s)-3.072 E -(subsequently reset.)144 330 Q F1(HISTCMD)108 342 Q F0 .356 -(The history number)144 354 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde) --2.856 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 +3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s)-3.071 E +(subsequently reset.)144 402 Q F1(HISTCMD)108 414 Q F0 .355 +(The history number)144 426 R 2.855(,o)-.4 G 2.855(ri)-2.855 G(nde) +-2.855 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 (he history list, of the current command.)-2.856 F(If)5.356 E F3 -(HISTCMD)2.855 E F0 .355(is unset, it)2.605 F -(loses its special properties, e)144 366 Q -.15(ve)-.25 G 2.5(ni).15 G +(HISTCMD)2.856 E F0 .356(is unset, it)2.606 F +(loses its special properties, e)144 438 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -(HOSTN)108 378 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 390 Q F1 -(HOSTTYPE)108 402 Q F0 .222(Automatically set to a string that uniquely\ - describes the type of machine on which)144 414 R F1(bash)2.723 E F0 -.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 426 R(def) -2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 438 Q F0 1.408(Each\ +(HOSTN)108 450 Q(AME)-.2 E F0 +(Automatically set to the name of the current host.)144 462 Q F1 +(HOSTTYPE)108 474 Q F0 .223(Automatically set to a string that uniquely\ + describes the type of machine on which)144 486 R F1(bash)2.722 E F0 +.222(is e)2.722 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 498 R(def) +2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 510 Q F0 1.408(Each\ time this parameter is referenced, the shell substitutes a decimal num\ -ber representing the)144 450 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 462 R .079 -(When not in a script or)5.078 F .307(function, the v)144 474 R .307 -(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E -F3(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F -(special properties, e)144 486 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 -G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 498 Q +ber representing the)144 522 R .078(current sequential line number \(st\ +arting with 1\) within a script or function.)144 534 R .078 +(When not in a script or)5.078 F .306(function, the v)144 546 R .306 +(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.307 E +F3(LINENO)2.807 E F0 .307(is unset, it loses its)2.557 F +(special properties, e)144 558 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 570 Q (CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ -es the system type on which)144 510 R F1(bash)3.398 E F0 .899(is e)3.398 -F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 522 Q F2 +es the system type on which)144 582 R F1(bash)3.398 E F0 .898(is e)3.398 +F -.15(xe)-.15 G .898(cuting, in).15 F(the standard GNU)144 594 Q F2 (cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E -(ault is system-dependent.)-.1 E F1(MAPFILE)108 534 Q F0 .294 -(An array v)144 546 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0 -(belo)2.794 E .294(w\) created to hold the te)-.25 F .293 -(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 -(iltin when no).2 F -.25(va)144 558 S(riable name is supplied.).25 E F1 -(OLDPWD)108 570 Q F0(The pre)144 582 Q(vious w)-.25 E +(ault is system-dependent.)-.1 E F1(MAPFILE)108 606 Q F0 .293 +(An array v)144 618 R .293(ariable \(see)-.25 F F1(Arrays)2.793 E F0 +(belo)2.793 E .293(w\) created to hold the te)-.25 F .294 +(xt read by the)-.15 F F1(map\214le)2.794 E F0 -.2(bu)2.794 G .294 +(iltin when no).2 F -.25(va)144 630 S(riable name is supplied.).25 E F1 +(OLDPWD)108 642 Q F0(The pre)144 654 Q(vious w)-.25 E (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(OPT)108 594 Q(ARG)-.9 E F0 1.626(The v)144 606 R 1.627 +(OPT)108 666 Q(ARG)-.9 E F0 1.627(The v)144 678 R 1.627 (alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F -F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F3 -(SHELL)4.127 E -.09(BU)144 618 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(OPTIND)108 630 Q F0 1.652(The inde)144 642 R 4.152 -(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F -1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu) -4.151 G 1.651(iltin command \(see).2 F F3(SHELL)4.151 E -.09(BU)144 654 -S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 -666 Q F0 .329(Automatically set to a string that describes the operatin\ -g system on which)144 678 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe) --.15 G 2.83(cuting. The).15 F(def)144 690 Q(ault is system-dependent.) --.1 E F1(PIPEST)108 702 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 -714 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61 -(w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61 -(alues from the processes in)-.25 F(the most-recently-e)144 726 Q -.15 -(xe)-.15 G(cuted fore).15 E -(ground pipeline \(which may contain only a single command\).)-.15 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(13)193.45 E 0 Cg EP +F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.626(iltin command \(see).2 F F3 +(SHELL)4.126 E -.09(BU)144 690 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(OPTIND)108 702 Q F0 1.651(The inde)144 714 R 4.151 +(xo)-.15 G 4.151(ft)-4.151 G 1.651(he ne)-4.151 F 1.651(xt ar)-.15 F +1.652(gument to be processed by the)-.18 F F1(getopts)4.152 E F0 -.2(bu) +4.152 G 1.652(iltin command \(see).2 F F3(SHELL)4.152 E -.09(BU)144 726 +S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0) +72 768 Q(2018 August 7)145.395 E(13)194.555 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(PPID)108 84 Q F0(The process ID of the shell')144 84 Q 2.5(sp)-.55 G +SF(OSTYPE)108 84 Q F0 .329(Automatically set to a string that describes\ + the operating system on which)144 96 R F1(bash)2.829 E F0 .329(is e) +2.829 F -.15(xe)-.15 G 2.829(cuting. The).15 F(def)144 108 Q +(ault is system-dependent.)-.1 E F1(PIPEST)108 120 Q -.95(AT)-.9 G(US) +.95 E F0 .61(An array v)144 132 R .61(ariable \(see)-.25 F F1(Arrays) +3.11 E F0(belo)3.11 E .61(w\) containing a list of e)-.25 F .61 +(xit status v)-.15 F .61(alues from the processes in)-.25 F +(the most-recently-e)144 144 Q -.15(xe)-.15 G(cuted fore).15 E +(ground pipeline \(which may contain only a single command\).)-.15 E F1 +(PPID)108 156 Q F0(The process ID of the shell')144 156 Q 2.5(sp)-.55 G 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E -F1(PWD)108 96 Q F0(The current w)144 96 Q +F1(PWD)108 168 Q F0(The current w)144 168 Q (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(RANDOM)108 108 Q F0 .565 -(Each time this parameter is referenced, a random inte)144 120 R .566 -(ger between 0 and 32767 is generated.)-.15 F(The)5.566 E .01 -(sequence of random numbers may be initialized by assigning a v)144 132 +(RANDOM)108 180 Q F0 .566 +(Each time this parameter is referenced, a random inte)144 192 R .565 +(ger between 0 and 32767 is generated.)-.15 F(The)5.565 E .01 +(sequence of random numbers may be initialized by assigning a v)144 204 R .01(alue to)-.25 F/F2 9/Times-Bold@0 SF(RANDOM)2.51 E/F3 9 /Times-Roman@0 SF(.)A F0(If)4.51 E F2(RANDOM)2.51 E F0(is)2.26 E -(unset, it loses its special properties, e)144 144 Q -.15(ve)-.25 G 2.5 +(unset, it loses its special properties, e)144 216 Q -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1(READLINE_LINE)108 156 Q F0 1.546(The contents of the)144 168 R +-2.5 E F1(READLINE_LINE)108 228 Q F0 1.547(The contents of the)144 240 R F1 -.18(re)4.047 G(adline).18 E F0 1.547(line b)4.047 F(uf)-.2 E(fer) -.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F4 10/Courier@0 SF -1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.547(SHELL B)4.047 F(UIL)-.09 -E 1.547(TIN COM-)-.828 F(MANDS)144 180 Q F0(belo)2.25 E(w\).)-.25 E F1 -(READLINE_POINT)108 192 Q F0 .314 -(The position of the insertion point in the)144 204 R F1 -.18(re)2.813 G +1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.546(SHELL B)4.047 F(UIL)-.09 +E 1.546(TIN COM-)-.828 F(MANDS)144 252 Q F0(belo)2.25 E(w\).)-.25 E F1 +(READLINE_POINT)108 264 Q F0 .313 +(The position of the insertion point in the)144 276 R F1 -.18(re)2.813 G (adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G -.313(or use with)-2.813 F F4 .313(bind -x)2.813 F F0(\(see)2.813 E F2 -(SHELL)2.813 E -.09(BU)144 216 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(REPL)108 228 Q(Y)-.92 E F0 -(Set to the line of input read by the)144 240 Q F1 -.18(re)2.5 G(ad).18 +.313(or use with)-2.813 F F4 .314(bind -x)2.814 F F0(\(see)2.814 E F2 +(SHELL)2.814 E -.09(BU)144 288 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(REPL)108 300 Q(Y)-.92 E F0 +(Set to the line of input read by the)144 312 Q F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.) --.18 E F1(SECONDS)108 252 Q F0 .795(Each time this parameter is referen\ -ced, the number of seconds since shell in)144 264 R -.2(vo)-.4 G .795 -(cation is returned.).2 F .713(If a v)144 276 R .712 +-.18 E F1(SECONDS)108 324 Q F0 .795(Each time this parameter is referen\ +ced, the number of seconds since shell in)144 336 R -.2(vo)-.4 G .795 +(cation is returned.).2 F .712(If a v)144 348 R .712 (alue is assigned to)-.25 F F2(SECONDS)3.212 E F3(,)A F0 .712(the v) 2.962 F .712(alue returned upon subsequent references is the number)-.25 -F .407(of seconds since the assignment plus the v)144 288 R .408 -(alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .408 -(is unset, it loses its special)2.658 F(properties, e)144 300 Q -.15(ve) +F .408(of seconds since the assignment plus the v)144 360 R .408 +(alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .407 +(is unset, it loses its special)2.658 F(properties, e)144 372 Q -.15(ve) -.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 312 Q F0 3.263(Ac)144 324 S -.763(olon-separated list of enabled shell options.)-3.263 F .763(Each w) +(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 384 Q F0 3.262(Ac)144 396 S +.763(olon-separated list of enabled shell options.)-3.262 F .763(Each w) 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 336 Q F0 1.173(option to the)3.673 F -F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F2 1.174 -(SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E -3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 348 R F2 -(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F5 10 +(gument for the)-.18 F F1144 408 Q F0 1.174(option to the)3.674 F +F1(set)3.674 E F0 -.2(bu)3.674 G 1.174(iltin command \(see).2 F F2 1.173 +(SHELL B)3.673 F(UIL)-.09 E 1.173(TIN COMMANDS)-.828 F F0(belo)3.423 E +3.673(w\). The)-.25 F(options)3.673 E .019(appearing in)144 420 R F2 +(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F/F5 10 /Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0 -5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .019 -(ariable is in the en)-.25 F(vironment)-.4 E(when)144 360 Q F1(bash) -3.141 E F0 .642(starts up, each shell option in the list will be enable\ -d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 -F(This v)144 372 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 384 Q -(VL)-.92 E F0(Incremented by one each time an instance of)144 396 Q F1 -(bash)2.5 E F0(is started.)2.5 E F1(UID)108 408 Q F0 -(Expands to the user ID of the current user)144 408 Q 2.5(,i)-.4 G +5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .02 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 432 Q F1(bash) +3.142 E F0 .642(starts up, each shell option in the list will be enable\ +d before reading an)3.142 F 3.141(ys)-.15 G .641(tartup \214les.)-3.141 +F(This v)144 444 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 456 Q +(VL)-.92 E F0(Incremented by one each time an instance of)144 468 Q F1 +(bash)2.5 E F0(is started.)2.5 E F1(UID)108 480 Q F0 +(Expands to the user ID of the current user)144 480 Q 2.5(,i)-.4 G (nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25 -E(.)-.65 E .994(The follo)108 424.8 R .994(wing v)-.25 F .994 +E(.)-.65 E .993(The follo)108 496.8 R .993(wing v)-.25 F .994 (ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 -(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993 -(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 436.8 -Q -.65(w.)-.25 G F1 -.3(BA)108 453.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 -1.192(The v)144 465.6 R 1.192(alue is used to set the shell')-.25 F -3.692(sc)-.55 G 1.193(ompatibility le)-3.692 F -.15(ve)-.25 G 3.693 -(l. See).15 F 1.193(the description of the)3.693 F F1(shopt)3.693 E F0 --.2(bu)3.693 G(iltin).2 E(belo)144 477.6 Q 2.872(wu)-.25 G(nder)-2.872 E -F1 .372(SHELL B)2.872 F(UIL)-.1 E .372(TIN COMMANDS)-.92 F F0 .372 -(for a description of the v)2.872 F .371(arious compatibility le)-.25 F -(v-)-.25 E .36(els and their ef)144 489.6 R 2.86(fects. The)-.25 F -.25 -(va)2.86 G .361(lue may be a decimal number \(e.g., 4.2\) or an inte).25 -F .361(ger \(e.g., 42\) corre-)-.15 F 1.751 -(sponding to the desired compatibility le)144 501.6 R -.15(ve)-.25 G -4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.75 +(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994 +(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 508.8 +Q -.65(w.)-.25 G F1 -.3(BA)108 525.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 +1.193(The v)144 537.6 R 1.193(alue is used to set the shell')-.25 F +3.693(sc)-.55 G 1.192(ompatibility le)-3.693 F -.15(ve)-.25 G 3.692 +(l. See).15 F 1.192(the description of the)3.692 F F1(shopt)3.692 E F0 +-.2(bu)3.692 G(iltin).2 E(belo)144 549.6 Q 2.871(wu)-.25 G(nder)-2.871 E +F1 .371(SHELL B)2.871 F(UIL)-.1 E .371(TIN COMMANDS)-.92 F F0 .372 +(for a description of the v)2.872 F .372(arious compatibility le)-.25 F +(v-)-.25 E .361(els and their ef)144 561.6 R 2.861(fects. The)-.25 F +-.25(va)2.861 G .361 +(lue may be a decimal number \(e.g., 4.2\) or an inte).25 F .36 +(ger \(e.g., 42\) corre-)-.15 F 1.75 +(sponding to the desired compatibility le)144 573.6 R -.15(ve)-.25 G +4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.751 (is unset or set to the empty)5.201 F .578(string, the compatibility le) -144 513.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 +144 585.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 (et to the def)-3.078 F .578(ault for the current v)-.1 F 3.078 (ersion. If)-.15 F F1 -.3(BA)3.078 G(SH_COMP).3 E -.95(AT)-.74 G F0(is) -4.028 E .249(set to a v)144 525.6 R .249(alue that is not one of the v) --.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .248 -(ls, the shell prints an error message and).15 F 1.119 -(sets the compatibility le)144 537.6 R -.15(ve)-.25 G 3.619(lt).15 G -3.619(ot)-3.619 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1 -F 3.62(ersion. The)-.15 F -.25(va)3.62 G 1.12(lid compatibility le).25 F --.15(ve)-.25 G(ls).15 E .576 -(correspond to the compatibility options accepted by the)144 549.6 R F1 -(shopt)3.075 E F0 -.2(bu)3.075 G .575(iltin described belo).2 F 3.075 -(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 561.6 Q F1 +4.028 E .248(set to a v)144 597.6 R .248(alue that is not one of the v) +-.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .249 +(ls, the shell prints an error message and).15 F 1.12 +(sets the compatibility le)144 609.6 R -.15(ve)-.25 G 3.62(lt).15 G +3.619(ot)-3.62 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1 +F 3.619(ersion. The)-.15 F -.25(va)3.619 G 1.119(lid compatibility le) +.25 F -.15(ve)-.25 G(ls).15 E .575 +(correspond to the compatibility options accepted by the)144 621.6 R F1 +(shopt)3.075 E F0 -.2(bu)3.076 G .576(iltin described belo).2 F 3.076 +(w\()-.25 G .576(for e)-3.076 F(xam-)-.15 E(ple,)144 633.6 Q F1 (compat42)2.5 E F0(means that 4.2 and 42 are v)2.5 E(alid v)-.25 E 2.5 (alues\). The)-.25 F(current v)2.5 E(ersion is also a v)-.15 E(alid v) --.25 E(alue.)-.25 E F1 -.3(BA)108 573.6 S(SH_ENV).3 E F0 .505 -(If this parameter is set when)144 585.6 R F1(bash)3.005 E F0 .505(is e) -3.005 F -.15(xe)-.15 G .506(cuting a shell script, its v).15 F .506 -(alue is interpreted as a \214lename)-.25 F .355 -(containing commands to initialize the shell, as in)144 597.6 R F5 -(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354(he v)-5.354 F .354 -(alue of)-.25 F F2 -.27(BA)2.854 G(SH_ENV).27 E F0 .354(is subjected) -2.604 F .525(to parameter e)144 609.6 R .525 +-.25 E(alue.)-.25 E F1 -.3(BA)108 645.6 S(SH_ENV).3 E F0 .506 +(If this parameter is set when)144 657.6 R F1(bash)3.006 E F0 .506(is e) +3.006 F -.15(xe)-.15 G .505(cuting a shell script, its v).15 F .505 +(alue is interpreted as a \214lename)-.25 F .354 +(containing commands to initialize the shell, as in)144 669.6 R F5 +(~/.bashr)2.855 E(c)-.37 E F0 5.355(.T).31 G .355(he v)-5.355 F .355 +(alue of)-.25 F F2 -.27(BA)2.855 G(SH_ENV).27 E F0 .355(is subjected) +2.605 F .525(to parameter e)144 681.6 R .525 (xpansion, command substitution, and arithmetic e)-.15 F .525 -(xpansion before being interpreted)-.15 F(as a \214lename.)144 621.6 Q +(xpansion before being interpreted)-.15 F(as a \214lename.)144 693.6 Q F2 -.666(PA)5 G(TH)-.189 E F0 (is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) -108 633.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 645.6 -R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 -F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F -(-)-.2 E 3.114(ated when)144 657.6 R F4 3.114(set -x)5.614 F F0 3.114 +108 705.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .48(If set to an inte)144 717.6 +R .48(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F +(,)-.4 E F1(bash)2.981 E F0 .481(will write the trace output gener)2.981 +F(-)-.2 E 3.114(ated when)144 729.6 R F4 3.114(set -x)5.614 F F0 3.114 (is enabled to that \214le descriptor)5.614 F 8.114(.T)-.55 G 3.114 -(he \214le descriptor is closed when)-8.114 F F2 -.27(BA)144 669.6 S -(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)2.388 F -2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F2 -.27(BA)2.638 G -(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the e\ -mpty string causes the trace output to be sent to the standard error)144 -681.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F2 -.27(BA)144 -693.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error \ -\214le descriptor\) and then unsetting it will result in the)2.991 F -(standard error being closed.)144 705.6 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(14)193.45 E 0 Cg EP +(he \214le descriptor is closed when)-8.114 F(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(14)194.555 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(CDP)108 84 Q -.95(AT)-.74 G(H).95 E F0 1.247(The search path for the) -144 96 R F1(cd)3.747 E F0 3.747(command. This)3.747 F 1.248 -(is a colon-separated list of directories in which the)3.747 F 3.796 -(shell looks for destination directories speci\214ed by the)144 108 R F1 -(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 -(alue is)-.25 F/F2 10/Courier@0 SF(".:~:/usr")144 120 Q F0(.)A F1 -(CHILD_MAX)108 132 Q F0 .997(Set the number of e)144 144 R .997 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 +SF -.27(BA)144 84 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138 +(is unset or assigned a ne)2.388 F 2.638(wv)-.25 G 2.638 +(alue. Unsetting)-2.888 F F1 -.27(BA)2.638 G(SH_XTRA).27 E(CEFD)-.495 E +F0 .138(or assigning it)2.388 F 2.531(the empty string causes the trace\ + output to be sent to the standard error)144 96 R 7.53(.N)-.55 G 2.53 +(ote that setting)-7.53 F F1 -.27(BA)144 108 S(SH_XTRA).27 E(CEFD)-.495 +E F0 .74(to 2 \(the standard error \214le descriptor\) and then unsetti\ +ng it will result in the)2.99 F(standard error being closed.)144 120 Q +/F2 10/Times-Bold@0 SF(CDP)108 132 Q -.95(AT)-.74 G(H).95 E F0 1.248 +(The search path for the)144 144 R F2(cd)3.748 E F0 3.748(command. This) +3.748 F 1.247(is a colon-separated list of directories in which the) +3.748 F 3.795 +(shell looks for destination directories speci\214ed by the)144 156 R F2 +(cd)6.295 E F0 6.296(command. A)6.296 F 3.796(sample v)6.296 F 3.796 +(alue is)-.25 F/F3 10/Courier@0 SF(".:~:/usr")144 168 Q F0(.)A F2 +(CHILD_MAX)108 180 Q F0 .997(Set the number of e)144 192 R .997 (xited child status v)-.15 F .997(alues for the shell to remember)-.25 F -5.997(.B)-.55 G .997(ash will not allo)-5.997 F 3.498(wt)-.25 G(his) --3.498 E -.25(va)144 156 S 1.078(lue to be decreased belo).25 F 3.577 +5.997(.B)-.55 G .997(ash will not allo)-5.997 F 3.497(wt)-.25 G(his) +-3.497 E -.25(va)144 204 S 1.077(lue to be decreased belo).25 F 3.577 (waP)-.25 G 1.077(OSIX-mandated minimum, and there is a maximum v)-3.577 -F 1.077(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 -168 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.) --.25 E F1(COLUMNS)108 180 Q F0 .828(Used by the)144 192 R F1(select) -3.328 E F0 .829(compound command to determine the terminal width when p\ -rinting selection)3.328 F 4.507(lists. Automatically)144 204 R 2.007 -(set if the)4.507 F F1(checkwinsize)4.507 E F0 2.006 -(option is enabled or in an interacti)4.507 F 2.306 -.15(ve s)-.25 H -2.006(hell upon).15 F(receipt of a)144 216 Q/F3 9/Times-Bold@0 SF -(SIGWINCH)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(COMPREPL)108 228 Q(Y)-.92 E -F0 .847(An array v)144 240 R .848(ariable from which)-.25 F F1(bash) -3.348 E F0 .848 +F 1.078(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 +216 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.) +-.25 E F2(COLUMNS)108 228 Q F0 .829(Used by the)144 240 R F2(select) +3.329 E F0 .828(compound command to determine the terminal width when p\ +rinting selection)3.329 F 4.506(lists. Automatically)144 252 R 2.006 +(set if the)4.506 F F2(checkwinsize)4.506 E F0 2.007 +(option is enabled or in an interacti)4.506 F 2.307 -.15(ve s)-.25 H +2.007(hell upon).15 F(receipt of a)144 264 Q F1(SIGWINCH)2.5 E/F4 9 +/Times-Roman@0 SF(.)A F2(COMPREPL)108 276 Q(Y)-.92 E F0 .848(An array v) +144 288 R .848(ariable from which)-.25 F F2(bash)3.348 E F0 .848 (reads the possible completions generated by a shell function)3.348 F -(in)144 252 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G -.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F1 +(in)144 300 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G +.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F2 (Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785 (w\). Each)-.25 F(array element contains one possible completion.)144 -264 Q F1(EMA)108 276 Q(CS)-.55 E F0(If)144 288 Q F1(bash)2.535 E F0 .035 -(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 -(vironment when the shell starts with v)-.4 F(alue)-.25 E F2(t)2.536 E -F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F -(shell is running in an Emacs shell b)144 300 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(ENV)108 312 Q F0(Similar to) -144 312 Q F3 -.27(BA)2.5 G(SH_ENV).27 E F4(;)A F0 +312 Q F2(EMA)108 324 Q(CS)-.55 E F0(If)144 336 Q F2(bash)2.536 E F0 .036 +(\214nds this v)2.536 F .036(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F3(t)2.535 E +F0 2.535(,i)C 2.535(ta)-2.535 G .035(ssumes that the)-2.535 F +(shell is running in an Emacs shell b)144 348 Q(uf)-.2 E +(fer and disables line editing.)-.25 E F2(ENV)108 360 Q F0(Similar to) +144 360 Q F1 -.27(BA)2.5 G(SH_ENV).27 E F4(;)A F0 (used when the shell is in)2.25 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G -2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(EXECIGNORE)108 324 Q F0 2.717(Ac)144 -336 S .217(olon-separated list of shell patterns \(see)-2.717 F F1 -.1 -(Pa)2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C -.216(e\214ning the list of \214lenames to be)-2.717 F .116 -(ignored by command search using)144 348 R F1 -.74(PA)2.616 G(TH)-.21 E -F0 5.116(.F)C .117 -(iles whose full pathnames match one of these patterns)-5.116 F 1.433 -(are not considered e)144 360 R -.15(xe)-.15 G 1.432 +(n)-2.5 E/F5 10/Times-Italic@0 SF(posix mode)2.5 E F0(.)A F2(EXECIGNORE) +108 372 Q F0 2.716(Ac)144 384 S .216 +(olon-separated list of shell patterns \(see)-2.716 F F2 -.1(Pa)2.717 G +(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .217 +(e\214ning the list of \214lenames to be)-2.717 F .117 +(ignored by command search using)144 396 R F2 -.74(PA)2.617 G(TH)-.21 E +F0 5.117(.F)C .116 +(iles whose full pathnames match one of these patterns)-5.117 F 1.432 +(are not considered e)144 408 R -.15(xe)-.15 G 1.432 (cutable \214les for the purposes of completion and command e).15 F -.15 -(xe)-.15 G 1.432(cution via).15 F F1 -.74(PA)144 372 S(TH)-.21 E F0 -2.908(lookup. This)2.908 F .408(does not af)2.908 F .408(fect the beha) --.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0 -2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.909(commands. Full)2.908 F -(pathnames)2.909 E .364(in the command hash table are not subject to)144 -384 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 -(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 396 R +(xe)-.15 G 1.433(cution via).15 F F2 -.74(PA)144 420 S(TH)-.21 E F0 +2.909(lookup. This)2.909 F .408(does not af)2.908 F .408(fect the beha) +-.25 F .408(vior of the)-.2 F F2([)2.908 E F0(,)A F2(test)2.908 E F0 +2.908(,a)C(nd)-2.908 E F2([[)2.908 E F0 2.908(commands. Full)2.908 F +(pathnames)2.908 E .364(in the command hash table are not subject to)144 +432 R F2(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 +(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 444 R 1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 (cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37 (cutable \214les.).15 F 1.37(The pattern matching)6.37 F -(honors the setting of the)144 408 Q F1(extglob)2.5 E F0(shell option.) -2.5 E F1(FCEDIT)108 420 Q F0(The def)144 432 Q(ault editor for the)-.1 E -F1(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F1(FIGNORE)108 444 Q F0 -2.599(Ac)144 456 S .098(olon-separated list of suf)-2.599 F<8c78>-.25 E -.098(es to ignore when performing \214lename completion \(see)-.15 F F3 -(READLINE)2.598 E F0(belo)144 468 Q 2.704(w\). A)-.25 F .204 -(\214lename whose suf)2.704 F .205(\214x matches one of the entries in) --.25 F F3(FIGNORE)2.705 E F0 .205(is e)2.455 F .205 -(xcluded from the list)-.15 F(of matched \214lenames.)144 480 Q 2.5(As)5 -G(ample v)-2.5 E(alue is)-.25 E F2(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 -492 Q F0 .231(If set to a numeric v)144 504 R .231 +(honors the setting of the)144 456 Q F2(extglob)2.5 E F0(shell option.) +2.5 E F2(FCEDIT)108 468 Q F0(The def)144 480 Q(ault editor for the)-.1 E +F2(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F2(FIGNORE)108 492 Q F0 +2.598(Ac)144 504 S .098(olon-separated list of suf)-2.598 F<8c78>-.25 E +.098(es to ignore when performing \214lename completion \(see)-.15 F F1 +(READLINE)2.599 E F0(belo)144 516 Q 2.705(w\). A)-.25 F .205 +(\214lename whose suf)2.705 F .205(\214x matches one of the entries in) +-.25 F F1(FIGNORE)2.705 E F0 .205(is e)2.455 F .204 +(xcluded from the list)-.15 F(of matched \214lenames.)144 528 Q 2.5(As)5 +G(ample v)-2.5 E(alue is)-.25 E F3(".o:~")2.5 E F0(.)A F2(FUNCNEST)108 +540 Q F0 .23(If set to a numeric v)144 552 R .231 (alue greater than 0, de\214nes a maximum function nesting le)-.25 F --.15(ve)-.25 G 2.73(l. Function).15 F(in)2.73 E -.2(vo)-.4 G(-).2 E -(cations that e)144 516 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G -2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1 -(GLOBIGNORE)108 528 Q F0 2.923(Ac)144 540 S .423(olon-separated list of\ +-.15(ve)-.25 G 2.731(l. Function).15 F(in)2.731 E -.2(vo)-.4 G(-).2 E +(cations that e)144 564 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G +2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F2 +(GLOBIGNORE)108 576 Q F0 2.924(Ac)144 588 S .423(olon-separated list of\ patterns de\214ning the set of \214le names to be ignored by pathname \ -e)-2.923 F(xpan-)-.15 E 2.948(sion. If)144 552 R 2.948<618c>2.948 G .448 -(le name matched by a pathname e)-2.948 F .447 -(xpansion pattern also matches one of the patterns in)-.15 F F3 -(GLOBIGNORE)144 564 Q F4(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df) -.15 G(rom the list of matches.)-2.5 E F1(HISTCONTR)108 576 Q(OL)-.3 E F0 -2.653(Ac)144 588 S .153(olon-separated list of v)-2.653 F .153 +e)-2.924 F(xpan-)-.15 E 2.947(sion. If)144 600 R 2.947<618c>2.947 G .447 +(le name matched by a pathname e)-2.947 F .448 +(xpansion pattern also matches one of the patterns in)-.15 F F1 +(GLOBIGNORE)144 612 Q F4(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df) +.15 G(rom the list of matches.)-2.5 E F2(HISTCONTR)108 624 Q(OL)-.3 E F0 +2.654(Ac)144 636 S .153(olon-separated list of v)-2.654 F .153 (alues controlling ho)-.25 F 2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15 G 2.653(nt)-2.653 G .153(he history list.) --2.653 F .154(If the list)5.153 F .491(of v)144 600 R .491 -(alues includes)-.25 F/F5 10/Times-Italic@0 SF(ignor)2.991 E(espace)-.37 -E F0 2.991(,l).18 G .491(ines which be)-2.991 F .491(gin with a)-.15 F -F1(space)2.991 E F0 .49(character are not sa)2.991 F -.15(ve)-.2 G 2.99 -(di).15 G 2.99(nt)-2.99 G .49(he his-)-2.99 F .557(tory list.)144 612 R -3.057(Av)5.557 G .557(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 -.557(causes lines matching the pre)3.327 F .558 -(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.926 -(Av)144 624 S .426(alue of)-3.176 F F5(ignor)2.936 E(eboth)-.37 E F0 -.426(is shorthand for)3.206 F F5(ignor)2.926 E(espace)-.37 E F0(and) -2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.501 G -.425(lue of).25 F F5(er)3.115 E(asedups)-.15 E F0(causes)3.195 E .698 -(all pre)144 636 R .698 +-2.653 F .153(If the list)5.153 F .49(of v)144 648 R .49(alues includes) +-.25 F F5(ignor)2.99 E(espace)-.37 E F0 2.99(,l).18 G .49(ines which be) +-2.99 F .491(gin with a)-.15 F F2(space)2.991 E F0 .491 +(character are not sa)2.991 F -.15(ve)-.2 G 2.991(di).15 G 2.991(nt) +-2.991 G .491(he his-)-2.991 F .558(tory list.)144 660 R 3.058(Av)5.558 +G .558(alue of)-3.308 F F5(ignor)3.068 E(edups)-.37 E F0 .558 +(causes lines matching the pre)3.328 F .557 +(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.925 +(Av)144 672 S .425(alue of)-3.175 F F5(ignor)2.935 E(eboth)-.37 E F0 +.426(is shorthand for)3.205 F F5(ignor)2.926 E(espace)-.37 E F0(and) +2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.5 G .426 +(lue of).25 F F5(er)3.116 E(asedups)-.15 E F0(causes)3.196 E .699 +(all pre)144 684 R .698 (vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G -3.198(df).15 G .699(rom the history list before that line is)-3.198 F -(sa)144 648 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264 -(alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263 -(ist is ignored.).15 F(If)5.263 E F3(HISTCONTR)2.763 E(OL)-.27 E F0 .263 -(is unset, or does not include)2.513 F 2.941(av)144 660 S .441(alid v) --3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F --.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442 -(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F3 -(HISTIGNORE)144 672 Q F4(.)A F0 1.981(The second and subsequent lines o\ -f a multi-line compound command are not)6.482 F -(tested, and are added to the history re)144 684 Q -.05(ga)-.15 G -(rdless of the v).05 E(alue of)-.25 E F3(HISTCONTR)2.5 E(OL)-.27 E F4(.) -A F1(HISTFILE)108 696 Q F0 .181 -(The name of the \214le in which command history is sa)144 708 R -.15 -(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F3(HIST)2.681 E(OR)-.162 E(Y) --.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v) --.1 F(alue)-.25 E(is)144 720 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5 -(fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5 -(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(15)193.45 E 0 Cg EP +3.198(df).15 G .698(rom the history list before that line is)-3.198 F +(sa)144 696 Q -.15(ve)-.2 G 2.763(d. An).15 F 2.763(yv)-.15 G .263 +(alue not in the abo)-3.013 F .563 -.15(ve l)-.15 H .263 +(ist is ignored.).15 F(If)5.263 E F1(HISTCONTR)2.763 E(OL)-.27 E F0 .264 +(is unset, or does not include)2.513 F 2.942(av)144 708 S .442(alid v) +-3.192 F .442(alue, all lines read by the shell parser are sa)-.25 F +-.15(ve)-.2 G 2.941(do).15 G 2.941(nt)-2.941 G .441 +(he history list, subject to the v)-2.941 F .441(alue of)-.25 F F1 +(HISTIGNORE)144 720 Q F4(.)A F0 1.981(The second and subsequent lines o\ +f a multi-line compound command are not)6.481 F(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(15)194.555 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(HISTFILESIZE)108 84 Q F0 1.623 -(The maximum number of lines contained in the history \214le.)144 96 R -1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144 -108 S .931(lue, the history \214le is truncated, if necessary).25 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(tested, and are added to the history re)144 84 Q -.05(ga)-.15 G +(rdless of the v).05 E(alue of)-.25 E/F1 9/Times-Bold@0 SF(HISTCONTR)2.5 +E(OL)-.27 E/F2 9/Times-Roman@0 SF(.)A/F3 10/Times-Bold@0 SF(HISTFILE)108 +96 Q F0 .181(The name of the \214le in which command history is sa)144 +108 R -.15(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F1(HIST)2.681 E(OR) +-.162 E(Y)-.315 E F0(belo)2.431 E 2.681(w\). The)-.25 F(def)2.681 E .181 +(ault v)-.1 F(alue)-.25 E(is)144 120 Q/F4 10/Times-Italic@0 SF +(~/.bash_history)2.5 E F0 5(.I)C 2.5(fu)-5 G +(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5(dw).15 G +(hen a shell e)-2.5 E(xits.)-.15 E F3(HISTFILESIZE)108 132 Q F0 1.622 +(The maximum number of lines contained in the history \214le.)144 144 R +1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25(va)144 +156 S .932(lue, the history \214le is truncated, if necessary).25 F 3.432(,t)-.65 G 3.432(oc)-3.432 G .932 -(ontain no more than that number of lines by)-3.432 F(remo)144 120 Q -.871(ving the oldest entries.)-.15 F .87(The history \214le is also tru\ -ncated to this size after writing it when a)5.871 F 1.244(shell e)144 -132 R 3.744(xits. If)-.15 F 1.244(the v)3.744 F 1.244 -(alue is 0, the history \214le is truncated to zero size.)-.25 F 1.245 -(Non-numeric v)6.244 F 1.245(alues and)-.25 F 1.022(numeric v)144 144 R +(ontain no more than that number of lines by)-3.432 F(remo)144 168 Q .87 +(ving the oldest entries.)-.15 F .871(The history \214le is also trunca\ +ted to this size after writing it when a)5.87 F 1.245(shell e)144 180 R +3.745(xits. If)-.15 F 1.244(the v)3.744 F 1.244 +(alue is 0, the history \214le is truncated to zero size.)-.25 F 1.244 +(Non-numeric v)6.244 F 1.244(alues and)-.25 F 1.021(numeric v)144 192 R 1.022(alues less than zero inhibit truncation.)-.25 F 1.022 (The shell sets the def)6.022 F 1.022(ault v)-.1 F 1.022(alue to the v) --.25 F 1.021(alue of)-.25 F F1(HISTSIZE)144 156 Q F0(after reading an) -2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 168 Q F0 -2.657(Ac)144 180 S .157(olon-separated list of patterns used to decide \ -which command lines should be sa)-2.657 F -.15(ve)-.2 G 2.658(do).15 G -2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 192 R .708 -(Each pattern is anchored at the be)5.708 F .707 -(ginning of the line and must match the complete line)-.15 F .625 -(\(no implicit `)144 204 R F1(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125 -(ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626 -(ainst the line after the checks speci\214ed by)-.05 F/F2 9/Times-Bold@0 -SF(HISTCONTR)144 216 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 +-.25 F 1.022(alue of)-.25 F F3(HISTSIZE)144 204 Q F0(after reading an) +2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F3(HISTIGNORE)108 216 Q F0 +2.658(Ac)144 228 S .158(olon-separated list of patterns used to decide \ +which command lines should be sa)-2.658 F -.15(ve)-.2 G 2.657(do).15 G +2.657(nt)-2.657 G .157(he his-)-2.657 F .707(tory list.)144 240 R .707 +(Each pattern is anchored at the be)5.707 F .708 +(ginning of the line and must match the complete line)-.15 F .626 +(\(no implicit `)144 252 R F3(*)A F0 3.126('i)C 3.126(sa)-3.126 G 3.126 +(ppended\). Each)-3.126 F .626(pattern is tested ag)3.126 F .625 +(ainst the line after the checks speci\214ed by)-.05 F F1(HISTCONTR)144 +264 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 (In addition to the normal shell pattern matching characters, `)6.793 F -F1(&)A F0(')A 2.514(matches the pre)144 228 R 2.514(vious history line.) --.25 F(`)7.514 E F1(&)A F0 5.014('m)C 2.514 -(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 240 -Q -.15(ve)-.15 G 3.353(db).15 G .853(efore attempting a match.)-3.353 F +F3(&)A F0(')A 2.515(matches the pre)144 276 R 2.515(vious history line.) +-.25 F(`)7.514 E F3(&)A F0 5.014('m)C 2.514 +(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 288 +Q -.15(ve)-.15 G 3.352(db).15 G .852(efore attempting a match.)-3.352 F .852(The second and subsequent lines of a multi-line compound)5.852 F -1.269(command are not tested, and are added to the history re)144 252 R --.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2 -(HISTIGNORE)3.77 E/F3 9/Times-Roman@0 SF(.)A F0 -(The pattern matching honors the setting of the)144 264 Q F1(extglob)2.5 -E F0(shell option.)2.5 E F1(HISTSIZE)108 276 Q F0 1.387 -(The number of commands to remember in the command history \(see)144 288 -R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) --.25 F(the)3.887 E -.25(va)144 300 S 1.32(lue is 0, commands are not sa) -.25 F -.15(ve)-.2 G 3.82(di).15 G 3.821(nt)-3.82 G 1.321 -(he history list.)-3.821 F 1.321(Numeric v)6.321 F 1.321 -(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 312 T .437 -(ry command being sa).25 F -.15(ve)-.2 G 2.937(do).15 G 2.937(nt)-2.937 -G .437(he history list \(there is no limit\).)-2.937 F .436 -(The shell sets the def)5.436 F .436(ault v)-.1 F(alue)-.25 E -(to 500 after reading an)144 324 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E -F1(HISTTIMEFORMA)108 336 Q(T)-.95 E F0 .951(If this v)144 348 R .951 -(ariable is set and not null, its v)-.25 F .952 -(alue is used as a format string for)-.25 F/F4 10/Times-Italic@0 SF -(strftime)3.452 E F0 .952(\(3\) to print the)B .673 -(time stamp associated with each history entry displayed by the)144 360 -R F1(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) -3.172 F .672(ariable is)-.25 F .144 -(set, time stamps are written to the history \214le so the)144 372 R +1.269(command are not tested, and are added to the history re)144 300 R +-.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F1 +(HISTIGNORE)3.769 E F2(.)A F0 +(The pattern matching honors the setting of the)144 312 Q F3(extglob)2.5 +E F0(shell option.)2.5 E F3(HISTSIZE)108 324 Q F0 1.387 +(The number of commands to remember in the command history \(see)144 336 +R F1(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) +-.25 F(the)3.888 E -.25(va)144 348 S 1.321 +(lue is 0, commands are not sa).25 F -.15(ve)-.2 G 3.821(di).15 G 3.821 +(nt)-3.821 G 1.321(he history list.)-3.821 F 1.32(Numeric v)6.32 F 1.32 +(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 360 T .436 +(ry command being sa).25 F -.15(ve)-.2 G 2.936(do).15 G 2.936(nt)-2.936 +G .436(he history list \(there is no limit\).)-2.936 F .437 +(The shell sets the def)5.437 F .437(ault v)-.1 F(alue)-.25 E +(to 500 after reading an)144 372 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E +F3(HISTTIMEFORMA)108 384 Q(T)-.95 E F0 .952(If this v)144 396 R .952 +(ariable is set and not null, its v)-.25 F .951 +(alue is used as a format string for)-.25 F F4(strftime)3.451 E F0 .951 +(\(3\) to print the)B .672 +(time stamp associated with each history entry displayed by the)144 408 +R F3(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v) +3.173 F .673(ariable is)-.25 F .144 +(set, time stamps are written to the history \214le so the)144 420 R 2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144 -(ed across shell sessions.)-.15 F(This)5.145 E(uses the history comment\ - character to distinguish timestamps from other history lines.)144 384 Q -F1(HOME)108 396 Q F0 1.27 -(The home directory of the current user; the def)144 408 R 1.27(ault ar) --.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27 -(iltin command.).2 F(The)6.27 E -.25(va)144 420 S(lue of this v).25 E -(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 -(HOSTFILE)108 432 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 444 R F4 +(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\ + character to distinguish timestamps from other history lines.)144 432 Q +F3(HOME)108 444 Q F0 1.27 +(The home directory of the current user; the def)144 456 R 1.27(ault ar) +-.1 F 1.27(gument for the)-.18 F F3(cd)3.77 E F0 -.2(bu)3.77 G 1.27 +(iltin command.).2 F(The)6.27 E -.25(va)144 468 S(lue of this v).25 E +(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F3 +(HOSTFILE)108 480 Q F0 1.015 +(Contains the name of a \214le in the same format as)144 492 R F4 (/etc/hosts)5.181 E F0 1.015(that should be read when the shell)5.181 F -.551(needs to complete a hostname.)144 456 R .551 +.55(needs to complete a hostname.)144 504 R .551 (The list of possible hostname completions may be changed while)5.551 F -1.058(the shell is running; the ne)144 468 R 1.059 -(xt time hostname completion is attempted after the v)-.15 F 1.059 -(alue is changed,)-.25 F F1(bash)144 480 Q F0 .138 -(adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e) --2.638 F .138(xisting list.)-.15 F(If)5.138 E F2(HOSTFILE)2.638 E F0 -.138(is set, b)2.388 F .138(ut has no v)-.2 F .138(alue, or)-.25 F .517 -(does not name a readable \214le,)144 492 R F1(bash)3.017 E F0 .517 -(attempts to read)3.017 F F4(/etc/hosts)4.684 E F0 .518 -(to obtain the list of possible host-)4.684 F(name completions.)144 504 -Q(When)5 E F2(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) -2.25 E F1(IFS)108 516 Q F0(The)144 516 Q F4 .556(Internal F)3.636 F .556 -(ield Separ)-.45 F(ator)-.15 E F0 .556(that is used for w)3.786 F .556 -(ord splitting after e)-.1 F .555(xpansion and to split lines into)-.15 -F -.1(wo)144 528 S(rds with the).1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2 +1.059(the shell is running; the ne)144 516 R 1.059 +(xt time hostname completion is attempted after the v)-.15 F 1.058 +(alue is changed,)-.25 F F3(bash)144 528 Q F0 .138 +(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e) +-2.638 F .138(xisting list.)-.15 F(If)5.138 E F1(HOSTFILE)2.638 E F0 +.138(is set, b)2.388 F .139(ut has no v)-.2 F .139(alue, or)-.25 F .518 +(does not name a readable \214le,)144 540 R F3(bash)3.018 E F0 .518 +(attempts to read)3.018 F F4(/etc/hosts)4.683 E F0 .517 +(to obtain the list of possible host-)4.683 F(name completions.)144 552 +Q(When)5 E F1(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) +2.25 E F3(IFS)108 564 Q F0(The)144 564 Q F4 .555(Internal F)3.635 F .555 +(ield Separ)-.45 F(ator)-.15 E F0 .555(that is used for w)3.785 F .556 +(ord splitting after e)-.1 F .556(xpansion and to split lines into)-.15 +F -.1(wo)144 576 S(rds with the).1 E F3 -.18(re)2.5 G(ad).18 E F0 -.2 (bu)2.5 G(iltin command.).2 E(The def)5 E(ault v)-.1 E(alue is `)-.25 E -(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 540 Q -F0 .503(Controls the action of an interacti)144 552 R .803 -.15(ve s) --.25 H .503(hell on receipt of an).15 F F2(EOF)3.003 E F0 .503 -(character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v) -144 564 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F2 +(`')-.25 E('.)-.74 E F3(IGNOREEOF)108 588 Q +F0 .503(Controls the action of an interacti)144 600 R .803 -.15(ve s) +-.25 H .503(hell on receipt of an).15 F F1(EOF)3.003 E F0 .503 +(character as the sole input.)2.753 F .503(If set,)5.503 F .426(the v) +144 612 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F1 (EOF)3.076 E F0 .426 -(characters which must be typed as the \214rst characters)2.676 F .302 -(on an input line before)144 576 R F1(bash)2.802 E F0 -.15(ex)2.802 G +(characters which must be typed as the \214rst characters)2.676 F .303 +(on an input line before)144 624 R F3(bash)2.802 E F0 -.15(ex)2.802 G 2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302 (xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302 -(umeric v).15 F .303(alue, or has)-.25 F(no v)144 588 Q(alue, the def) +(umeric v).15 F .302(alue, or has)-.25 F(no v)144 636 Q(alue, the def) -.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E -F2(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 -(INPUTRC)108 600 Q F0 1.436(The \214lename for the)144 612 R F1 -.18(re) +F1(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F3 +(INPUTRC)108 648 Q F0 1.435(The \214lename for the)144 660 R F3 -.18(re) 3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G 1.436(rriding the def).15 F 1.436(ault of)-.1 F F4(~/.inputr)5.602 E(c) --.37 E F0(\(see)5.601 E F2(READLINE)3.935 E F0(belo)144 624 Q(w\).)-.25 -E F1(LANG)108 636 Q F0 1.239(Used to determine the locale cate)144 636 R -1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 -(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E -(starting with)144 648 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 660 Q F0 .974 -(This v)144 672 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 -(rrides the v).15 F .973(alue of)-.25 F F2(LANG)3.473 E F0 .973(and an) -3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G -.973(riable specifying a locale cate-).25 F(gory)144 684 Q(.)-.65 E F1 -(LC_COLLA)108 696 Q(TE)-.95 E F0 .411(This v)144 708 R .412(ariable det\ -ermines the collation order used when sorting the results of pathname e) --.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 720 R 1.465 -(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G -1.464(lence classes, and collating sequences).25 F(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(16)193.45 E 0 Cg EP +-.37 E F0(\(see)5.602 E F1(READLINE)3.936 E F0(belo)144 672 Q(w\).)-.25 +E F3(INSIDE_EMA)108 684 Q(CS)-.55 E F0 .887(If this v)144 696 R .887 +(ariable appears in the en)-.25 F .886(vironment when the shell starts,) +-.4 F F3(bash)3.386 E F0 .886(assumes that it is running)3.386 F +(inside an Emacs shell b)144 708 Q(uf)-.2 E +(fer and may disable line editing, depending on the v)-.25 E(alue of) +-.25 E F3(TERM)2.5 E F0(.)A(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 +E(16)194.555 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(within pathname e) -144 84 Q(xpansion and pattern matching.)-.15 E/F1 10/Times-Bold@0 SF -(LC_CTYPE)108 96 Q F0 1.935(This v)144 108 R 1.936 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(LANG)108 84 Q F0 1.239(Used to determine the locale cate)144 84 R +1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 +(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E +(starting with)144 96 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 108 Q F0 .974 +(This v)144 120 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 +(rrides the v).15 F .973(alue of)-.25 F/F2 9/Times-Bold@0 SF(LANG)3.473 +E F0 .973(and an)3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 +-.25(va)3.473 G .973(riable specifying a locale cate-).25 F(gory)144 132 +Q(.)-.65 E F1(LC_COLLA)108 144 Q(TE)-.95 E F0 .411(This v)144 156 R .412 +(ariable determines the collation order used when sorting the results o\ +f pathname e)-.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 +168 R 1.465(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va) +-.25 G 1.464(lence classes, and collating sequences).25 F +(within pathname e)144 180 Q(xpansion and pattern matching.)-.15 E F1 +(LC_CTYPE)108 192 Q F0 1.935(This v)144 204 R 1.936 (ariable determines the interpretation of characters and the beha)-.25 F -1.936(vior of character classes)-.2 F(within pathname e)144 120 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 132 Q(GES)-.55 E -F0(This v)144 144 Q(ariable determines the locale used to translate dou\ +1.936(vior of character classes)-.2 F(within pathname e)144 216 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 228 Q(GES)-.55 E +F0(This v)144 240 Q(ariable determines the locale used to translate dou\ ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) -108 156 Q F0(This v)144 168 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LC_TIME)108 180 Q F0(This v) -144 192 Q(ariable determines the locale cate)-.25 E -(gory used for data and time formatting.)-.15 E F1(LINES)108 204 Q F0 -.055(Used by the)144 204 R F1(select)2.555 E F0 .054(compound command t\ +108 252 Q F0(This v)144 264 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LC_TIME)108 276 Q F0(This v) +144 288 Q(ariable determines the locale cate)-.25 E +(gory used for data and time formatting.)-.15 E F1(LINES)108 300 Q F0 +.055(Used by the)144 300 R F1(select)2.555 E F0 .054(compound command t\ o determine the column length for printing selection lists.)2.555 F .264 -(Automatically set if the)144 216 R F1(checkwinsize)2.764 E F0 .264 +(Automatically set if the)144 312 R F1(checkwinsize)2.764 E F0 .264 (option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265 -(hell upon receipt of a).15 F/F2 9/Times-Bold@0 SF(SIGWINCH)144 228 Q/F3 -9/Times-Roman@0 SF(.)A F1(MAIL)108 240 Q F0 1.201 -(If this parameter is set to a \214le or directory name and the)144 240 +(hell upon receipt of a).15 F F2(SIGWINCH)144 324 Q/F3 9/Times-Roman@0 +SF(.)A F1(MAIL)108 336 Q F0 1.201 +(If this parameter is set to a \214le or directory name and the)144 336 R F2(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 (riable is not set,).25 F F1(bash)3.701 E F0 -(informs the user of the arri)144 252 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +(informs the user of the arri)144 348 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 (fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E -(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 264 Q F0 .098 -(Speci\214es ho)144 276 R 2.598(wo)-.25 G .098(ften \(in seconds\)) +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 360 Q F0 .098 +(Speci\214es ho)144 372 R 2.598(wo)-.25 G .098(ften \(in seconds\)) -2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) 5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224 (to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 288 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F -(or set to a v)144 300 Q(alue that is not a number greater than or equa\ -l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 312 Q --.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 324 S .49 +mpt.)144 384 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F +(or set to a v)144 396 Q(alue that is not a number greater than or equa\ +l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 408 Q +-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 420 S .49 (olon-separated list of \214lenames to be check)-2.99 F .49 (ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri) -144 336 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ +144 432 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ \214le may be speci\214ed by separating the \214lename from the message\ - with a `?'.)-2.62 F(When used in the te)144 348 Q(xt of the message,) + with a `?'.)-2.62 F(When used in the te)144 444 Q(xt of the message,) -.15 E F1($_)2.5 E F0 -.15(ex)2.5 G (pands to the name of the current mail\214le.).15 E(Example:)5 E F1 -(MAILP)144 360 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) +(MAILP)144 456 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) -.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H -(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 372 Q F0 .015 +(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 468 Q F0 .015 (can be con\214gured to supply a def)2.515 F .015(ault v)-.1 F .015 (alue for this v)-.25 F .015(ariable \(there is no v)-.25 F .015 (alue by def)-.25 F .015(ault\), b)-.1 F(ut)-.2 E(the location of the u\ -ser mail \214les that it uses is system dependent \(e.g., /v)144 384 Q -(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 396 Q F0 .39 -(If set to the v)144 408 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389 +ser mail \214les that it uses is system dependent \(e.g., /v)144 480 Q +(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 492 Q F0 .39 +(If set to the v)144 504 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389 (displays error messages generated by the)2.889 F F1(getopts)2.889 E F0 --.2(bu)2.889 G .389(iltin command \(see).2 F F2 .359(SHELL B)144 420 R +-.2(bu)2.889 G .389(iltin command \(see).2 F F2 .359(SHELL B)144 516 R (UIL)-.09 E .359(TIN COMMANDS)-.828 F F0(belo)2.609 E(w\).)-.25 E F2 (OPTERR)5.359 E F0 .36(is initialized to 1 each time the shell is in) -2.609 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 432 Q --.15(xe)-.15 G(cuted.).15 E F1 -.74(PA)108 444 S(TH)-.21 E F0 .588 -(The search path for commands.)144 444 R .587 +2.609 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 528 Q +-.15(xe)-.15 G(cuted.).15 E F1 -.74(PA)108 540 S(TH)-.21 E F0 .588 +(The search path for commands.)144 540 R .587 (It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 456 R F2 .471(COMMAND EXECUTION) +5.588 F .471(for commands \(see)144 552 R F2 .471(COMMAND EXECUTION) 2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472 -(zero-length \(null\) directory name in the)2.972 F -.25(va)144 468 S +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 564 S .536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535 (indicates the current directory)2.786 F 5.535(.A)-.65 G .535 (null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent) --3.035 E .867(colons, or as an initial or trailing colon.)144 480 R .868 +-3.035 E .867(colons, or as an initial or trailing colon.)144 576 R .868 (The def)5.868 F .868(ault path is system-dependent, and is set by the) --.1 F(administrator who installs)144 492 Q F1(bash)2.5 E F0 5(.A)C +-.1 F(administrator who installs)144 588 Q F1(bash)2.5 E F0 5(.A)C (common v)-2.5 E(alue is)-.25 E/F4 10/Courier@0 SF -(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 504 Q -F0(.)A F1(POSIXL)108 516 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 528 R +(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 600 Q +F0(.)A F1(POSIXL)108 612 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 624 R .471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash)2.971 E F0 .471(starts, the shell enters)2.971 F/F5 10/Times-Italic@0 SF .472 (posix mode)2.972 F F0 .472(before reading)2.972 F .011 -(the startup \214les, as if the)144 540 R F1(\255\255posix)2.511 E F0 +(the startup \214les, as if the)144 636 R F1(\255\255posix)2.511 E F0 (in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F .011 -(If it is set while the shell is)5.011 F(running,)144 552 Q F1(bash)2.5 -E F0(enables)2.5 E F5(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft) --2.5 G(he command)-2.5 E F4(set -o posix)2.5 E F0(had been e)2.5 E -.15 -(xe)-.15 G(cuted.).15 E F1(PR)108 564 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 576 Q(alue is e)-.25 E -.15(xe)-.15 G +(If it is set while the shell is)5.011 F(running,)144 648 Q F1(bash) +4.497 E F0(enables)4.497 E F5 1.997(posix mode)4.497 F F0 4.497(,a)C +4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F4 1.997 +(set -o posix)4.497 F F0 1.998(had been e)4.497 F -.15(xe)-.15 G(cuted.) +.15 E(When the shell enters)144 660 Q F5(posix mode)2.5 E F0 2.5(,i)C +2.5(ts)-2.5 G(ets this v)-2.5 E(ariable if it w)-.25 E +(as not already set.)-.1 E F1(PR)108 672 Q(OMPT_COMMAND)-.3 E F0 +(If set, the v)144 684 Q(alue is e)-.25 E -.15(xe)-.15 G (cuted as a command prior to issuing each primary prompt.).15 E F1(PR) -108 588 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 -(If set to a number greater than zero, the v)144 600 R .676 +108 696 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 +(If set to a number greater than zero, the v)144 708 R .676 (alue is used as the number of trailing directory compo-)-.25 F .923 -(nents to retain when e)144 612 R .923(xpanding the)-.15 F F1(\\w)3.423 +(nents to retain when e)144 720 R .923(xpanding the)-.15 F F1(\\w)3.423 E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) 3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E -(Characters remo)144 624 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS0)108 636 Q F0 1.174(The v) -144 636 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) --.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 -(w\) and displayed by interacti)-.25 F -.15(ve)-.25 G -(shells after reading a command and before the command is e)144 648 Q --.15(xe)-.15 G(cuted.).15 E F1(PS1)108 660 Q F0 .065(The v)144 660 R -.065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR) -2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 -(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 672 R -(def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 --.74('')2.5 G(.).74 E F1(PS2)108 684 Q F0 .117(The v)144 684 R .117 -(alue of this parameter is e)-.25 F .117(xpanded as with)-.15 F F2(PS1) -2.617 E F0 .118(and used as the secondary prompt string.)2.368 F(The) -5.118 E(def)144 696 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E F1(PS3)108 708 Q F0 1.116(The v)144 708 R 1.115 -(alue of this parameter is used as the prompt for the)-.25 F F1(select) -3.615 E F0 1.115(command \(see)3.615 F F2 1.115(SHELL GRAM-)3.615 F(MAR) -144 720 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(17)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(17)194.555 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(PS4)108 84 Q F0 .1(The v)144 84 R .1(alue of this parameter is e)-.25 -F .1(xpanded as with)-.15 F/F2 9/Times-Bold@0 SF(PS1)2.6 E F0 .101 -(and the v)2.35 F .101(alue is printed before each command)-.25 F F1 -(bash)144 96 Q F0 .335(displays during an e)2.835 F -.15(xe)-.15 G .335 -(cution trace.).15 F .335(The \214rst character of the e)5.335 F .335 -(xpanded v)-.15 F .335(alue of)-.25 F F2(PS4)2.834 E F0 .334(is repli-) -2.584 F(cated multiple times, as necessary)144 108 Q 2.5(,t)-.65 G 2.5 -(oi)-2.5 G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.) -.15 E(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 -E F1(SHELL)108 120 Q F0 .663(The full pathname to the shell is k)144 132 -R .664(ept in this en)-.1 F .664(vironment v)-.4 F 3.164(ariable. If) --.25 F .664(it is not set when the shell)3.164 F(starts,)144 144 Q F1 -(bash)2.5 E F0(assigns to it the full pathname of the current user')2.5 -E 2.5(sl)-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 156 Q(T)-.95 E F0 -.827(The v)144 168 R .826 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Characters remo) +144 84 Q -.15(ve)-.15 G 2.5(da).15 G(re replaced with an ellipsis.)-2.5 +E/F1 10/Times-Bold@0 SF(PS0)108 96 Q F0 1.174(The v)144 96 R 1.174 +(alue of this parameter is e)-.25 F 1.174(xpanded \(see)-.15 F/F2 9 +/Times-Bold@0 SF(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 +(w\) and displayed by interacti)-.25 F -.15(ve)-.25 G +(shells after reading a command and before the command is e)144 108 Q +-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 120 Q F0 .064(The v)144 120 R +.065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR) +2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 +(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 132 R +(def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 +-.74('')2.5 G(.).74 E F1(PS2)108 144 Q F0 .118(The v)144 144 R .118 +(alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F F2(PS1) +2.617 E F0 .117(and used as the secondary prompt string.)2.367 F(The) +5.117 E(def)144 156 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 168 Q F0 1.115(The v)144 168 R 1.115 +(alue of this parameter is used as the prompt for the)-.25 F F1(select) +3.615 E F0 1.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR) +144 180 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 192 Q F0 +.101(The v)144 192 R .101(alue of this parameter is e)-.25 F .101 +(xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1 +(alue is printed before each command)-.25 F F1(bash)144 204 Q F0 .334 +(displays during an e)2.834 F -.15(xe)-.15 G .335(cution trace.).15 F +.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335 +(alue of)-.25 F F2(PS4)2.835 E F0 .335(is repli-)2.585 F +(cated multiple times, as necessary)144 216 Q 2.5(,t)-.65 G 2.5(oi)-2.5 +G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.).15 E +(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 E F1 +(SHELL)108 228 Q F0 .664(The full pathname to the shell is k)144 240 R +.664(ept in this en)-.1 F .664(vironment v)-.4 F 3.164(ariable. If)-.25 +F .663(it is not set when the shell)3.164 F(starts,)144 252 Q F1(bash) +2.5 E F0(assigns to it the full pathname of the current user')2.5 E 2.5 +(sl)-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 264 Q(T)-.95 E F0 .826 +(The v)144 276 R .826 (alue of this parameter is used as a format string specifying ho)-.25 F -3.326(wt)-.25 G .826(he timing information for)-3.326 F .648 -(pipelines pre\214x)144 180 R .648(ed with the)-.15 F F1(time)3.148 E F0 -(reserv)3.148 E .648(ed w)-.15 F .649(ord should be displayed.)-.1 F -(The)5.649 E F1(%)3.149 E F0 .649(character introduces)3.149 F .712 -(an escape sequence that is e)144 192 R .711(xpanded to a time v)-.15 F -.711(alue or other information.)-.25 F .711(The escape sequences)5.711 F -(and their meanings are as follo)144 204 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 222 Q F0 2.5 -(Al)194 222 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 234 Q/F3 10 +3.327(wt)-.25 G .827(he timing information for)-3.327 F .649 +(pipelines pre\214x)144 288 R .649(ed with the)-.15 F F1(time)3.149 E F0 +(reserv)3.149 E .649(ed w)-.15 F .648(ord should be displayed.)-.1 F +(The)5.648 E F1(%)3.148 E F0 .648(character introduces)3.148 F .711 +(an escape sequence that is e)144 300 R .711(xpanded to a time v)-.15 F +.712(alue or other information.)-.25 F .712(The escape sequences)5.712 F +(and their meanings are as follo)144 312 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 330 Q F0 2.5 +(Al)194 330 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 342 Q/F3 10 /Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)194 -234 Q F1(%[)144 246 Q F3(p)A F1(][l]U)A F0 -(The number of CPU seconds spent in user mode.)194 246 Q F1(%[)144 258 Q +342 Q F1(%[)144 354 Q F3(p)A F1(][l]U)A F0 +(The number of CPU seconds spent in user mode.)194 354 Q F1(%[)144 366 Q F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.)194 -258 Q F1(%P)144 270 Q F0 -(The CPU percentage, computed as \(%U + %S\) / %R.)194 270 Q .87 -(The optional)144 286.8 R F3(p)3.37 E F0 .87(is a digit specifying the) +366 Q F1(%P)144 378 Q F0 +(The CPU percentage, computed as \(%U + %S\) / %R.)194 378 Q .87 +(The optional)144 394.8 R F3(p)3.37 E F0 .87(is a digit specifying the) 3.37 F F3(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 -(he number of fractional digits after a decimal)-3.37 F 2.526(point. A) -144 298.8 R -.25(va)2.526 G .025 -(lue of 0 causes no decimal point or fraction to be output.).25 F .025 -(At most three places after the)5.025 F .537 -(decimal point may be speci\214ed; v)144 310.8 R .537(alues of)-.25 F F3 -(p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E -F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 322.8 Q -(alue 3 is used.)-.25 E .668(The optional)144 339.6 R F1(l)3.168 E F0 +(he number of fractional digits after a decimal)-3.37 F 2.525(point. A) +144 406.8 R -.25(va)2.525 G .025 +(lue of 0 causes no decimal point or fraction to be output.).25 F .026 +(At most three places after the)5.025 F .538 +(decimal point may be speci\214ed; v)144 418.8 R .538(alues of)-.25 F F3 +(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E +F3(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 430.8 Q +(alue 3 is used.)-.25 E .667(The optional)144 447.6 R F1(l)3.167 E F0 .668(speci\214es a longer format, including minutes, of the form)3.168 F -F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.167(s. The)B -.25(va) -3.167 G(lue).25 E(of)144 351.6 Q F3(p)2.5 E F0 -(determines whether or not the fraction is included.)2.5 E 13.364 -(If this v)144 368.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 -E F0 13.365(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) -144 380.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.168(s. The)B -.25(va) +3.168 G(lue).25 E(of)144 459.6 Q F3(p)2.5 E F0 +(determines whether or not the fraction is included.)2.5 E 13.365 +(If this v)144 476.4 R 13.365(ariable is not set,)-.25 F F1(bash)15.865 +E F0 13.364(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) +144 488.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 (.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113 (alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 -392.4 R(trailing ne)2.5 E +500.4 R(trailing ne)2.5 E (wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 -404.4 Q F0 .941(If set to a v)144 416.4 R .941(alue greater than zero,) +512.4 Q F0 .941(If set to a v)144 524.4 R .941(alue greater than zero,) -.25 F F2(TMOUT)3.441 E F0 .941(is treated as the def)3.191 F .941 (ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 -G(iltin.).2 E(The)144 428.4 Q F1(select)2.811 E F0 .311 -(command terminates if input does not arri)2.811 F .61 -.15(ve a)-.25 H -(fter).15 E F2(TMOUT)2.81 E F0 .31(seconds when input is com-)2.56 F -.885(ing from a terminal.)144 440.4 R .885(In an interacti)5.885 F 1.185 --.15(ve s)-.25 H .885(hell, the v).15 F .886 -(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 452.4 +G(iltin.).2 E(The)144 536.4 Q F1(select)2.81 E F0 .31 +(command terminates if input does not arri)2.81 F .611 -.15(ve a)-.25 H +(fter).15 E F2(TMOUT)2.811 E F0 .311(seconds when input is com-)2.561 F +.886(ing from a terminal.)144 548.4 R .886(In an interacti)5.886 F 1.185 +-.15(ve s)-.25 H .885(hell, the v).15 F .885 +(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 560.4 S 1.05(it for a line of input after issuing the primary prompt.).1 F F1 (Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1 -F(number of seconds if a complete line of input does not arri)144 464.4 -Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 476.4 Q F0 .39(If set,)144 488.4 -R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39 -(alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391 -(creates temporary \214les for the)2.891 F(shell')144 500.4 Q 2.5(su) --.55 G(se.)-2.5 E F1(auto_r)108 512.4 Q(esume)-.18 E F0 .531(This v)144 -524.4 R .531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 -(he shell interacts with the user and job control.)-3.031 F .53 -(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 536.4 R +F(number of seconds if a complete line of input does not arri)144 572.4 +Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 584.4 Q F0 .391(If set,)144 596.4 +R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391 +(alue as the name of a directory in which)-.25 F F1(bash)2.89 E F0 .39 +(creates temporary \214les for the)2.89 F(shell')144 608.4 Q 2.5(su)-.55 +G(se.)-2.5 E F1(auto_r)108 620.4 Q(esume)-.18 E F0 .53(This v)144 632.4 +R .53(ariable controls ho)-.25 F 3.03(wt)-.25 G .531 +(he shell interacts with the user and job control.)-3.03 F .531 +(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 644.4 R .538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 548.4 S .367(isting stopped job) -.15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366 -(wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F -1.124(the string typed, the job most recently accessed is selected.)144 -560.4 R(The)6.125 E F3(name)3.985 E F0 1.125(of a stopped job, in this) -3.805 F(conte)144 572.4 Q 1.133 + for resumption of an)-.1 F -.15(ex)144 656.4 S .366(isting stopped job) +.15 F 5.366(.T)-.4 G .366(here is no ambiguity allo)-5.366 F .366 +(wed; if there is more than one job be)-.25 F .367(ginning with)-.15 F +1.125(the string typed, the job most recently accessed is selected.)144 +668.4 R(The)6.125 E F3(name)3.985 E F0 1.124(of a stopped job, in this) +3.805 F(conte)144 680.4 Q 1.132 (xt, is the command line used to start it.)-.15 F 1.133(If set to the v) -6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132 -(he string supplied must)-3.632 F .624 -(match the name of a stopped job e)144 584.4 R .624(xactly; if set to) --.15 F F3(substring)3.125 E F0 3.125(,t).22 G .625 -(he string supplied needs to match a)-3.125 F .885 -(substring of the name of a stopped job)144 596.4 R 5.884(.T)-.4 G(he) --5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884 -(vides functionality analogous to)-.15 F(the)144 608.4 Q F1(%?)3.333 E -F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 +6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133 +(he string supplied must)-3.633 F .625 +(match the name of a stopped job e)144 692.4 R .624(xactly; if set to) +-.15 F F3(substring)3.124 E F0 3.124(,t).22 G .624 +(he string supplied needs to match a)-3.124 F .884 +(substring of the name of a stopped job)144 704.4 R 5.884(.T)-.4 G(he) +-5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 +(vides functionality analogous to)-.15 F(the)144 716.4 Q F1(%?)3.334 E +F0 .834(job identi\214er \(see)5.834 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) --.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316 -(must be a pre\214x of a stopped job')144 620.4 R 2.816(sn)-.55 G .316 -(ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F -F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 632.4 Q(.)-.55 -E F1(histchars)108 644.4 Q F0 2.069(The tw)144 656.4 R 4.57(oo)-.1 G -4.57(rt)-4.57 G 2.07(hree characters which control history e)-4.57 F -2.07(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.57 E -(OR)-.162 E(Y)-.315 E(EXP)144 668.4 Q(ANSION)-.666 E F0(belo)3.466 E -3.716(w\). The)-.25 F 1.216(\214rst character is the)3.716 F F3 1.215 -(history e)3.715 F(xpansion)-.2 E F0(character)3.715 E 3.715(,t)-.4 G -1.215(he character which)-3.715 F .798(signals the start of a history e) -144 680.4 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B -.798(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G -(ubstitu-)-3.298 E(tion)144 692.4 Q F0(character)2.74 E 2.74(,w)-.4 G -.239(hich is used as shorthand for re-running the pre)-2.74 F .239 -(vious command entered, substitut-)-.25 F .575 -(ing one string for another in the command.)144 704.4 R .575(The def) -5.575 F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576 -(optional third character is the)3.076 F .223(character which indicates\ - that the remainder of the line is a comment when found as the \214rst \ -char)144 716.4 R(-)-.2 E 1.293(acter of a w)144 728.4 R 1.293 -(ord, normally `)-.1 F F1(#)A F0 3.793('. The)B 1.294 -(history comment character causes history substitution to be)3.794 F -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(18)193.45 E 0 Cg EP +-.15 G .834(ther v)-3.334 F .833(alue, the supplied string)-.25 F .315 +(must be a pre\214x of a stopped job')144 728.4 R 2.816(sn)-.55 G .316 +(ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F +F1(%)2.816 E F3(string)A F0(job)2.816 E(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(18)194.555 E 0 Cg EP %%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .38 -(skipped for the remaining w)144 84 R .38(ords on the line.)-.1 F .379 -(It does not necessarily cause the shell parser to treat)5.379 F -(the rest of the line as a comment.)144 96 Q/F1 10/Times-Bold@0 SF -(Arrays)87 112.8 Q(Bash)108 124.8 Q F0(pro)3.39 E .89 -(vides one-dimensional inde)-.15 F -.15(xe)-.15 G 3.39(da).15 G .891 -(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H .891(rray v).15 F 3.391 -(ariables. An)-.25 F 3.391(yv)-.15 G .891(ariable may be used as an) --3.641 F(inde)108 136.8 Q -.15(xe)-.15 G 2.574(da).15 G .074(rray; the) --2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2(bu)2.574 G .074(iltin will e) -.2 F .073(xplicitly declare an array)-.15 F 5.073(.T)-.65 G .073 -(here is no maximum limit on the size of)-5.073 F .328(an array)108 -148.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr)-.15 G .329 -(equirement that members be inde)-2.828 F -.15(xe)-.15 G 2.829(do).15 G -2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F 5.329(.I)-.65 G -(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329(rrays are refer)-2.829 -F(-)-.2 E 1.595(enced using inte)108 160.8 R 1.595 -(gers \(including arithmetic e)-.15 F 1.595 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(identi\214er)144 +84 Q(.)-.55 E/F1 10/Times-Bold@0 SF(histchars)108 96 Q F0 2.07(The tw) +144 108 R 4.57(oo)-.1 G 4.57(rt)-4.57 G 2.07 +(hree characters which control history e)-4.57 F 2.07(xpansion and tok) +-.15 F 2.07(enization \(see)-.1 F/F2 9/Times-Bold@0 SF(HIST)4.569 E(OR) +-.162 E(Y)-.315 E(EXP)144 120 Q(ANSION)-.666 E F0(belo)3.465 E 3.715 +(w\). The)-.25 F 1.215(\214rst character is the)3.715 F/F3 10 +/Times-Italic@0 SF 1.216(history e)3.715 F(xpansion)-.2 E F0(character) +3.716 E 3.716(,t)-.4 G 1.216(he character which)-3.716 F .798 +(signals the start of a history e)144 132 R .798(xpansion, normally `) +-.15 F F1(!)A F0 3.298('. The)B .798(second character is the)3.298 F F3 +(quic)3.298 E 3.298(ks)-.2 G(ubstitu-)-3.298 E(tion)144 144 Q F0 +(character)2.739 E 2.739(,w)-.4 G .239 +(hich is used as shorthand for re-running the pre)-2.739 F .24 +(vious command entered, substitut-)-.25 F .576 +(ing one string for another in the command.)144 156 R .575(The def)5.575 +F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .575 +(optional third character is the)3.075 F .223(character which indicates\ + that the remainder of the line is a comment when found as the \214rst \ +char)144 168 R(-)-.2 E 1.294(acter of a w)144 180 R 1.294 +(ord, normally `)-.1 F F1(#)A F0 3.794('. The)B 1.293 +(history comment character causes history substitution to be)3.794 F +.379(skipped for the remaining w)144 192 R .379(ords on the line.)-.1 F +.38(It does not necessarily cause the shell parser to treat)5.379 F +(the rest of the line as a comment.)144 204 Q F1(Arrays)87 220.8 Q(Bash) +108 232.8 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15 +(xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15(ve a) +-.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .89 +(ariable may be used as an)-3.641 F(inde)108 244.8 Q -.15(xe)-.15 G +2.573(da).15 G .073(rray; the)-2.573 F F1(declar)2.573 E(e)-.18 E F0 -.2 +(bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15 +F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F +.329(an array)108 256.8 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr) +-.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G +2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F +5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328 +(rrays are refer)-2.828 F(-)-.2 E 1.595(enced using inte)108 268.8 R +1.595(gers \(including arithmetic e)-.15 F 1.595 (xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25 H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108 -172.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G +280.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G (rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15 -(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 189.6 R -.15(xe) --.15 G 4.962(da).15 G 2.462(rray is created automatically if an)-4.962 F -4.963(yv)-.15 G 2.463(ariable is assigned to using the syntax)-5.213 F -/F2 10/Times-Italic@0 SF(name)4.963 E F0([)A F2(sub-)A(script)108 201.6 -Q F0(]=)A F2(value)A F0 6.549(.T)C(he)-6.549 E F2(subscript)4.389 E F0 -1.549(is treated as an arithmetic e)4.729 F 1.549(xpression that must e) --.15 F -.25(va)-.25 G 1.548(luate to a number).25 F 6.548(.T)-.55 G(o) --7.348 E -.15(ex)108 213.6 S 1.979(plicitly declare an inde).15 F -.15 -(xe)-.15 G 4.479(da).15 G(rray)-4.479 E 4.48(,u)-.65 G(se)-4.48 E F1 -(declar)4.48 E 4.48<65ad>-.18 G(a)-4.48 E F2(name)4.48 E F0(\(see)4.48 E -/F3 9/Times-Bold@0 SF 1.98(SHELL B)4.48 F(UIL)-.09 E 1.98(TIN COMMANDS) --.828 F F0(belo)4.23 E(w\).)-.25 E F1(declar)108 225.6 Q 2.5<65ad>-.18 G -(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0 -(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E -(Associati)108 242.4 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E -F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108 -259.2 Q .941(utes may be speci\214ed for an array v)-.2 F .941 -(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.44 E F1 --.18(re)3.44 G(adonly).18 E F0 -.2(bu)3.44 G 3.44(iltins. Each).2 F -(attrib)3.44 E(ute)-.2 E(applies to all members of an array)108 271.2 Q -(.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 288 R -F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647 -(... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.148(,w)C 1.648(here each) --4.148 F F2(value)108 300 Q F0 1.833(is of the form [)4.333 F F2 -(subscript)A F0(]=)A F2(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 -G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.832 -(ything b)-.15 F(ut)-.2 E F2(string)4.332 E F0(.)A .163 -(When assigning to inde)108 312 R -.15(xe)-.15 G 2.663(da).15 G .163 +(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 297.6 R -.15(xe) +-.15 G 4.963(da).15 G 2.463(rray is created automatically if an)-4.963 F +4.963(yv)-.15 G 2.462(ariable is assigned to using the syntax)-5.213 F +F3(name)4.962 E F0([)A F3(sub-)A(script)108 309.6 Q F0(]=)A F3(value)A +F0 6.548(.T)C(he)-6.548 E F3(subscript)4.388 E F0 1.549 +(is treated as an arithmetic e)4.728 F 1.549(xpression that must e)-.15 +F -.25(va)-.25 G 1.549(luate to a number).25 F 6.549(.T)-.55 G(o)-7.349 +E -.15(ex)108 321.6 S 1.98(plicitly declare an inde).15 F -.15(xe)-.15 G +4.48(da).15 G(rray)-4.48 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48 E +4.48<65ad>-.18 G(a)-4.48 E F3(name)4.48 E F0(\(see)4.48 E F2 1.979 +(SHELL B)4.479 F(UIL)-.09 E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E +(w\).)-.25 E F1(declar)108 333.6 Q 2.5<65ad>-.18 G(a)-2.5 E F3(name)2.5 +E F1([)A F3(subscript)A F1(])A F0(is also accepted; the)2.5 E F3 +(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 350.4 Q .3 -.15 +(ve a)-.25 H(rrays are created using).15 E F1(declar)2.5 E 2.5<65ad>-.18 +G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 367.2 Q .94 +(utes may be speci\214ed for an array v)-.2 F .941(ariable using the) +-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1 -.18(re)3.441 G +(adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F(attrib)3.441 E +(ute)-.2 E(applies to all members of an array)108 379.2 Q(.)-.65 E 1.647 +(Arrays are assigned to using compound assignments of the form)108 396 R +F3(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F3(1)A F0 1.647 +(... v)4.147 F(alue)-.25 E F3(n)A F1(\))A F0 4.147(,w)C 1.647(here each) +-4.147 F F3(value)108 408 Q F0 1.833(is of the form [)4.332 F F3 +(subscript)A F0(]=)A F3(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 +G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.833 +(ything b)-.15 F(ut)-.2 E F3(string)4.333 E F0(.)A .164 +(When assigning to inde)108 420 R -.15(xe)-.15 G 2.663(da).15 G .163 (rrays, if the optional brack)-2.663 F .163 -(ets and subscript are supplied, that inde)-.1 F 2.664(xi)-.15 G 2.664 -(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 324 R -3.911(xo)-.15 G 3.911(ft)-3.911 G 1.411 -(he element assigned is the last inde)-3.911 F 3.91(xa)-.15 G 1.41 -(ssigned to by the statement plus one.)-3.91 F(Inde)108 336 Q -(xing starts at zero.)-.15 E(When assigning to an associati)108 352.8 Q -.3 -.15(ve a)-.25 H(rray).15 E 2.5(,t)-.65 G(he subscript is required.) --2.5 E .239(This syntax is also accepted by the)108 369.6 R F1(declar) -2.739 E(e)-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .24 -(vidual array elements may be assigned to using the)-.25 F F2(name)108 -381.6 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0 1.917 -(syntax introduced abo)4.417 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 +(ets and subscript are supplied, that inde)-.1 F 2.663(xi)-.15 G 2.663 +(sa)-2.663 G(ssigned)-2.663 E 1.41(to; otherwise the inde)108 432 R 3.91 +(xo)-.15 G 3.91(ft)-3.91 G 1.41(he element assigned is the last inde) +-3.91 F 3.911(xa)-.15 G 1.411(ssigned to by the statement plus one.) +-3.911 F(Inde)108 444 Q(xing starts at zero.)-.15 E +(When assigning to an associati)108 460.8 Q .3 -.15(ve a)-.25 H(rray).15 +E 2.5(,t)-.65 G(he subscript is required.)-2.5 E .24 +(This syntax is also accepted by the)108 477.6 R F1(declar)2.74 E(e)-.18 +E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239 +(vidual array elements may be assigned to using the)-.25 F F3(name)108 +489.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917 +(syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 (hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) --4.417 E 4.417(,i)-.65 G(f)-4.417 E F2(name)4.777 E F0 1.916(is sub-) -4.597 F .115(scripted by a ne)108 393.6 R -.05(ga)-.15 G(ti).05 E .415 --.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115 -(hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H -2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E -(of)108 405.6 Q F2(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 +-4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.917(is sub-) +4.597 F .116(scripted by a ne)108 501.6 R -.05(ga)-.15 G(ti).05 E .416 +-.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115 +(hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H +2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E +(of)108 513.6 Q F3(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 -.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838 (ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838 (nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338 -G .838(eferences the last)-3.338 F(element.)108 417.6 Q(An)108 434.4 Q -3.575(ye)-.15 G 1.075(lement of an array may be referenced using ${) --3.575 F F2(name)A F0([)A F2(subscript)A F0 3.575(]}. The)B 1.076 -(braces are required to a)3.576 F -.2(vo)-.2 G(id).2 E 1.542 -(con\215icts with pathname e)108 446.4 R 4.041(xpansion. If)-.15 F F2 +G .838(eferences the last)-3.338 F(element.)108 525.6 Q(An)108 542.4 Q +3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${) +-3.576 F F3(name)A F0([)A F3(subscript)A F0 3.575(]}. The)B 1.075 +(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541 +(con\215icts with pathname e)108 554.4 R 4.041(xpansion. If)-.15 F F3 (subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0(or)4.041 E F1(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 -(xpands to all members of)-.15 F F2(name)4.041 E F0(.)A 1.056 -(These subscripts dif)108 458.4 R 1.056(fer only when the w)-.25 F 1.057 -(ord appears within double quotes.)-.1 F 1.057(If the w)6.057 F 1.057 -(ord is double-quoted,)-.1 F(${)108 470.4 Q F2(name)A F0 .521([*]} e)B -.521(xpands to a single w)-.15 F .521(ord with the v)-.1 F .52 +(xpands to all members of)-.15 F F3(name)4.042 E F0(.)A 1.057 +(These subscripts dif)108 566.4 R 1.057(fer only when the w)-.25 F 1.057 +(ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056 +(ord is double-quoted,)-.1 F(${)108 578.4 Q F3(name)A F0 .52([*]} e)B +.52(xpands to a single w)-.15 F .52(ord with the v)-.1 F .521 (alue of each array member separated by the \214rst character)-.25 F -1.374(of the)108 482.4 R F3(IFS)3.874 E F0 1.374(special v)3.624 F 1.375 -(ariable, and ${)-.25 F F2(name)A F0 1.375([@]} e)B 1.375 -(xpands each element of)-.15 F F2(name)3.875 E F0 1.375(to a separate w) -3.875 F 3.875(ord. When)-.1 F 2.028(there are no array members, ${)108 -494.4 R F2(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F -2.027(If the double-quoted e)7.028 F 2.027(xpansion occurs)-.15 F .758 -(within a w)108 506.4 R .759(ord, the e)-.1 F .759 +1.375(of the)108 590.4 R F2(IFS)3.875 E F0 1.375(special v)3.625 F 1.375 +(ariable, and ${)-.25 F F3(name)A F0 1.375([@]} e)B 1.375 +(xpands each element of)-.15 F F3(name)3.875 E F0 1.374(to a separate w) +3.875 F 3.874(ord. When)-.1 F 2.027(there are no array members, ${)108 +602.4 R F3(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F +2.028(If the double-quoted e)7.028 F 2.028(xpansion occurs)-.15 F .759 +(within a w)108 614.4 R .759(ord, the e)-.1 F .759 (xpansion of the \214rst parameter is joined with the be)-.15 F .759 -(ginning part of the original w)-.15 F(ord,)-.1 E .516(and the e)108 -518.4 R .516(xpansion of the last parameter is joined with the last par\ -t of the original w)-.15 F 3.015(ord. This)-.1 F .515(is analogous)3.015 -F .227(to the e)108 530.4 R .228(xpansion of the special parameters)-.15 +(ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e)108 +626.4 R .516(xpansion of the last parameter is joined with the last par\ +t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016 +F .228(to the e)108 638.4 R .228(xpansion of the special parameters)-.15 F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228 -(Special P)2.728 F(arameters)-.1 E F0(abo)2.728 E -.15(ve)-.15 G 2.728 -(\). ${#).15 F F2(name)A F0([)A F2(subscript)A F0(]})A -.15(ex)108 542.4 -S .886(pands to the length of ${).15 F F2(name)A F0([)A F2(subscript)A -F0 3.386(]}. If)B F2(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or) +(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727 +(\). ${#).15 F F3(name)A F0([)A F3(subscript)A F0(]})A -.15(ex)108 650.4 +S .886(pands to the length of ${).15 F F3(name)A F0([)A F3(subscript)A +F0 3.386(]}. If)B F3(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or) 3.386 E F1(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 -(xpansion is the number of ele-)-.15 F .294(ments in the array)108 554.4 -R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F2(subscript)3.135 E F0 +(xpansion is the number of ele-)-.15 F .295(ments in the array)108 662.4 +R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 E F3(subscript)3.135 E F0 .295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G -2.795(da).15 G .295(rray e)-2.795 F -.25(va)-.25 G .295 -(luates to a number).25 F .629 -(less than zero, it is interpreted as relati)108 566.4 R .929 -.15(ve t) --.25 H 3.128(oo).15 G .628(ne greater than the maximum inde)-3.128 F -3.128(xo)-.15 G 3.128(ft)-3.128 G .628(he array)-3.128 F 3.128(,s)-.65 G -3.128(on)-3.128 G -2.25 -.15(eg a)-3.128 H(ti).15 E -.15(ve)-.25 G -(indices count back from the end of the array)108 578.4 Q 2.5(,a)-.65 G +2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25 G .294 +(luates to a number).25 F .628 +(less than zero, it is interpreted as relati)108 674.4 R .928 -.15(ve t) +-.25 H 3.128(oo).15 G .629(ne greater than the maximum inde)-3.128 F +3.129(xo)-.15 G 3.129(ft)-3.129 G .629(he array)-3.129 F 3.129(,s)-.65 G +3.129(on)-3.129 G -2.25 -.15(eg a)-3.129 H(ti).15 E -.15(ve)-.25 G +(indices count back from the end of the array)108 686.4 Q 2.5(,a)-.65 G (nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G (eferences the last element.)-2.5 E .595(Referencing an array v)108 -595.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G +703.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .595(lent to referencing the array with a subscript of).25 F 2.5(0. An) -108 607.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 +108 715.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F1(bash)2.5 E -F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 624 Q -(ariable is considered set if a subscript has been assigned a v)-.25 E +F0(will create an array if necessary)2.5 E(.)-.65 E(GNU Bash 5.0)72 768 +Q(2018 August 7)145.395 E(19)194.555 E 0 Cg EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(An array v)108 84 +Q(ariable is considered set if a subscript has been assigned a v)-.25 E 2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E -.418(It is possible to obtain the k)108 640.8 R -.15(ey)-.1 G 2.918(s\() -.15 G .418(indices\) of an array as well as the v)-2.918 F 2.917 -(alues. ${)-.25 F F1(!)A F2(name)A F0([)A F2(@)A F0 .417(]} and ${)B F1 -(!)A F2(name)A F0([)A F2(*)A F0(]})A -.15(ex)108 652.8 S .749 -(pand to the indices assigned in array v).15 F(ariable)-.25 E F2(name) -3.249 E F0 5.749(.T)C .75 +.417(It is possible to obtain the k)108 100.8 R -.15(ey)-.1 G 2.918(s\() +.15 G .418(indices\) of an array as well as the v)-2.918 F 2.918 +(alues. ${)-.25 F/F1 10/Times-Bold@0 SF(!)A/F2 10/Times-Italic@0 SF +(name)A F0([)A F2(@)A F0 .418(]} and ${)B F1(!)A F2(name)A F0([)A F2(*)A +F0(]})A -.15(ex)108 112.8 S .75(pand to the indices assigned in array v) +.15 F(ariable)-.25 E F2(name)3.249 E F0 5.749(.T)C .749 (he treatment when in double quotes is similar to)-5.749 F(the e)108 -664.8 Q(xpansion of the special parameters)-.15 E F2(@)2.5 E F0(and)2.5 -E F2(*)2.5 E F0(within double quotes.)2.5 E(The)108 681.6 Q F1(unset) -2.767 E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 +124.8 Q(xpansion of the special parameters)-.15 E F2(@)2.5 E F0(and)2.5 +E F2(*)2.5 E F0(within double quotes.)2.5 E(The)108 141.6 Q F1(unset) +2.766 E F0 -.2(bu)2.766 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G(rrays.)-2.767 E F1(unset)5.267 E F2(name)2.767 E F0([)A F2(subscript)A F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) --.15 E F2(sub-)2.766 E(script)108 693.6 Q F0 3.974(,f)C 1.474 -(or both inde)-3.974 F -.15(xe)-.15 G 3.974(da).15 G 1.474(nd associati) --3.974 F 1.774 -.15(ve a)-.25 H 3.974(rrays. Ne).15 F -.05(ga)-.15 G(ti) +-.15 E F2(sub-)2.767 E(script)108 153.6 Q F0 3.975(,f)C 1.475 +(or both inde)-3.975 F -.15(xe)-.15 G 3.975(da).15 G 1.474(nd associati) +-3.975 F 1.774 -.15(ve a)-.25 H 3.974(rrays. Ne).15 F -.05(ga)-.15 G(ti) .05 E 1.774 -.15(ve s)-.25 H 1.474(ubscripts to inde).15 F -.15(xe)-.15 -G 3.975(da).15 G 1.475(rrays are interpreted as)-3.975 F .615 -(described abo)108 705.6 R -.15(ve)-.15 G 5.615(.U).15 G .615 -(nsetting the last element of an array v)-5.615 F .614 -(ariable does not unset the v)-.25 F(ariable.)-.25 E F1(unset)5.614 E F2 -(name)3.114 E F0(,)A(where)108 717.6 Q F2(name)2.5 E F0(is an array)2.5 +G 3.974(da).15 G 1.474(rrays are interpreted as)-3.974 F .614 +(described abo)108 165.6 R -.15(ve)-.15 G 5.614(.U).15 G .614 +(nsetting the last element of an array v)-5.614 F .615 +(ariable does not unset the v)-.25 F(ariable.)-.25 E F1(unset)5.615 E F2 +(name)3.115 E F0(,)A(where)108 177.6 Q F2(name)2.5 E F0(is an array)2.5 E 2.5(,o)-.65 G(r)-2.5 E F1(unset)2.5 E F2(name)2.5 E F0([)A F2 (subscript)A F0(], where)A F2(subscript)2.5 E F0(is)2.5 E F1(*)2.5 E F0 (or)2.5 E F1(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G -(he entire array)-2.5 E(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(19)193.45 E 0 Cg EP -%%Page: 20 20 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .847 -(When using a v)108 84 R .848(ariable name with a subscript as an ar) --.25 F .848(gument to a command, such as with)-.18 F/F1 10/Times-Bold@0 -SF(unset)3.348 E F0 3.348(,w)C(ithout)-3.348 E .345(using the w)108 96 R -.345(ord e)-.1 F .345(xpansion syntax described abo)-.15 F -.15(ve)-.15 -G 2.845(,t).15 G .345(he ar)-2.845 F .344 -(gument is subject to pathname e)-.18 F 2.844(xpansion. If)-.15 F(path-) -2.844 E(name e)108 108 Q(xpansion is not desired, the ar)-.15 E -(gument should be quoted.)-.18 E(The)108 124.8 Q F1(declar)3.573 E(e) --.18 E F0(,)A F1(local)3.573 E F0 3.573(,a)C(nd)-3.573 E F1 -.18(re) -3.573 G(adonly).18 E F0 -.2(bu)3.573 G 1.073(iltins each accept a).2 F -F13.573 E F0 1.073(option to specify an inde)3.573 F -.15(xe)-.15 -G 3.574(da).15 G 1.074(rray and a)-3.574 F F13.574 E F0 .339 -(option to specify an associati)108 136.8 R .638 -.15(ve a)-.25 H(rray) +(he entire array)-2.5 E(.)-.65 E .848(When using a v)108 194.4 R .848 +(ariable name with a subscript as an ar)-.25 F .848 +(gument to a command, such as with)-.18 F F1(unset)3.347 E F0 3.347(,w)C +(ithout)-3.347 E .344(using the w)108 206.4 R .344(ord e)-.1 F .344 +(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 2.845(,t).15 G .345 +(he ar)-2.845 F .345(gument is subject to pathname e)-.18 F 2.845 +(xpansion. If)-.15 F(path-)2.845 E(name e)108 218.4 Q +(xpansion is not desired, the ar)-.15 E(gument should be quoted.)-.18 E +(The)108 235.2 Q F1(declar)3.574 E(e)-.18 E F0(,)A F1(local)3.574 E F0 +3.574(,a)C(nd)-3.574 E F1 -.18(re)3.574 G(adonly).18 E F0 -.2(bu)3.574 G +1.073(iltins each accept a).2 F F13.573 E F0 1.073 +(option to specify an inde)3.573 F -.15(xe)-.15 G 3.573(da).15 G 1.073 +(rray and a)-3.573 F F13.573 E F0 .338 +(option to specify an associati)108 247.2 R .638 -.15(ve a)-.25 H(rray) .15 E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) -2.838 F F12.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) -5.338 E F1 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44 -(accepts a)108 148.8 R F12.941 E F0 .441 +5.338 E F1 -.18(re)2.839 G(ad).18 E F0 -.2(bu)2.839 G(iltin).2 E .441 +(accepts a)108 259.2 R F12.941 E F0 .441 (option to assign a list of w)2.941 F .441 (ords read from the standard input to an array)-.1 F 5.441(.T)-.65 G(he) --5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.941 E(e)-.18 E F0 -.2 -(bu)108 160.8 S(iltins display array v).2 E(alues in a w)-.25 E -(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F2 10.95 -/Times-Bold@0 SF(EXP)72 177.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 189.6 R 3.26 +-5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.94 E(e)-.18 E F0 -.2 +(bu)108 271.2 S(iltins display array v).2 E(alues in a w)-.25 E +(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F3 10.95 +/Times-Bold@0 SF(EXP)72 288 Q(ANSION)-.81 E F0 .76(Expansion is perform\ +ed on the command line after it has been split into w)108 300 R 3.26 (ords. There)-.1 F .76(are se)3.26 F -.15(ve)-.25 G 3.26(nk).15 G .76 -(inds of)-3.26 F -.15(ex)108 201.6 S .369(pansion performed:).15 F/F3 10 -/Times-Italic@0 SF(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 -E F3 .369(tilde e)2.869 F(xpansion)-.2 E F0(,).24 E F3(par)2.869 E .369 -(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F3 .37 -(command sub-)2.869 F(stitution)108 213.6 Q F0(,).24 E F3(arithmetic e) -2.5 E(xpansion)-.2 E F0(,).24 E F3(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 -E F0 2.5(,a).22 G(nd)-2.5 E F3(pathname e)2.5 E(xpansion)-.2 E F0(.).24 -E .419(The order of e)108 230.4 R .419(xpansions is: brace e)-.15 F .418 -(xpansion; tilde e)-.15 F .418(xpansion, parameter and v)-.15 F .418 -(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 242.4 S -.195(pansion, and command substitution \(done in a left-to-right f).15 F -.196(ashion\); w)-.1 F .196(ord splitting; and pathname e)-.1 F(xpan-) --.15 E(sion.)108 254.4 Q .257 -(On systems that can support it, there is an additional e)108 271.2 R -.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F3(pr)2.757 E .257 -(ocess substitution)-.45 F F0 5.257(.T)C .256(his is per)-5.257 F(-)-.2 -E(formed at the same time as tilde, parameter)108 283.2 Q 2.5(,v)-.4 G +(inds of)-3.26 F -.15(ex)108 312 S .37(pansion performed:).15 F F2(br) +2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369(tilde e) +2.869 F(xpansion)-.2 E F0(,).24 E F2(par)2.869 E .369 +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369 +(command sub-)2.869 F(stitution)108 324 Q F0(,).24 E F2(arithmetic e)2.5 +E(xpansion)-.2 E F0(,).24 E F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E +F0 2.5(,a).22 G(nd)-2.5 E F2(pathname e)2.5 E(xpansion)-.2 E F0(.).24 E +.418(The order of e)108 340.8 R .418(xpansions is: brace e)-.15 F .418 +(xpansion; tilde e)-.15 F .419(xpansion, parameter and v)-.15 F .419 +(ariable e)-.25 F .419(xpansion, arithmetic)-.15 F -.15(ex)108 352.8 S +.196(pansion, and command substitution \(done in a left-to-right f).15 F +.195(ashion\); w)-.1 F .195(ord splitting; and pathname e)-.1 F(xpan-) +-.15 E(sion.)108 364.8 Q .257 +(On systems that can support it, there is an additional e)108 381.6 R +.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F2(pr)2.757 E .257 +(ocess substitution)-.45 F F0 5.257(.T)C .257(his is per)-5.257 F(-)-.2 +E(formed at the same time as tilde, parameter)108 393.6 Q 2.5(,v)-.4 G (ariable, and arithmetic e)-2.75 E(xpansion and command substitution.) --.15 E .002(After these e)108 300 R .003 +-.15 E .003(After these e)108 410.4 R .003 (xpansions are performed, quote characters present in the original w) --.15 F .003(ord are remo)-.1 F -.15(ve)-.15 G 2.503(du).15 G .003 -(nless the)-2.503 F(y)-.15 E(ha)108 312 Q .3 -.15(ve b)-.2 H -(een quoted themselv).15 E(es \()-.15 E F3(quote r)A(emo)-.37 E(val)-.1 -E F0(\).)A 1.191(Only brace e)108 328.8 R 1.191(xpansion, w)-.15 F 1.191 +-.15 F .002(ord are remo)-.1 F -.15(ve)-.15 G 2.502(du).15 G .002 +(nless the)-2.502 F(y)-.15 E(ha)108 422.4 Q .3 -.15(ve b)-.2 H +(een quoted themselv).15 E(es \()-.15 E F2(quote r)A(emo)-.37 E(val)-.1 +E F0(\).)A 1.19(Only brace e)108 439.2 R 1.19(xpansion, w)-.15 F 1.19 (ord splitting, and pathname e)-.1 F 1.191 -(xpansion can increase the number of w)-.15 F 1.19(ords of the)-.1 F --.15(ex)108 340.8 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 -F 1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 -(ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the) --.15 F -.15(ex)108 352.8 S 1.245(pansions of ").15 F F1($@)A F0 3.745 -("a)C 1.245(nd ")-3.745 F F1(${)A F3(name)A F1([@]})A F0 1.245 -(", and, in most cases,)B F1($*)3.745 E F0(and)3.745 E F1(${)3.744 E F3 -(name)A F1([*]})A F0 1.244(as e)3.744 F 1.244(xplained abo)-.15 F 1.544 --.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 SF -.666(PA)108 364.8 S -(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1(Brace Expansion)87 381.6 -Q F3(Br)108.58 393.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 +(xpansion can increase the number of w)-.15 F 1.191(ords of the)-.1 F +-.15(ex)108 451.2 S 1.165(pansion; other e).15 F 1.165(xpansions e)-.15 +F 1.165(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 +(ord. The)-.1 F 1.164(only e)3.665 F 1.164(xceptions to this are the) +-.15 F -.15(ex)108 463.2 S 1.244(pansions of ").15 F F1($@)A F0 3.744 +("a)C 1.244(nd ")-3.744 F F1(${)A F2(name)A F1([@]})A F0 1.245 +(", and, in most cases,)B F1($*)3.745 E F0(and)3.745 E F1(${)3.745 E F2 +(name)A F1([*]})A F0 1.245(as e)3.745 F 1.245(xplained abo)-.15 F 1.545 +-.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 SF -.666(PA)108 475.2 S +(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1(Brace Expansion)87 492 Q +F2(Br)108.58 504 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 (is a mechanism by which arbitrary strings may be generated.)3.346 F -.606(This mechanism is similar)5.606 F(to)108 405.6 Q F3 .415 -(pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 +.606(This mechanism is similar)5.606 F(to)108 516 Q F2 .415(pathname e) +2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 (ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F .415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G -(he)-2.915 E .151(form of an optional)108 417.6 R F3(pr)2.651 E(eamble) +(he)-2.915 E .152(form of an optional)108 528 R F2(pr)2.652 E(eamble) -.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151 (wed by either a series of comma-separated strings or a sequence e)-.25 -F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 429.6 R -.563(wed by an optional)-.25 F F3(postscript)3.063 E F0 5.563(.T).68 G -.563(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659 -(contained within the braces, and the postscript is then appended to ea\ -ch resulting string, e)108 441.6 R .659(xpanding left to)-.15 F(right.) -108 453.6 Q .719(Brace e)108 470.4 R .719(xpansions may be nested.)-.15 -F .719(The results of each e)5.719 F .719 +F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 540 R .563 +(wed by an optional)-.25 F F2(postscript)3.063 E F0 5.563(.T).68 G .563 +(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659(co\ +ntained within the braces, and the postscript is then appended to each \ +resulting string, e)108 552 R .658(xpanding left to)-.15 F(right.)108 +564 Q .718(Brace e)108 580.8 R .719(xpansions may be nested.)-.15 F .719 +(The results of each e)5.719 F .719 (xpanded string are not sorted; left to right order is)-.15 F(preserv) -108 482.4 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F1({)A F0 -(d,c,b)A F1(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.242(As) -108 499.2 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742 -(es the form)-.1 F F1({)3.242 E F3(x)A F1(..)A F3(y)A F1([..)A F3(incr)A -F1(]})A F0 3.242(,w)C(here)-3.242 E F3(x)3.242 E F0(and)3.243 E F3(y) -3.243 E F0 .743(are either inte)3.243 F .743(gers or single characters,) --.15 F(and)108 511.2 Q F3(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G +108 592.8 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F1({)A F0 +(d,c,b)A F1(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.243(As) +108 609.6 S .743(equence e)-3.243 F .743(xpression tak)-.15 F .743 +(es the form)-.1 F F1({)3.243 E F2(x)A F1(..)A F2(y)A F1([..)A F2(incr)A +F1(]})A F0 3.243(,w)C(here)-3.243 E F2(x)3.243 E F0(and)3.242 E F2(y) +3.242 E F0 .742(are either inte)3.242 F .742(gers or single characters,) +-.15 F(and)108 621.6 Q F2(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G .532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G .532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 -(xpression e)-.15 F .531(xpands to each)-.15 F .077(number between)108 -523.2 R F3(x)2.577 E F0(and)2.577 E F3(y)2.577 E F0 2.577(,i)C(nclusi) --2.577 E -.15(ve)-.25 G 5.077(.S).15 G .077(upplied inte)-5.077 F .077 -(gers may be pre\214x)-.15 F .077(ed with)-.15 F F3(0)2.577 E F0 .078 -(to force each term to ha)2.578 F .378 -.15(ve t)-.2 H(he).15 E .015 -(same width.)108 535.2 R .015(When either)5.015 F F3(x)2.515 E F0(or) -2.515 E F3(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell att\ +(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108 +633.6 R F2(x)2.578 E F0(and)2.578 E F2(y)2.578 E F0 2.578(,i)C(nclusi) +-2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077 +(gers may be pre\214x)-.15 F .077(ed with)-.15 F F2(0)2.577 E F0 .077 +(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014 +(same width.)108 645.6 R .014(When either)5.014 F F2(x)2.514 E F0(or) +2.514 E F2(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell att\ empts to force all generated terms to contain)-.15 F 1.143 -(the same number of digits, zero-padding where necessary)108 547.2 R +(the same number of digits, zero-padding where necessary)108 657.6 R 6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F -(xpression)-.15 E -.15(ex)108 559.2 S 1.064(pands to each character le) -.15 F 1.064(xicographically between)-.15 F F3(x)3.564 E F0(and)3.564 E -F3(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G -1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .983 -(that both)108 571.2 R F3(x)3.483 E F0(and)3.483 E F3(y)3.483 E F0 .983 -(must be of the same type.)3.483 F .984 +(xpression)-.15 E -.15(ex)108 669.6 S 1.064(pands to each character le) +.15 F 1.064(xicographically between)-.15 F F2(x)3.564 E F0(and)3.564 E +F2(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G +1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .984 +(that both)108 681.6 R F2(x)3.484 E F0(and)3.484 E F2(y)3.484 E F0 .983 +(must be of the same type.)3.484 F .983 (When the increment is supplied, it is used as the dif)5.983 F(ference) --.25 E(between each term.)108 583.2 Q(The def)5 E -(ault increment is 1 or \2551 as appropriate.)-.1 E .582(Brace e)108 600 -R .582(xpansion is performed before an)-.15 F 3.082(yo)-.15 G .581 -(ther e)-3.082 F .581(xpansions, and an)-.15 F 3.081(yc)-.15 G .581 -(haracters special to other e)-3.081 F(xpansions)-.15 E .015 -(are preserv)108 612 R .015(ed in the result.)-.15 F .015 -(It is strictly te)5.015 F(xtual.)-.15 E F1(Bash)5.016 E F0 .016 -(does not apply an)2.516 F 2.516(ys)-.15 G .016 -(yntactic interpretation to the con-)-2.516 F(te)108 624 Q(xt of the e) --.15 E(xpansion or the te)-.15 E(xt between the braces.)-.15 E 3.633(Ac) -108 640.8 S 1.133(orrectly-formed brace e)-3.633 F 1.132(xpansion must \ -contain unquoted opening and closing braces, and at least one)-.15 F -3.44(unquoted comma or a v)108 652.8 R 3.441(alid sequence e)-.25 F -5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 -(ncorrectly formed brace e)-5.941 F 3.441(xpansion is left)-.15 F 2.755 -(unchanged. A)108 664.8 R F1({)2.755 E F0(or)2.755 E F1(,)2.755 E F0 -.255(may be quoted with a backslash to pre)2.755 F -.15(ve)-.25 G .255 -(nt its being considered part of a brace e).15 F(xpres-)-.15 E 2.91 -(sion. T)108 676.8 R 2.91(oa)-.8 G -.2(vo)-3.11 G .41 -(id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F -F1(${)2.911 E F0 .411(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion, and inhibits brace e)108 688.8 Q -(xpansion until the closing)-.15 E F1(})2.5 E F0(.)A 1.476(This constru\ -ct is typically used as shorthand when the common pre\214x of the strin\ -gs to be generated is)108 705.6 R(longer than in the abo)108 717.6 Q .3 --.15(ve ex)-.15 H(ample:).15 E(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(20)193.45 E 0 Cg EP +-.25 E(between each term.)108 693.6 Q(The def)5 E +(ault increment is 1 or \2551 as appropriate.)-.1 E .581(Brace e)108 +710.4 R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581 +(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 +(haracters special to other e)-3.082 F(xpansions)-.15 E 1.209 +(are preserv)108 722.4 R 1.209(ed in the result.)-.15 F 1.209 +(It is strictly te)6.209 F(xtual.)-.15 E F1(Bash)6.209 E F0 1.209 +(does not apply an)3.709 F 3.709(ys)-.15 G 1.208 +(yntactic interpretation to the)-3.709 F(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(20)194.555 E 0 Cg EP %%Page: 21 21 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(mkdir /usr/local/src/bash/{old,ne)144 84 Q -.65(w,)-.25 G(dist,b).65 E -(ugs})-.2 E(or)108 96 Q(cho)144 108 Q(wn root /usr/{ucb/{e)-.25 E -(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 E(w_e)-.25 E(x}})-.15 E .618 -(Brace e)108 124.8 R .618 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(conte)108 84 Q +(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) +-.15 E 3.632(Ac)108 100.8 S 1.132(orrectly-formed brace e)-3.632 F 1.132 +(xpansion must contain unquoted opening and closing braces, and at leas\ +t one)-.15 F 3.441(unquoted comma or a v)108 112.8 R 3.441 +(alid sequence e)-.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 +(ncorrectly formed brace e)-5.941 F 3.44(xpansion is left)-.15 F 2.755 +(unchanged. A)108 124.8 R/F1 10/Times-Bold@0 SF({)2.755 E F0(or)2.755 E +F1(,)2.755 E F0 .255(may be quoted with a backslash to pre)2.755 F -.15 +(ve)-.25 G .255(nt its being considered part of a brace e).15 F(xpres-) +-.15 E 2.911(sion. T)108 136.8 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 +(id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F +F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F +(xpan-)-.15 E(sion, and inhibits brace e)108 148.8 Q +(xpansion until the closing)-.15 E F1(})2.5 E F0(.)A 1.476(This constru\ +ct is typically used as shorthand when the common pre\214x of the strin\ +gs to be generated is)108 165.6 R(longer than in the abo)108 177.6 Q .3 +-.15(ve ex)-.15 H(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 +194.4 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 206.4 Q(cho)144 +218.4 Q(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 +E(w_e)-.25 E(x}})-.15 E .618(Brace e)108 235.2 R .618 (xpansion introduces a slight incompatibility with historical v)-.15 F -.618(ersions of)-.15 F/F1 10/Times-Bold@0 SF(sh)3.118 E F0(.)A F1(sh) -5.618 E F0 .618(does not treat open-)3.118 F .248 -(ing or closing braces specially when the)108 136.8 R 2.748(ya)-.15 G -.247(ppear as part of a w)-2.748 F .247(ord, and preserv)-.1 F .247 -(es them in the output.)-.15 F F1(Bash)5.247 E F0(remo)108 148.8 Q -.15 +.618(ersions of)-.15 F F1(sh)3.118 E F0(.)A F1(sh)5.618 E F0 .618 +(does not treat open-)3.118 F .247 +(ing or closing braces specially when the)108 247.2 R 2.747(ya)-.15 G +.247(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248 +(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 259.2 Q -.15 (ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03 (ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03 (or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F1(sh) -3.53 E F0(as)3.53 E/F2 10/Times-Italic@0 SF(\214le{1,2})108 160.8 Q F0 -.515(appears identically in the output.)3.015 F .515(The same w)5.515 F -.515(ord is output as)-.1 F F2 .514(\214le1 \214le2)4.925 F F0 .514 -(after e)3.034 F .514(xpansion by)-.15 F F1(bash)3.014 E F0(.)A .436 -(If strict compatibility with)108 172.8 R F1(sh)2.936 E F0 .436 +3.53 E F0(as)3.53 E/F2 10/Times-Italic@0 SF(\214le{1,2})108 271.2 Q F0 +.514(appears identically in the output.)3.014 F .515(The same w)5.515 F +.515(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515 +(after e)3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437 +(If strict compatibility with)108 283.2 R F1(sh)2.936 E F0 .436 (is desired, start)2.936 F F1(bash)2.936 E F0 .436(with the)2.936 F F1 -(+B)2.936 E F0 .436(option or disable brace e)2.936 F .437 -(xpansion with the)-.15 F F1(+B)108 184.8 Q F0(option to the)2.5 E F1 +(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 +(xpansion with the)-.15 F F1(+B)108 295.2 Q F0(option to the)2.5 E F1 (set)2.5 E F0(command \(see)2.5 E/F3 9/Times-Bold@0 SF(SHELL B)2.5 E (UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -.18(Ti) -87 201.6 S(lde Expansion).18 E F0 1.087(If a w)108 213.6 R 1.087(ord be) --.1 F 1.087(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 -1.086('\), all of the characters preceding the \214rst unquoted)B .185(\ -slash \(or all characters, if there is no unquoted slash\) are consider\ -ed a)108 225.6 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685 -(fn)-5.185 G .185(one of the characters)-2.685 F .726(in the tilde-pre\ -\214x are quoted, the characters in the tilde-pre\214x follo)108 237.6 R -.725(wing the tilde are treated as a possible)-.25 F F2(lo)108 249.6 Q -.522(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G .522 +87 312 S(lde Expansion).18 E F0 1.086(If a w)108 324 R 1.086(ord be)-.1 +F 1.086(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.087 +('\), all of the characters preceding the \214rst unquoted)B .185(slash\ + \(or all characters, if there is no unquoted slash\) are considered a) +108 336 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn) +-5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\214x\ + are quoted, the characters in the tilde-pre\214x follo)108 348 R .726 +(wing the tilde are treated as a possible)-.25 F F2(lo)108 360 Q .523 +(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 (his login name is the null string, the tilde is replaced with the v) --3.022 F .523(alue of the shell parameter)-.25 F F3(HOME)108 261.6 Q/F4 -9/Times-Roman@0 SF(.)A F0(If)4.787 E F3(HOME)2.787 E F0 .287 -(is unset, the home directory of the user e)2.537 F -.15(xe)-.15 G .286 -(cuting the shell is substituted instead.).15 F(Other)5.286 E(-)-.2 E(w\ +-3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 372 Q/F4 9 +/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E F0 .287 +(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 G .287 +(cuting the shell is substituted instead.).15 F(Other)5.287 E(-)-.2 E(w\ ise, the tilde-pre\214x is replaced with the home directory associated \ -with the speci\214ed login name.)108 273.6 Q .092 -(If the tilde-pre\214x is a `~+', the v)108 290.4 R .092 +with the speci\214ed login name.)108 384 Q .093 +(If the tilde-pre\214x is a `~+', the v)108 400.8 R .092 (alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 -(replaces the tilde-pre\214x.)2.342 F .093(If the tilde-pre\214x is) -5.093 F 3.404(a`)108 302.4 S .904(~\255', the v)-3.404 F .904 +(replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) +5.092 F 3.403(a`)108 412.8 S .903(~\255', the v)-3.403 F .903 (alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 -.904(if it is set, is substituted.)3.154 F .903(If the characters follo) -5.903 F .903(wing the)-.25 F 1.641 -(tilde in the tilde-pre\214x consist of a number)108 314.4 R F2(N)4.141 -E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.642 -(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.438(replaced w\ +.904(if it is set, is substituted.)3.154 F .904(If the characters follo) +5.904 F .904(wing the)-.25 F 1.642 +(tilde in the tilde-pre\214x consist of a number)108 424.8 R F2(N)4.142 +E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 +(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ ith the corresponding element from the directory stack, as it w)108 -326.4 R 1.437(ould be displayed by the)-.1 F F1(dirs)3.937 E F0 -.2(bu) -108 338.4 S .454(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.954(dw).1 G -.454(ith the tilde-pre\214x as an ar)-2.954 F 2.954(gument. If)-.18 F -.454(the characters follo)2.954 F .455 +436.8 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) +108 448.8 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G +.455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F +.454(the characters follo)2.954 F .454 (wing the tilde in the tilde-pre\214x)-.25 F (consist of a number without a leading `+' or `\255', `+' is assumed.) -108 350.4 Q(If the login name is in)108 367.2 Q -.25(va)-.4 G +108 460.8 Q(If the login name is in)108 477.6 Q -.25(va)-.4 G (lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E -(ord is unchanged.)-.1 E .167(Each v)108 384 R .167 +(ord is unchanged.)-.1 E .166(Each v)108 494.4 R .167 (ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x) -.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E -F0 .167(or the \214rst)2.667 F F1(=)2.666 E F0 5.166(.I)C(n)-5.166 E -.467(these cases, tilde e)108 396 R .467(xpansion is also performed.) --.15 F(Consequently)5.467 E 2.967(,o)-.65 G .468 -(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 408 -Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT)-.666 G -(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H).855 E F4 -(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E(alue.)-.25 E -F1 -.1(Pa)87 424.8 S(rameter Expansion).1 E F0 1.606(The `)108 436.8 R -F1($)A F0 4.106('c)C 1.606(haracter introduces parameter e)-4.106 F -1.605(xpansion, command substitution, or arithmetic e)-.15 F 4.105 -(xpansion. The)-.15 F .406(parameter name or symbol to be e)108 448.8 R -.407(xpanded may be enclosed in braces, which are optional b)-.15 F .407 -(ut serv)-.2 F 2.907(et)-.15 G 2.907(op)-2.907 G(ro-)-2.907 E .033 -(tect the v)108 460.8 R .033(ariable to be e)-.25 F .033 -(xpanded from characters immediately follo)-.15 F .032 -(wing it which could be interpreted as part)-.25 F(of the name.)108 -472.8 Q 1.189 -(When braces are used, the matching ending brace is the \214rst `)108 -489.6 R F1(})A F0 3.69('n)C 1.19(ot escaped by a backslash or within a) --3.69 F 2.15(quoted string, and not within an embedded arithmetic e)108 -501.6 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15 -(ex)108 513.6 S(pansion.).15 E(${)108 530.4 Q F2(par)A(ameter)-.15 E F0 -(})A 1.204(The v)144 542.4 R 1.204(alue of)-.25 F F2(par)3.704 E(ameter) --.15 E F0 1.204(is substituted.)3.704 F 1.204 -(The braces are required when)6.204 F F2(par)4.955 E(ameter)-.15 E F0 -1.205(is a positional)4.435 F .264 -(parameter with more than one digit, or when)144 554.4 R F2(par)4.014 E +F0 .167(or the \214rst)2.667 F F1(=)2.667 E F0 5.167(.I)C(n)-5.167 E +.468(these cases, tilde e)108 506.4 R .468(xpansion is also performed.) +-.15 F(Consequently)5.467 E 2.967(,o)-.65 G .467 +(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 +518.4 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT) +-.666 G(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H) +.855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E +(alue.)-.25 E .023(Bash also performs tilde e)108 535.2 R .023 +(xpansion on w)-.15 F .024(ords satisfying the conditions of v)-.1 F +.024(ariable assignments \(as described)-.25 F(abo)108 547.2 Q .77 -.15 +(ve u)-.15 H(nder).15 E F3 -.666(PA)2.97 G(RAMETERS).666 E F4(\))A F0 +.47(when the)2.72 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469 +(guments to simple commands.)-.18 F .469(Bash does not do this,)5.469 F +-.15(ex)108 559.2 S(cept for the).15 E F2(declar)2.5 E(ation)-.15 E F0 +(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F2 +(posix mode)2.5 E F0(.)A F1 -.1(Pa)87 576 S(rameter Expansion).1 E F0 +1.605(The `)108 588 R F1($)A F0 4.105('c)C 1.605 +(haracter introduces parameter e)-4.105 F 1.606 +(xpansion, command substitution, or arithmetic e)-.15 F 4.106 +(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 600 R +.407(xpanded may be enclosed in braces, which are optional b)-.15 F .406 +(ut serv)-.2 F 2.906(et)-.15 G 2.906(op)-2.906 G(ro-)-2.906 E .032 +(tect the v)108 612 R .032(ariable to be e)-.25 F .032 +(xpanded from characters immediately follo)-.15 F .033 +(wing it which could be interpreted as part)-.25 F(of the name.)108 624 +Q 1.19(When braces are used, the matching ending brace is the \214rst `) +108 640.8 R F1(})A F0 3.689('n)C 1.189 +(ot escaped by a backslash or within a)-3.689 F 2.15 +(quoted string, and not within an embedded arithmetic e)108 652.8 R 2.15 +(xpansion, command substitution, or parameter)-.15 F -.15(ex)108 664.8 S +(pansion.).15 E(${)108 681.6 Q F2(par)A(ameter)-.15 E F0(})A 1.205 +(The v)144 693.6 R 1.205(alue of)-.25 F F2(par)3.705 E(ameter)-.15 E F0 +1.204(is substituted.)3.705 F 1.204(The braces are required when)6.204 F +F2(par)4.954 E(ameter)-.15 E F0 1.204(is a positional)4.434 F .264 +(parameter with more than one digit, or when)144 705.6 R F2(par)4.014 E (ameter)-.15 E F0 .264(is follo)3.494 F .264 -(wed by a character which is not to)-.25 F 2.676 -(be interpreted as part of its name.)144 566.4 R(The)7.677 E F2(par) -5.177 E(ameter)-.15 E F0 2.677(is a shell parameter as described abo) -5.177 F -.15(ve)-.15 G F1 -.74(PA)144 578.4 S(RAMETERS).74 E F0 2.5(\)o) +(wed by a character which is not to)-.25 F 2.677 +(be interpreted as part of its name.)144 717.6 R(The)7.677 E F2(par) +5.177 E(ameter)-.15 E F0 2.676(is a shell parameter as described abo) +5.177 F -.15(ve)-.15 G F1 -.74(PA)144 729.6 S(RAMETERS).74 E F0 2.5(\)o) C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0 -(\).)A .347(If the \214rst character of)108 595.2 R F2(par)2.846 E -(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F -F1(!)A F0 .346(\), and)B F2(par)2.846 E(ameter)-.15 E F0 .346(is not a) -2.846 F F2(namer)2.846 E(ef)-.37 E F0 2.846(,i)C 2.846(ti)-2.846 G -(ntroduces)-2.846 E 2.634(al)108 607.2 S -2.15 -.25(ev e)-2.634 H 2.634 -(lo).25 G 2.634(fv)-2.634 G .134(ariable indirection.)-2.884 F F1(Bash) -5.134 E F0 .134(uses the v)2.634 F .134(alue of the v)-.25 F .134 -(ariable formed from the rest of)-.25 F F2(par)2.635 E(ameter)-.15 E F0 -.135(as the)2.635 F 1.004(name of the v)108 619.2 R 1.003 -(ariable; this v)-.25 F 1.003(ariable is then e)-.25 F 1.003 -(xpanded and that v)-.15 F 1.003 -(alue is used in the rest of the substitution,)-.25 F .257 -(rather than the v)108 631.2 R .257(alue of)-.25 F F2(par)2.757 E -(ameter)-.15 E F0 2.757(itself. This)2.757 F .257(is kno)2.757 F .257 -(wn as)-.25 F F2(indir)2.757 E .257(ect e)-.37 F(xpansion)-.2 E F0 5.257 -(.T)C .257(he v)-5.257 F .258(alue is subject to tilde)-.25 F -.15(ex) -108 643.2 S 2.767(pansion, parameter e).15 F 2.766 -(xpansion, command substitution, and arithmetic e)-.15 F 5.266 -(xpansion. If)-.15 F F2(par)5.266 E(ameter)-.15 E F0 2.766(is a)5.266 F -.461(nameref, this e)108 655.2 R .461(xpands to the name of the v)-.15 F -.461(ariable referenced by)-.25 F F2(par)2.961 E(ameter)-.15 E F0 .462 -(instead of performing the com-)2.961 F 2.419(plete indirect e)108 667.2 -R 4.919(xpansion. The)-.15 F -.15(ex)4.919 G 2.418 -(ceptions to this are the e).15 F 2.418(xpansions of ${)-.15 F F1(!)A F2 -(pr)A(e\214x)-.37 E F1(*)A F0 4.918(}a)C 2.418(nd ${)-4.918 F F1(!)A F2 -(name)A F0([)A F2(@)A F0(]})A .464(described belo)108 679.2 R 4.264 -.65 -(w. T)-.25 H .464(he e).65 F .464 -(xclamation point must immediately follo)-.15 F 2.965(wt)-.25 G .465 -(he left brace in order to introduce indi-)-2.965 F(rection.)108 691.2 Q -.334(In each of the cases belo)108 708 R -.65(w,)-.25 G F2(wor)3.484 E -(d)-.37 E F0 .334(is subject to tilde e)2.834 F .334 -(xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15 -F(and arithmetic e)108 720 Q(xpansion.)-.15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(21)193.45 E 0 Cg EP +(\).)A(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(21)194.555 E 0 Cg +EP %%Page: 22 22 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.089 -(When not performing substring e)108 84 R 1.089 -(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G -(e.g.,)-3.589 E/F1 10/Times-Bold@0 SF(:-)3.59 E F0(\),)A F1(bash)3.59 E -F0 1.09(tests for a)3.59 F(parameter that is unset or null.)108 96 Q(Om\ -itting the colon results in a test only for a parameter that is unset.)5 -E(${)108 112.8 Q/F2 10/Times-Italic@0 SF(par)A(ameter)-.15 E F1<3aad>A -F2(wor)A(d)-.37 E F0(})A F1 .723(Use Default V)144 124.8 R(alues)-.92 E -F0 5.723(.I)C(f)-5.723 E F2(par)4.473 E(ameter)-.15 E F0 .723 -(is unset or null, the e)3.953 F .722(xpansion of)-.15 F F2(wor)3.562 E -(d)-.37 E F0 .722(is substituted.)3.992 F(Other)5.722 E(-)-.2 E -(wise, the v)144 136.8 Q(alue of)-.25 E F2(par)3.75 E(ameter)-.15 E F0 -(is substituted.)3.23 E(${)108 148.8 Q F2(par)A(ameter)-.15 E F1(:=)A F2 -(wor)A(d)-.37 E F0(})A F1 2.004(Assign Default V)144 160.8 R(alues)-.92 -E F0 7.004(.I)C(f)-7.004 E F2(par)5.754 E(ameter)-.15 E F0 2.005 -(is unset or null, the e)5.234 F 2.005(xpansion of)-.15 F F2(wor)4.845 E -(d)-.37 E F0 2.005(is assigned to)5.275 F F2(par)144 172.8 Q(ameter)-.15 -E F0 5.279(.T).73 G .279(he v)-5.279 F .279(alue of)-.25 F F2(par)4.029 -E(ameter)-.15 E F0 .278(is then substituted.)3.508 F .278 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .346 +(If the \214rst character of)108 84 R/F1 10/Times-Italic@0 SF(par)2.846 +E(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F +/F2 10/Times-Bold@0 SF(!)A F0 .346(\), and)B F1(par)2.846 E(ameter)-.15 +E F0 .346(is not a)2.846 F F1(namer)2.846 E(ef)-.37 E F0 2.847(,i)C +2.847(ti)-2.847 G(ntroduces)-2.847 E 2.907(al)108 96 S -2.15 -.25(ev e) +-2.907 H 2.907(lo).25 G 2.906(fi)-2.907 G(ndirection.)-2.906 E F2(Bash) +5.406 E F0 .406(uses the v)2.906 F .406(alue formed by e)-.25 F .406 +(xpanding the rest of)-.15 F F1(par)2.906 E(ameter)-.15 E F0 .406 +(as the ne)2.906 F(w)-.25 E F1(par)2.906 E(ame-)-.15 E(ter)108 108 Q F0 +2.578(;t)C .078(his is then e)-2.578 F .078(xpanded and that v)-.15 F +.079(alue is used in the rest of the e)-.25 F .079 +(xpansion, rather than the e)-.15 F .079(xpansion of the)-.15 F +(original)108 120 Q F1(par)2.543 E(ameter)-.15 E F0 5.043(.T)C .043 +(his is kno)-5.043 F .043(wn as)-.25 F F1(indir)2.543 E .043(ect e)-.37 +F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .042 +(alue is subject to tilde e)-.25 F .042(xpansion, parameter)-.15 F -.15 +(ex)108 132 S .248(pansion, command substitution, and arithmetic e).15 F +2.748(xpansion. If)-.15 F F1(par)2.749 E(ameter)-.15 E F0 .249 +(is a nameref, this e)2.749 F .249(xpands to the)-.15 F 1.51 +(name of the parameter referenced by)108 144 R F1(par)4.01 E(ameter)-.15 +E F0 1.51(instead of performing the complete indirect e)4.01 F +(xpansion.)-.15 E .387(The e)108 156 R .387(xceptions to this are the e) +-.15 F .387(xpansions of ${)-.15 F F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A +F0 2.887(}a)C .387(nd ${)-2.887 F F2(!)A F1(name)A F0([)A F1(@)A F0 .387 +(]} described belo)B 4.188 -.65(w. T)-.25 H .388(he e).65 F(xclama-)-.15 +E(tion point must immediately follo)108 168 Q 2.5(wt)-.25 G +(he left brace in order to introduce indirection.)-2.5 E .334 +(In each of the cases belo)108 184.8 R -.65(w,)-.25 G F1(wor)3.484 E(d) +-.37 E F0 .334(is subject to tilde e)2.834 F .334(xpansion, parameter e) +-.15 F .334(xpansion, command substitution,)-.15 F(and arithmetic e)108 +196.8 Q(xpansion.)-.15 E 1.089(When not performing substring e)108 213.6 +R 1.089(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 +G(e.g.,)-3.589 E F2(:-)3.59 E F0(\),)A F2(bash)3.59 E F0 1.09 +(tests for a)3.59 F(parameter that is unset or null.)108 225.6 Q(Omitti\ +ng the colon results in a test only for a parameter that is unset.)5 E +(${)108 242.4 Q F1(par)A(ameter)-.15 E F2<3aad>A F1(wor)A(d)-.37 E F0(}) +A F2 .723(Use Default V)144 254.4 R(alues)-.92 E F0 5.723(.I)C(f)-5.723 +E F1(par)4.473 E(ameter)-.15 E F0 .723(is unset or null, the e)3.953 F +.722(xpansion of)-.15 F F1(wor)3.562 E(d)-.37 E F0 .722(is substituted.) +3.992 F(Other)5.722 E(-)-.2 E(wise, the v)144 266.4 Q(alue of)-.25 E F1 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 278.4 Q F1 +(par)A(ameter)-.15 E F2(:=)A F1(wor)A(d)-.37 E F0(})A F2 2.004 +(Assign Default V)144 290.4 R(alues)-.92 E F0 7.004(.I)C(f)-7.004 E F1 +(par)5.754 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.234 F +2.005(xpansion of)-.15 F F1(wor)4.845 E(d)-.37 E F0 2.005 +(is assigned to)5.275 F F1(par)144 302.4 Q(ameter)-.15 E F0 5.279(.T).73 +G .279(he v)-5.279 F .279(alue of)-.25 F F1(par)4.029 E(ameter)-.15 E F0 +.278(is then substituted.)3.508 F .278 (Positional parameters and special param-)5.278 F -(eters may not be assigned to in this w)144 184.8 Q(ay)-.1 E(.)-.65 E -(${)108 196.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A -F1 .535(Display Err)144 208.8 R .535(or if Null or Unset)-.18 F F0 5.535 -(.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535 -(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E -(d)-.37 E F0 .535(\(or a mes-)3.035 F .662(sage to that ef)144 220.8 R -.662(fect if)-.25 F F2(wor)3.502 E(d)-.37 E F0 .661(is not present\) is\ +(eters may not be assigned to in this w)144 314.4 Q(ay)-.1 E(.)-.65 E +(${)108 326.4 Q F1(par)A(ameter)-.15 E F2(:?)A F1(wor)A(d)-.37 E F0(})A +F2 .535(Display Err)144 338.4 R .535(or if Null or Unset)-.18 F F0 5.535 +(.I)C(f)-5.535 E F1(par)4.285 E(ameter)-.15 E F0 .535 +(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F1(wor)3.035 E +(d)-.37 E F0 .535(\(or a mes-)3.035 F .662(sage to that ef)144 350.4 R +.662(fect if)-.25 F F1(wor)3.502 E(d)-.37 E F0 .661(is not present\) is\ written to the standard error and the shell, if it is not)3.932 F -(interacti)144 232.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) --2.65 F(the v)2.5 E(alue of)-.25 E F2(par)2.5 E(ameter)-.15 E F0 -(is substituted.)2.5 E(${)108 244.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2 -(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 256.8 R .745(nate V)-.15 F -(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F2(par)4.495 E(ameter)-.15 E F0 +(interacti)144 362.4 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) +-2.65 F(the v)2.5 E(alue of)-.25 E F1(par)2.5 E(ameter)-.15 E F0 +(is substituted.)2.5 E(${)108 374.4 Q F1(par)A(ameter)-.15 E F2(:+)A F1 +(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 386.4 R .745(nate V)-.15 F +(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0 .745(is null or unset, nothing is substituted, otherwise the e)3.975 F -(xpan-)-.15 E(sion of)144 268.8 Q F2(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 280.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 -(of)A(fset)-.18 E F0(})A(${)108 292.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 -(of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .002(Substring Expansion) -144 304.8 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F2(length)2.502 -E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F2(par)2.502 E +(xpan-)-.15 E(sion of)144 398.4 Q F1(wor)2.84 E(d)-.37 E F0 +(is substituted.)3.27 E(${)108 410.4 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(of)A(fset)-.18 E F0(})A(${)108 422.4 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion) +144 434.4 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 +E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E (ameter)-.15 E F0 .002(starting at the)2.502 F 1.081 -(character speci\214ed by)144 316.8 R F2(of)3.581 E(fset)-.18 E F0 6.081 -(.I)C(f)-6.081 E F2(par)3.582 E(ameter)-.15 E F0(is)3.582 E F1(@)3.582 E +(character speci\214ed by)144 446.4 R F1(of)3.581 E(fset)-.18 E F0 6.081 +(.I)C(f)-6.081 E F1(par)3.582 E(ameter)-.15 E F0(is)3.582 E F2(@)3.582 E F0 3.582(,a)C 3.582(ni)-3.582 G(nde)-3.582 E -.15(xe)-.15 G 3.582(da).15 -G 1.082(rray subscripted by)-3.582 F F1(@)3.582 E F0(or)3.582 E F1(*) -3.582 E F0 3.582(,o)C 3.582(ra)-3.582 G(n)-3.582 E(associati)144 328.8 Q +G 1.082(rray subscripted by)-3.582 F F2(@)3.582 E F0(or)3.582 E F2(*) +3.582 E F0 3.582(,o)C 3.582(ra)-3.582 G(n)-3.582 E(associati)144 458.4 Q 1.022 -.15(ve a)-.25 H .722(rray name, the results dif).15 F .722 -(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F2(length) +(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F1(length) 3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .042 -(substring of the v)144 340.8 R .042(alue of)-.25 F F2(par)2.542 E +(substring of the v)144 470.4 R .042(alue of)-.25 F F1(par)2.542 E (ameter)-.15 E F0 .043(starting at the character speci\214ed by)2.542 F -F2(of)2.543 E(fset)-.18 E F0 .043(and e)2.543 F .043(xtending to the) --.15 F .847(end of the v)144 352.8 R(alue.)-.25 E F2(length)5.846 E F0 -(and)3.346 E F2(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F +F1(of)2.543 E(fset)-.18 E F0 .043(and e)2.543 F .043(xtending to the) +-.15 F .847(end of the v)144 482.4 R(alue.)-.25 E F1(length)5.846 E F0 +(and)3.346 E F1(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .846(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .846(ARITHMETIC EV) -3.346 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 364.8 Q -(w\).)-.25 E(If)144 388.8 Q F2(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 +3.346 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 494.4 Q +(w\).)-.25 E(If)144 518.4 Q F1(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 G .529(luates to a number less than zero, the v).25 F .529 (alue is used as an of)-.25 F .529(fset in characters from the)-.25 F -.046(end of the v)144 400.8 R .046(alue of)-.25 F F2(par)2.546 E(ameter) --.15 E F0 5.046(.I)C(f)-5.046 E F2(length)2.546 E F0 -.25(eva)2.546 G +.046(end of the v)144 530.4 R .046(alue of)-.25 F F1(par)2.546 E(ameter) +-.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G .046(luates to a number less than zero, it is interpreted as an).25 F -(of)144 412.8 Q .202(fset in characters from the end of the v)-.25 F -.202(alue of)-.25 F F2(par)2.702 E(ameter)-.15 E F0 .203 -(rather than a number of characters, and)2.702 F .558(the e)144 424.8 R -.558(xpansion is the characters between)-.15 F F2(of)3.058 E(fset)-.18 E +(of)144 542.4 Q .202(fset in characters from the end of the v)-.25 F +.202(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .203 +(rather than a number of characters, and)2.702 F .558(the e)144 554.4 R +.558(xpansion is the characters between)-.15 F F1(of)3.058 E(fset)-.18 E F0 .558(and that result.)3.058 F .557(Note that a ne)5.557 F -.05(ga) -.15 G(ti).05 E .857 -.15(ve o)-.25 H -.25(ff).15 G .557(set must be).25 -F(separated from the colon by at least one space to a)144 436.8 Q -.2 -(vo)-.2 G(id being confused with the).2 E F1(:-)2.5 E F0 -.15(ex)2.5 G -(pansion.).15 E(If)144 460.8 Q F2(par)2.958 E(ameter)-.15 E F0(is)2.958 -E F1(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F2(length)2.959 -E F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F2(of) +F(separated from the colon by at least one space to a)144 566.4 Q -.2 +(vo)-.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G +(pansion.).15 E(If)144 590.4 Q F1(par)2.958 E(ameter)-.15 E F0(is)2.958 +E F2(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F1(length)2.959 +E F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F1(of) 2.959 E(fset)-.18 E F0 5.459(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F2(of)3.109 E(fset)-.18 E F0 .6(is tak)144 472.8 R .6 +(ve)-.25 G F1(of)3.109 E(fset)-.18 E F0 .6(is tak)144 602.4 R .6 (en relati)-.1 F .9 -.15(ve t)-.25 H 3.1(oo).15 G .6 (ne greater than the greatest positional parameter)-3.1 F 3.1(,s)-.4 G 3.1(oa)-3.1 G 3.1(no)-3.1 G -.25(ff)-3.1 G .6(set of \2551 e).25 F -.25 -(va)-.25 G(luates).25 E .639(to the last positional parameter)144 484.8 +(va)-.25 G(luates).25 E .639(to the last positional parameter)144 614.4 R 5.639(.I)-.55 G 3.139(ti)-5.639 G 3.139(sa)-3.139 G 3.139(ne)-3.139 G -.639(xpansion error if)-3.289 F F2(length)3.14 E F0 -.25(eva)3.14 G .64 -(luates to a number less than).25 F(zero.)144 496.8 Q(If)144 520.8 Q F2 +.639(xpansion error if)-3.289 F F1(length)3.14 E F0 -.25(eva)3.14 G .64 +(luates to a number less than).25 F(zero.)144 626.4 Q(If)144 650.4 Q F1 (par)3.014 E(ameter)-.15 E F0 .514(is an inde)3.014 F -.15(xe)-.15 G 3.014(da).15 G .514(rray name subscripted by @ or *, the result is the) --3.014 F F2(length)3.014 E F0 .513(members of)3.013 F 1.081 -(the array be)144 532.8 R 1.081(ginning with ${)-.15 F F2(par)A(ameter) --.15 E F0([)A F2(of)A(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga) --.15 G(ti).05 E -.15(ve)-.25 G F2(of)3.732 E(fset)-.18 E F0 1.082 +-3.014 F F1(length)3.014 E F0 .513(members of)3.013 F 1.081 +(the array be)144 662.4 R 1.081(ginning with ${)-.15 F F1(par)A(ameter) +-.15 E F0([)A F1(of)A(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga) +-.15 G(ti).05 E -.15(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.082 (is tak)3.582 F 1.082(en relati)-.1 F 1.382 -.15(ve t)-.25 H 3.582(oo) -.15 G 1.082(ne greater)-3.582 F 1.08(than the maximum inde)144 544.8 R +.15 G 1.082(ne greater)-3.582 F 1.08(than the maximum inde)144 674.4 R 3.58(xo)-.15 G 3.58(ft)-3.58 G 1.08(he speci\214ed array)-3.58 F 6.079 (.I)-.65 G 3.579(ti)-6.079 G 3.579(sa)-3.579 G 3.579(ne)-3.579 G 1.079 -(xpansion error if)-3.729 F F2(length)3.579 E F0 -.25(eva)3.579 G 1.079 -(luates to a).25 F(number less than zero.)144 556.8 Q(Substring e)144 -580.8 Q(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H -(rray produces unde\214ned results.).15 E 1.93(Substring inde)144 604.8 -R 1.931(xing is zero-based unless the positional parameters are used, i\ -n which case the)-.15 F(inde)144 616.8 Q .307(xing starts at 1 by def) --.15 F 2.807(ault. If)-.1 F F2(of)2.807 E(fset)-.18 E F0 .307 -(is 0, and the positional parameters are used,)2.807 F F1($0)2.806 E F0 -.306(is pre\214x)2.806 F(ed)-.15 E(to the list.)144 628.8 Q(${)108 645.6 -Q F1(!)A F2(pr)A(e\214x)-.37 E F1(*)A F0(})A(${)108 657.6 Q F1(!)A F2 -(pr)A(e\214x)-.37 E F1(@)A F0(})A F1 .084(Names matching pr)144 669.6 R -(e\214x)-.18 E F0 5.084(.E)C .084(xpands to the names of v)-5.084 F .084 -(ariables whose names be)-.25 F .085(gin with)-.15 F F2(pr)2.585 E -(e\214x)-.37 E F0 2.585(,s)C(epa-)-2.585 E .258 -(rated by the \214rst character of the)144 681.6 R F3(IFS)2.758 E F0 -.257(special v)2.507 F 2.757(ariable. When)-.25 F F2(@)2.757 E F0 .257 -(is used and the e)2.757 F .257(xpansion appears)-.15 F -(within double quotes, each v)144 693.6 Q(ariable name e)-.25 E -(xpands to a separate w)-.15 E(ord.)-.1 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(22)193.45 E 0 Cg EP +(xpansion error if)-3.729 F F1(length)3.579 E F0 -.25(eva)3.579 G 1.079 +(luates to a).25 F(number less than zero.)144 686.4 Q(Substring e)144 +710.4 Q(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H +(rray produces unde\214ned results.).15 E(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(22)194.555 E 0 Cg EP %%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10 -/Times-Bold@0 SF(!)A/F2 10/Times-Italic@0 SF(name)A F0([)A F2(@)A F0(]}) -A(${)108 96 Q F1(!)A F2(name)A F0([)A F2(*)A F0(]})A F1 2.035 -(List of array k)144 108 R(eys)-.1 E F0 7.036(.I)C(f)-7.036 E F2(name) -4.536 E F0 2.036(is an array v)4.536 F 2.036(ariable, e)-.25 F 2.036 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.93 +(Substring inde)144 84 R 1.931(xing is zero-based unless the positional\ + parameters are used, in which case the)-.15 F(inde)144 96 Q .307 +(xing starts at 1 by def)-.15 F 2.807(ault. If)-.1 F/F1 10 +/Times-Italic@0 SF(of)2.807 E(fset)-.18 E F0 .307 +(is 0, and the positional parameters are used,)2.807 F/F2 10 +/Times-Bold@0 SF($0)2.806 E F0 .306(is pre\214x)2.806 F(ed)-.15 E +(to the list.)144 108 Q(${)108 124.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 +(*)A F0(})A(${)108 136.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 +.084(Names matching pr)144 148.8 R(e\214x)-.18 E F0 5.084(.E)C .084 +(xpands to the names of v)-5.084 F .084(ariables whose names be)-.25 F +.085(gin with)-.15 F F1(pr)2.585 E(e\214x)-.37 E F0 2.585(,s)C(epa-) +-2.585 E .258(rated by the \214rst character of the)144 160.8 R/F3 9 +/Times-Bold@0 SF(IFS)2.758 E F0 .257(special v)2.507 F 2.757 +(ariable. When)-.25 F F1(@)2.757 E F0 .257(is used and the e)2.757 F +.257(xpansion appears)-.15 F(within double quotes, each v)144 172.8 Q +(ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 +189.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 201.6 Q F2(!)A F1 +(name)A F0([)A F1(*)A F0(]})A F2 2.035(List of array k)144 213.6 R(eys) +-.1 E F0 7.036(.I)C(f)-7.036 E F1(name)4.536 E F0 2.036(is an array v) +4.536 F 2.036(ariable, e)-.25 F 2.036 (xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G(s\)).15 E -.596(assigned in)144 120 R F2(name)3.096 E F0 5.596(.I)C(f)-5.596 E F2 +.596(assigned in)144 225.6 R F1(name)3.096 E F0 5.596(.I)C(f)-5.596 E F1 (name)3.096 E F0 .595(is not an array)3.096 F 3.095(,e)-.65 G .595 -(xpands to 0 if)-3.245 F F2(name)3.095 E F0 .595 -(is set and null otherwise.)3.095 F(When)5.595 E F2(@)144 132 Q F0 +(xpands to 0 if)-3.245 F F1(name)3.095 E F0 .595 +(is set and null otherwise.)3.095 F(When)5.595 E F1(@)144 237.6 Q F0 (is used and the e)2.5 E(xpansion appears within double quotes, each k) -.15 E .3 -.15(ey ex)-.1 H(pands to a separate w).15 E(ord.)-.1 E(${)108 -148.8 Q F1(#)A F2(par)A(ameter)-.15 E F0(})A F1 -.1(Pa)144 160.8 S .47 +254.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 266.4 S .47 (rameter length).1 F F0 5.47(.T)C .471(he length in characters of the v) --5.47 F .471(alue of)-.25 F F2(par)2.971 E(ameter)-.15 E F0 .471 -(is substituted.)2.971 F(If)5.471 E F2(par)4.221 E(ame-)-.15 E(ter)144 -172.8 Q F0(is)4.439 E F1(*)3.709 E F0(or)3.709 E F1(@)3.709 E F0 3.708 +-5.47 F .471(alue of)-.25 F F1(par)2.971 E(ameter)-.15 E F0 .471 +(is substituted.)2.971 F(If)5.471 E F1(par)4.221 E(ame-)-.15 E(ter)144 +278.4 Q F0(is)4.439 E F2(*)3.709 E F0(or)3.709 E F2(@)3.709 E F0 3.708 (,t)C 1.208(he v)-3.708 F 1.208 (alue substituted is the number of positional parameters.)-.25 F(If) -6.208 E F2(par)4.958 E(ameter)-.15 E F0 1.208(is an)4.438 F .348 -(array name subscripted by)144 184.8 R F1(*)2.849 E F0(or)2.849 E F1(@) +6.208 E F1(par)4.958 E(ameter)-.15 E F0 1.208(is an)4.438 F .348 +(array name subscripted by)144 290.4 R F2(*)2.849 E F0(or)2.849 E F2(@) 2.849 E F0 2.849(,t)C .349(he v)-2.849 F .349 (alue substituted is the number of elements in the array)-.25 F 5.349 -(.I)-.65 G(f)-5.349 E F2(par)145.25 196.8 Q(ameter)-.15 E F0 .456 +(.I)-.65 G(f)-5.349 E F1(par)145.25 302.4 Q(ameter)-.15 E F0 .456 (is an inde)3.686 F -.15(xe)-.15 G 2.956(da).15 G .456 (rray name subscripted by a ne)-2.956 F -.05(ga)-.15 G(ti).05 E .756 -.15(ve n)-.25 H(umber).15 E 2.955(,t)-.4 G .455 -(hat number is interpreted)-2.955 F .972(as relati)144 208.8 R 1.272 +(hat number is interpreted)-2.955 F .972(as relati)144 314.4 R 1.272 -.15(ve t)-.25 H 3.472(oo).15 G .973(ne greater than the maximum inde) --3.472 F 3.473(xo)-.15 G(f)-3.473 E F2(par)3.473 E(ameter)-.15 E F0 +-3.472 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 3.473(,s)C 3.473(on)-3.473 G -2.25 -.15(eg a)-3.473 H(ti).15 E 1.273 -.15(ve i)-.25 H .973(ndices count back).15 F(from the end of the array) -144 220.8 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 -G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 237.6 Q F2 -(par)A(ameter)-.15 E F1(#)A F2(wor)A(d)-.37 E F0(})A(${)108 249.6 Q F2 -(par)A(ameter)-.15 E F1(##)A F2(wor)A(d)-.37 E F0(})A F1(Remo)144 261.6 +144 326.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 +G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 343.2 Q F1 +(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 355.2 Q F1 +(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 367.2 Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196(e\214x patter)-.18 F -(n)-.15 E F0 6.196(.T)C(he)-6.196 E F2(wor)4.036 E(d)-.37 E F0 1.196 +(n)-.15 E F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196 (is e)4.466 F 1.196(xpanded to produce a pattern just as in path-)-.15 F -.543(name e)144 273.6 R .544(xpansion, and matched ag)-.15 F .544 -(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F2(par) +.543(name e)144 379.2 R .544(xpansion, and matched ag)-.15 F .544 +(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F1(par) 4.294 E(ameter)-.15 E F0 .544(using the rules described)3.774 F(under) -144 285.6 Q F1 -.1(Pa)3.222 G(tter).1 E 3.222(nM)-.15 G(atching)-3.222 E +144 391.2 Q F2 -.1(Pa)3.222 G(tter).1 E 3.222(nM)-.15 G(atching)-3.222 E F0(belo)3.222 E 4.522 -.65(w. I)-.25 H 3.222(ft).65 G .721 (he pattern matches the be)-3.222 F .721(ginning of the v)-.15 F .721 -(alue of)-.25 F F2(par)3.221 E(ameter)-.15 E F0(,).73 E 1.151 -(then the result of the e)144 297.6 R 1.151(xpansion is the e)-.15 F -1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F2(par)4.902 E(ameter)-.15 E +(alue of)-.25 F F1(par)3.221 E(ameter)-.15 E F0(,).73 E 1.151 +(then the result of the e)144 403.2 R 1.151(xpansion is the e)-.15 F +1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1(par)4.902 E(ameter)-.15 E F0 1.152(with the shortest matching)4.382 F .184(pattern \(the `)144 -309.6 R(`)-.74 E F1(#)A F0 1.664 -.74('' c)D .184 -(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F1(##)A F0 -1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.183 E F2(par)3.933 E -(ameter)-.15 E F0(is)3.413 E F1(@)2.683 E F0(or)144 321.6 Q F1(*)3.018 E +415.2 R(`)-.74 E F2(#)A F0 1.664 -.74('' c)D .184 +(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0 +1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.183 E F1(par)3.933 E +(ameter)-.15 E F0(is)3.413 E F2(@)2.683 E F0(or)144 427.2 Q F2(*)3.018 E F0 3.018(,t)C .518(he pattern remo)-3.018 F -.25(va)-.15 G 3.018(lo).25 G .518 (peration is applied to each positional parameter in turn, and the e) --3.018 F(xpan-)-.15 E 1.122(sion is the resultant list.)144 333.6 R(If) -6.121 E F2(par)4.871 E(ameter)-.15 E F0 1.121(is an array v)4.351 F -1.121(ariable subscripted with)-.25 F F1(@)3.621 E F0(or)3.621 E F1(*) -3.621 E F0 3.621(,t)C 1.121(he pattern)-3.621 F(remo)144 345.6 Q -.25 +-3.018 F(xpan-)-.15 E 1.122(sion is the resultant list.)144 439.2 R(If) +6.121 E F1(par)4.871 E(ameter)-.15 E F0 1.121(is an array v)4.351 F +1.121(ariable subscripted with)-.25 F F2(@)3.621 E F0(or)3.621 E F2(*) +3.621 E F0 3.621(,t)C 1.121(he pattern)-3.621 F(remo)144 451.2 Q -.25 (va)-.15 G 2.53(lo).25 G .03 (peration is applied to each member of the array in turn, and the e) --2.53 F .03(xpansion is the resultant)-.15 F(list.)144 357.6 Q(${)108 -374.4 Q F2(par)A(ameter)-.15 E F1(%)A F2(wor)A(d)-.37 E F0(})A(${)108 -386.4 Q F2(par)A(ameter)-.15 E F1(%%)A F2(wor)A(d)-.37 E F0(})A F1(Remo) -144 398.4 Q .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15 -E F0 5.147(.T)C(he)-5.147 E F2(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F -.146(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 -410.4 S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458 -(xpanded v)-.15 F .458(alue of)-.25 F F2(par)4.209 E(ameter)-.15 E F0 -.459(using the rules described under)3.689 F F1 -.1(Pa)144 422.4 S(tter) -.1 E 4.593(nM)-.15 G(atching)-4.593 E F0(belo)4.593 E 5.892 -.65(w. I) --.25 H 4.592(ft).65 G 2.092 -(he pattern matches a trailing portion of the e)-4.592 F 2.092 -(xpanded v)-.15 F 2.092(alue of)-.25 F F2(par)144 434.4 Q(ameter)-.15 E -F0 3.15(,t).73 G .65(hen the result of the e)-3.15 F .65 -(xpansion is the e)-.15 F .65(xpanded v)-.15 F .65(alue of)-.25 F F2 +-2.53 F .03(xpansion is the resultant)-.15 F(list.)144 463.2 Q(${)108 +480 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 492 +Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 +504 Q .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15 E F0 +5.147(.T)C(he)-5.147 E F1(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F .146 +(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 516 +S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458 +(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.209 E(ameter)-.15 E F0 +.459(using the rules described under)3.689 F F2 -.1(Pa)144 528 S(tter).1 +E 4.593(nM)-.15 G(atching)-4.593 E F0(belo)4.593 E 5.892 -.65(w. I)-.25 +H 4.592(ft).65 G 2.092(he pattern matches a trailing portion of the e) +-4.592 F 2.092(xpanded v)-.15 F 2.092(alue of)-.25 F F1(par)144 540 Q +(ameter)-.15 E F0 3.15(,t).73 G .65(hen the result of the e)-3.15 F .65 +(xpansion is the e)-.15 F .65(xpanded v)-.15 F .65(alue of)-.25 F F1 (par)4.4 E(ameter)-.15 E F0 .65(with the shortest)3.88 F 1.085 -(matching pattern \(the `)144 446.4 R(`)-.74 E F1(%)A F0 2.565 -.74 -('' c)D 1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 -E F1(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F2 -(par)145.25 458.4 Q(ameter)-.15 E F0(is)3.389 E F1(@)2.659 E F0(or)2.659 -E F1(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15 -G 2.659(lo).25 G .16 +(matching pattern \(the `)144 552 R(`)-.74 E F2(%)A F0 2.565 -.74('' c)D +1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2 +(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F1(par) +145.25 564 Q(ameter)-.15 E F0(is)3.389 E F2(@)2.659 E F0(or)2.659 E F2 +(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15 G +2.659(lo).25 G .16 (peration is applied to each positional parameter in turn,)-2.659 F .51 -(and the e)144 470.4 R .51(xpansion is the resultant list.)-.15 F(If) -5.51 E F2(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509 -(ariable subscripted with)-.25 F F1(@)3.009 E F0(or)3.009 E F1(*)3.009 E -F0(,)A .422(the pattern remo)144 482.4 R -.25(va)-.15 G 2.922(lo).25 G +(and the e)144 576 R .51(xpansion is the resultant list.)-.15 F(If)5.51 +E F1(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509 +(ariable subscripted with)-.25 F F2(@)3.009 E F0(or)3.009 E F2(*)3.009 E +F0(,)A .422(the pattern remo)144 588 R -.25(va)-.15 G 2.922(lo).25 G .422(peration is applied to each member of the array in turn, and the e) --2.922 F .423(xpansion is)-.15 F(the resultant list.)144 494.4 Q(${)108 -511.2 Q F2(par)A(ameter)-.15 E F1(/)A F2(pattern)A F1(/)A F2(string)A F0 -(})A F1 -.1(Pa)144 523.2 S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607 -E F0 6.107(.T)C(he)-6.107 E F2(pattern)3.607 E F0 1.107(is e)3.607 F +-2.922 F .423(xpansion is)-.15 F(the resultant list.)144 600 Q(${)108 +616.8 Q F1(par)A(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0 +(})A F2 -.1(Pa)144 628.8 S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607 +E F0 6.107(.T)C(he)-6.107 E F1(pattern)3.607 E F0 1.107(is e)3.607 F 1.106(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-) --.15 E(sion,)144 535.2 Q F2 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2 -(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F2(pattern)3.7 E -F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F2 -(string)144 547.2 Q F0 5.397(.T)C .397 -(he match is performed using the rules described under)-5.397 F F1 -.1 +-.15 E(sion,)144 640.8 Q F1 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2 +(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F1(pattern)3.7 E +F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F1 +(string)144 652.8 Q F0 5.397(.T)C .397 +(he match is performed using the rules described under)-5.397 F F2 -.1 (Pa)2.896 G(tter).1 E 2.896(nM)-.15 G(atching)-2.896 E F0(belo)2.896 E -4.196 -.65(w. I)-.25 H(f).65 E F2(pat-)2.896 E(tern)144 559.2 Q F0(be) -2.569 E .069(gins with)-.15 F F1(/)2.569 E F0 2.569(,a)C .069 -(ll matches of)-2.569 F F2(pattern)2.569 E F0 .069(are replaced with) -2.569 F F2(string)2.57 E F0 5.07(.N)C .07 -(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 571.2 R -F2(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F1(#)2.58 E F0 2.58 +4.196 -.65(w. I)-.25 H(f).65 E F1(pat-)2.896 E(tern)144 664.8 Q F0(be) +2.569 E .069(gins with)-.15 F F2(/)2.569 E F0 2.569(,a)C .069 +(ll matches of)-2.569 F F1(pattern)2.569 E F0 .069(are replaced with) +2.569 F F1(string)2.57 E F0 5.07(.N)C .07 +(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 676.8 R +F1(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F2(#)2.58 E F0 2.58 (,i)C 2.58(tm)-2.58 G .079(ust match at the be)-2.58 F .079 -(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F2 -(par)2.579 E(am-)-.15 E(eter)144 583.2 Q F0 5.761(.I)C(f)-5.761 E F2 -(pattern)3.261 E F0(be)3.261 E .761(gins with)-.15 F F1(%)3.261 E F0 +(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F1 +(par)2.579 E(am-)-.15 E(eter)144 688.8 Q F0 5.761(.I)C(f)-5.761 E F1 +(pattern)3.261 E F0(be)3.261 E .761(gins with)-.15 F F2(%)3.261 E F0 3.261(,i)C 3.261(tm)-3.261 G .761(ust match at the end of the e)-3.261 F -.761(xpanded v)-.15 F .761(alue of)-.25 F F2(par)3.262 E(ameter)-.15 E -F0 5.762(.I)C(f)-5.762 E F2(string)144 595.2 Q F0 .958 -(is null, matches of)3.458 F F2(pattern)3.458 E F0 .958 -(are deleted and the)3.458 F F1(/)3.458 E F0(follo)3.458 E(wing)-.25 E -F2(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 F -F1(nocasematch)144 607.2 Q F0 .492 +.761(xpanded v)-.15 F .761(alue of)-.25 F F1(par)3.262 E(ameter)-.15 E +F0 5.762(.I)C(f)-5.762 E F1(string)144 700.8 Q F0 .958 +(is null, matches of)3.458 F F1(pattern)3.458 E F0 .958 +(are deleted and the)3.458 F F2(/)3.458 E F0(follo)3.458 E(wing)-.25 E +F1(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 F +F2(nocasematch)144 712.8 Q F0 .492 (shell option is enabled, the match is performed without re)2.992 F -.05 (ga)-.15 G .492(rd to the case of alpha-).05 F .884(betic characters.) -144 619.2 R(If)5.884 E F2(par)4.634 E(ameter)-.15 E F0(is)4.114 E F1(@) -3.384 E F0(or)3.383 E F1(*)3.383 E F0 3.383(,t)C .883 -(he substitution operation is applied to each positional)-3.383 F 1.002 -(parameter in turn, and the e)144 631.2 R 1.002 -(xpansion is the resultant list.)-.15 F(If)6.002 E F2(par)4.752 E -(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.002(ariable sub-)-.25 F -.159(scripted with)144 643.2 R F1(@)2.659 E F0(or)2.659 E F1(*)2.659 E -F0 2.659(,t)C .159(he substitution operation is applied to each member \ -of the array in turn, and)-2.659 F(the e)144 655.2 Q -(xpansion is the resultant list.)-.15 E(${)108 672 Q F2(par)A(ameter) --.15 E F1(^)A F2(pattern)A F0(})A(${)108 684 Q F2(par)A(ameter)-.15 E F1 -(^^)A F2(pattern)A F0(})A(${)108 696 Q F2(par)A(ameter)-.15 E F1(,)A F2 -(pattern)A F0(})A(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(23)193.45 -E 0 Cg EP +144 724.8 R(If)5.884 E F1(par)4.634 E(ameter)-.15 E F0(is)4.114 E F2(@) +3.384 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .883 +(he substitution operation is applied to each positional)-3.383 F +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(23)194.555 E 0 Cg EP %%Page: 24 24 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10 -/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(,,)A F1 -(pattern)A F0(})A F2 .437(Case modi\214cation)144 96 R F0 5.437(.T)C -.437(his e)-5.437 F .438 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.002 +(parameter in turn, and the e)144 84 R 1.002 +(xpansion is the resultant list.)-.15 F(If)6.002 E/F1 10/Times-Italic@0 +SF(par)4.752 E(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.002 +(ariable sub-)-.25 F .159(scripted with)144 96 R/F2 10/Times-Bold@0 SF +(@)2.659 E F0(or)2.659 E F2(*)2.659 E F0 2.659(,t)C .159(he substitutio\ +n operation is applied to each member of the array in turn, and)-2.659 F +(the e)144 108 Q(xpansion is the resultant list.)-.15 E(${)108 124.8 Q +F1(par)A(ameter)-.15 E F2(^)A F1(pattern)A F0(})A(${)108 136.8 Q F1(par) +A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108 148.8 Q F1(par)A +(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 160.8 Q F1(par)A +(ameter)-.15 E F2(,,)A F1(pattern)A F0(})A F2 .437(Case modi\214cation) +144 172.8 R F0 5.437(.T)C .437(his e)-5.437 F .438 (xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) -2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 108 Q F0 -1.407(is e)3.907 F 1.407 +2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 184.8 Q +F0 1.407(is e)3.907 F 1.407 (xpanded to produce a pattern just as in pathname e)-.15 F 3.906 -(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 120 S -1.231(panded v).15 F 1.231(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E +(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 196.8 +S 1.231(panded v).15 F 1.231(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E F0 1.232(is tested ag)3.732 F(ainst)-.05 E F1(pattern)3.732 E F0 3.732 (,a)C 1.232(nd, if it matches the pattern, its case is)-3.732 F(con)144 -132 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 +208.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 (pattern should not attempt to match more than one character)2.924 F 5.424(.T)-.55 G(he)-5.424 E F2(^)2.924 E F0 .424(operator con-)2.924 F --.15(ve)144 144 S .61(rts lo).15 F .61(wercase letters matching)-.25 F +-.15(ve)144 220.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F F1(pattern)3.11 E F0 .61(to uppercase; the)3.11 F F2(,)3.11 E F0 .61 (operator con)3.11 F -.15(ve)-.4 G .61(rts matching uppercase).15 F -1.548(letters to lo)144 156 R 4.047(wercase. The)-.25 F F2(^^)4.047 E F0 -(and)4.047 E F2(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F +1.548(letters to lo)144 232.8 R 4.047(wercase. The)-.25 F F2(^^)4.047 E +F0(and)4.047 E F2(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F -.15(ve)-.4 G 1.547(rt each matched character in the e).15 F(xpanded) --.15 E -.25(va)144 168 S .633(lue; the).25 F F2(^)3.133 E F0(and)3.133 E -F2(,)3.133 E F0 -.15(ex)3.133 G .633(pansions match and con).15 F -.15 +-.15 E -.25(va)144 244.8 S .633(lue; the).25 F F2(^)3.133 E F0(and)3.133 +E F2(,)3.133 E F0 -.15(ex)3.133 G .633(pansions match and con).15 F -.15 (ve)-.4 G .634(rt only the \214rst character in the e).15 F .634 -(xpanded v)-.15 F 3.134(alue. If)-.25 F F1(pattern)144 180 Q F0 .78 +(xpanded v)-.15 F 3.134(alue. If)-.25 F F1(pattern)144 256.8 Q F0 .78 (is omitted, it is treated lik)3.28 F 3.28(ea)-.1 G F2(?)A F0 3.28(,w)C .78(hich matches e)-3.28 F -.15(ve)-.25 G .78(ry character).15 F 5.78 (.I)-.55 G(f)-5.78 E F1(par)4.53 E(ameter)-.15 E F0(is)4.01 E F2(@)3.28 E F0(or)3.28 E F2(*)3.28 E F0(,)A .582(the case modi\214cation operatio\ -n is applied to each positional parameter in turn, and the e)144 192 R -(xpansion)-.15 E .469(is the resultant list.)144 204 R(If)5.469 E F1 +n is applied to each positional parameter in turn, and the e)144 268.8 R +(xpansion)-.15 E .469(is the resultant list.)144 280.8 R(If)5.469 E F1 (par)4.218 E(ameter)-.15 E F0 .468(is an array v)3.698 F .468 (ariable subscripted with)-.25 F F2(@)2.968 E F0(or)2.968 E F2(*)2.968 E F0 2.968(,t)C .468(he case modi\214ca-)-2.968 F(tion operation is appli\ -ed to each member of the array in turn, and the e)144 216 Q -(xpansion is the resultant list.)-.15 E(${)108 232.8 Q F1(par)A(ameter) --.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 244.8 S .86 +ed to each member of the array in turn, and the e)144 292.8 Q +(xpansion is the resultant list.)-.15 E(${)108 309.6 Q F1(par)A(ameter) +-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 321.6 S .86 (rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F .86 (xpansion is either a transformation of the v)-.15 F .86(alue of)-.25 F -F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 256.8 R F1 +F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 333.6 R F1 (par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F .153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153 E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144 -268.8 Q F2(Q)144 292.8 Q F0 1.064(The e)180 292.8 R 1.064 +345.6 Q F2(Q)144 369.6 Q F0 1.064(The e)180 369.6 R 1.064 (xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F1(par) 3.565 E(ameter)-.15 E F0 1.065(quoted in a format that can be)3.565 F -(reused as input.)180 304.8 Q F2(E)144 316.8 Q F0 .441(The e)180 316.8 R +(reused as input.)180 381.6 Q F2(E)144 393.6 Q F0 .441(The e)180 393.6 R .441(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F1 (par)2.941 E(ameter)-.15 E F0 .44(with backslash escape sequences)2.94 F --.15(ex)180 328.8 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E F0 -(quoting mechanism.)2.5 E F2(P)144 340.8 Q F0 1.072(The e)180 340.8 R +-.15(ex)180 405.6 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E F0 +(quoting mechanism.)2.5 E F2(P)144 417.6 Q F0 1.072(The e)180 417.6 R 1.073(xpansion is a string that is the result of e)-.15 F 1.073 (xpanding the v)-.15 F 1.073(alue of)-.25 F F1(par)3.573 E(ameter)-.15 E -F0 1.073(as if it)3.573 F(were a prompt string \(see)180 352.8 Q F2(PR) -2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 364.8 Q F0 1.138 -(The e)180 364.8 R 1.138 +F0 1.073(as if it)3.573 F(were a prompt string \(see)180 429.6 Q F2(PR) +2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 441.6 Q F0 1.138 +(The e)180 441.6 R 1.138 (xpansion is a string in the form of an assignment statement or)-.15 F -F2(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 376.8 Q +F2(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 453.6 Q -.25(va)-.25 G(luated, will recreate).25 E F1(par)2.5 E(ameter)-.15 E F0 -(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 388.8 Q F0 -(The e)180 388.8 Q(xpansion is a string consisting of \215ag v)-.15 E +(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 465.6 Q F0 +(The e)180 465.6 Q(xpansion is a string consisting of \215ag v)-.15 E (alues representing)-.25 E F1(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D -(ttrib).55 E(utes.)-.2 E(If)144 405.6 Q F1(par)5.33 E(ameter)-.15 E F0 +(ttrib).55 E(utes.)-.2 E(If)144 482.4 Q F1(par)5.33 E(ameter)-.15 E F0 (is)4.81 E F2(@)4.08 E F0(or)4.08 E F2(*)4.08 E F0 4.08(,t)C 1.581 (he operation is applied to each positional parameter in turn, and the) --4.08 F -.15(ex)144 417.6 S .13(pansion is the resultant list.).15 F(If) +-4.08 F -.15(ex)144 494.4 S .13(pansion is the resultant list.).15 F(If) 5.13 E F1(par)3.88 E(ameter)-.15 E F0 .129(is an array v)3.36 F .129 (ariable subscripted with)-.25 F F2(@)2.629 E F0(or)2.629 E F2(*)2.629 E F0 2.629(,t)C .129(he oper)-2.629 F(-)-.2 E (ation is applied to each member of the array in turn, and the e)144 -429.6 Q(xpansion is the resultant list.)-.15 E 1.849 -(The result of the e)144 453.6 R 1.849(xpansion is subject to w)-.15 F +506.4 Q(xpansion is the resultant list.)-.15 E 1.849 +(The result of the e)144 530.4 R 1.849(xpansion is subject to w)-.15 F 1.849(ord splitting and pathname e)-.1 F 1.85(xpansion as described)-.15 -F(belo)144 465.6 Q -.65(w.)-.25 G F2(Command Substitution)87 482.4 Q F1 -1.698(Command substitution)108 494.4 R F0(allo)4.198 E 1.697 +F(belo)144 542.4 Q -.65(w.)-.25 G F2(Command Substitution)87 559.2 Q F1 +1.698(Command substitution)108 571.2 R F0(allo)4.198 E 1.697 (ws the output of a command to replace the command name.)-.25 F 1.697 -(There are tw)6.697 F(o)-.1 E(forms:)108 506.4 Q F2($\()144 523.2 Q F1 -(command)A F2(\))1.666 E F0(or)108 535.2 Q F2<92>144 547.2 Q F1(command) -A F2<92>A(Bash)108 564 Q F0 .088(performs the e)2.588 F .088 +(There are tw)6.697 F(o)-.1 E(forms:)108 583.2 Q F2($\()144 600 Q F1 +(command)A F2(\))1.666 E F0(or)108 612 Q F2<92>144 624 Q F1(command)A F2 +<92>A(Bash)108 640.8 Q F0 .088(performs the e)2.588 F .088 (xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)2.588 E F0 .089(in a subshell en)2.589 F .089(vironment and replacing the command) -.4 F .41(substitution with the standard output of the command, with an) -108 576 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.)-.25 -F .41(Embedded ne)5.41 F(w-)-.25 E .191(lines are not deleted, b)108 588 -R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F -.15(ve) --.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.)-.1 F -.192(The command substitution)5.192 F F2($\(cat)2.692 E F1(\214le)2.692 -E F2(\))A F0(can be replaced by the equi)108 600 Q -.25(va)-.25 G -(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E F2 +108 652.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) +-.25 F .41(Embedded ne)5.41 F(w-)-.25 E .191(lines are not deleted, b) +108 664.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F +-.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.) +-.1 F .192(The command substitution)5.192 F F2($\(cat)2.692 E F1(\214le) +2.692 E F2(\))A F0(can be replaced by the equi)108 676.8 Q -.25(va)-.25 +G(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E F2 (\))A F0(.)A 1.724(When the old-style backquote form of substitution is\ - used, backslash retains its literal meaning e)108 616.8 R(xcept)-.15 E -.314(when follo)108 628.8 R .314(wed by)-.25 F F2($)2.814 E F0(,)A F2 + used, backslash retains its literal meaning e)108 693.6 R(xcept)-.15 E +.314(when follo)108 705.6 R .314(wed by)-.25 F F2($)2.814 E F0(,)A F2 <92>2.814 E F0 2.814(,o)C(r)-2.814 E F2(\\)2.814 E F0 5.314(.T)C .315(h\ e \214rst backquote not preceded by a backslash terminates the command \ -sub-)-5.314 F 3.887(stitution. When)108 640.8 R 1.387(using the $\() +sub-)-5.314 F 3.887(stitution. When)108 717.6 R 1.387(using the $\() 3.887 F F1(command).833 E F0 3.887(\)f)1.666 G 1.386 (orm, all characters between the parentheses mak)-3.887 F 3.886(eu)-.1 G 3.886(pt)-3.886 G 1.386(he com-)-3.886 F -(mand; none are treated specially)108 652.8 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 669.6 R 2.494 -.8(To n)5.894 H -.894(est when using the backquoted form, escape the inner back-).8 F -(quotes with backslashes.)108 681.6 Q .422 -(If the substitution appears within double quotes, w)108 698.4 R .422 -(ord splitting and pathname e)-.1 F .422(xpansion are not performed)-.15 -F(on the results.)108 710.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 -E(24)193.45 E 0 Cg EP +(mand; none are treated specially)108 729.6 Q(.)-.65 E(GNU Bash 5.0)72 +768 Q(2018 August 7)145.395 E(24)194.555 E 0 Cg EP %%Page: 25 25 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(Arithmetic Expansion)87 84 Q F0 1.034(Arithmetic e)108 96 R 1.034 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .894 +(Command substitutions may be nested.)108 84 R 2.494 -.8(To n)5.894 H +.894(est when using the backquoted form, escape the inner back-).8 F +(quotes with backslashes.)108 96 Q .422 +(If the substitution appears within double quotes, w)108 112.8 R .422 +(ord splitting and pathname e)-.1 F .422(xpansion are not performed)-.15 +F(on the results.)108 124.8 Q/F1 10/Times-Bold@0 SF +(Arithmetic Expansion)87 141.6 Q F0 1.034(Arithmetic e)108 153.6 R 1.034 (xpansion allo)-.15 F 1.034(ws the e)-.25 F -.25(va)-.25 G 1.034 (luation of an arithmetic e).25 F 1.035 (xpression and the substitution of the result.)-.15 F -(The format for arithmetic e)108 108 Q(xpansion is:)-.15 E F1($\(\()144 -124.8 Q/F2 10/Times-Italic@0 SF -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A -F0(The)108 141.6 Q F2 -.2(ex)2.666 G(pr).2 E(ession)-.37 E F0 .165 -(is treated as if it were within double quotes, b)2.906 F .165 +(The format for arithmetic e)108 165.6 Q(xpansion is:)-.15 E F1($\(\() +144 182.4 Q/F2 10/Times-Italic@0 SF -.2(ex)C(pr).2 E(ession)-.37 E F1 +(\)\))A F0(The)108 199.2 Q F2 -.2(ex)2.666 G(pr).2 E(ession)-.37 E F0 +.165(is treated as if it were within double quotes, b)2.906 F .165 (ut a double quote inside the parentheses is not)-.2 F .23 -(treated specially)108 153.6 R 5.23(.A)-.65 G .23(ll tok)-5.23 F .231 +(treated specially)108 211.2 R 5.23(.A)-.65 G .23(ll tok)-5.23 F .231 (ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) -.18 F .231(ariable e)-.25 F .231(xpansion, command substi-)-.15 F 1.06 -(tution, and quote remo)108 165.6 R -.25(va)-.15 G 3.56(l. The).25 F +(tution, and quote remo)108 223.2 R -.25(va)-.15 G 3.56(l. The).25 F 1.059(result is treated as the arithmetic e)3.56 F 1.059 (xpression to be e)-.15 F -.25(va)-.25 G 3.559(luated. Arithmetic).25 F --.15(ex)108 177.6 S(pansions may be nested.).15 E 1.378(The e)108 194.4 -R -.25(va)-.25 G 1.378 +-.15(ex)108 235.2 S(pansions may be nested.).15 E 1.378(The e)108 252 R +-.25(va)-.25 G 1.378 (luation is performed according to the rules listed belo).25 F 3.878(wu) -.25 G(nder)-3.878 E/F3 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F (ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 -(If)5.879 E F2 -.2(ex)108 206.4 S(pr).2 E(ession)-.37 E F0(is in)2.74 E +(If)5.879 E F2 -.2(ex)108 264 S(pr).2 E(ession)-.37 E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E F1(bash)2.5 E F0(prints a message indicating f) -2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 223.2 Q -(ocess Substitution)-.18 E F2(Pr)108 235.2 Q .405(ocess substitution) +2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 280.8 Q +(ocess Substitution)-.18 E F2(Pr)108 292.8 Q .405(ocess substitution) -.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405 (nput or output to be referred to using a \214lename.)-2.905 F .405 -(It tak)5.405 F .405(es the form)-.1 F(of)108 247.2 Q F1(<\()3.25 E F2 +(It tak)5.405 F .405(es the form)-.1 F(of)108 304.8 Q F1(<\()3.25 E F2 (list)A F1(\)).833 E F0(or)3.25 E F1(>\()3.25 E F2(list)A F1(\)).833 E F0 5.75(.T)C .751(he process)-5.75 F F2(list)3.251 E F0 .751 (is run asynchronously)3.251 F 3.251(,a)-.65 G .751 (nd its input or output appears as a \214lename.)-3.251 F .148 -(This \214lename is passed as an ar)108 259.2 R .148 +(This \214lename is passed as an ar)108 316.8 R .148 (gument to the current command as the result of the e)-.18 F 2.647 (xpansion. If)-.15 F(the)2.647 E F1(>\()2.647 E F2(list)A F1(\)).833 E -F0 .559(form is used, writing to the \214le will pro)108 271.2 R .559 +F0 .559(form is used, writing to the \214le will pro)108 328.8 R .559 (vide input for)-.15 F F2(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G (he)-3.059 E F1(<\()3.06 E F2(list)A F1(\)).833 E F0 .56 -(form is used, the \214le passed as an)3.06 F(ar)108 283.2 Q .309 +(form is used, the \214le passed as an)3.06 F(ar)108 340.8 Q .309 (gument should be read to obtain the output of)-.18 F F2(list)2.808 E F0 5.308(.P)C .308(rocess substitution is supported on systems that sup-) --5.308 F(port named pipes \()108 295.2 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt) +-5.308 F(port named pipes \()108 352.8 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt) -2.5 G(he)-2.5 E F1(/de)2.5 E(v/fd)-.15 E F0 -(method of naming open \214les.)2.5 E .896(When a)108 312 R -.25(va)-.2 -G .896(ilable, process substitution is performed simultaneously with pa\ -rameter and v).25 F .897(ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 324 Q(xpansion.)-.15 E F1 --.75(Wo)87 340.8 S(rd Splitting).75 E F0 1.143 -(The shell scans the results of parameter e)108 352.8 R 1.142 +(method of naming open \214les.)2.5 E .896(When a)108 369.6 R -.25(va) +-.2 G .896(ilable, process substitution is performed simultaneously wit\ +h parameter and v).25 F .897(ariable e)-.25 F(xpansion,)-.15 E +(command substitution, and arithmetic e)108 381.6 Q(xpansion.)-.15 E F1 +-.75(Wo)87 398.4 S(rd Splitting).75 E F0 1.143 +(The shell scans the results of parameter e)108 410.4 R 1.142 (xpansion, command substitution, and arithmetic e)-.15 F 1.142 -(xpansion that)-.15 F(did not occur within double quotes for)108 364.8 Q +(xpansion that)-.15 F(did not occur within double quotes for)108 422.4 Q F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 -(The shell treats each character of)108 381.6 R F3(IFS)2.563 E F0 .063 +(The shell treats each character of)108 439.2 R F3(IFS)2.563 E F0 .063 (as a delimiter)2.313 F 2.563(,a)-.4 G .063 (nd splits the results of the other e)-2.563 F .063(xpansions into w) -.15 F(ords)-.1 E .207(using these characters as \214eld terminators.) -108 393.6 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F +108 451.2 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F .207(alue is e)-.25 F(xactly)-.15 E F1()2.707 E F0 -(,)A .836(the def)108 405.6 R .836(ault, then sequences of)-.1 F F1 +(,)A .836(the def)108 463.2 R .836(ault, then sequences of)-.1 F F1 ()3.336 E F0(,)A F1()3.336 E F0 3.336(,a)C(nd)-3.336 E F1 ()3.336 E F0 .837(at the be)3.336 F .837 -(ginning and end of the results of)-.15 F .346(the pre)108 417.6 R .345 +(ginning and end of the results of)-.15 F .346(the pre)108 475.2 R .345 (vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 G .345(equence of)-2.845 F F3(IFS)2.845 E F0 .345 (characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) --.15 E 1.236(to delimit w)108 429.6 R 3.736(ords. If)-.1 F F3(IFS)3.736 +-.15 E 1.236(to delimit w)108 487.2 R 3.736(ords. If)-.1 F F3(IFS)3.736 E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.237 (ault, then sequences of the whitespace characters)-.1 F F1(space)108 -441.6 Q F0(,)A F1(tab)2.507 E F0 2.507(,a)C(nd)-2.507 E F1(newline)2.507 +499.2 Q F0(,)A F1(tab)2.507 E F0 2.507(,a)C(nd)-2.507 E F1(newline)2.507 E F0 .007(are ignored at the be)2.507 F .006(ginning and end of the w) -.15 F .006(ord, as long as the whitespace charac-)-.1 F .92 -(ter is in the v)108 453.6 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an) +(ter is in the v)108 511.2 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an) 3.17 E F3(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E 3.42(yc)-.15 G .92(haracter in)-3.42 F F3(IFS)3.42 E F0 .921 (that is not)3.17 F F3(IFS)3.421 E F0(whitespace,)3.171 E .429 -(along with an)108 465.6 R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 +(along with an)108 523.2 R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 E F0 .428(whitespace characters, delimits a \214eld.)2.678 F 2.928(As) 5.428 G .428(equence of)-2.928 F F3(IFS)2.928 E F0 .428 (whitespace charac-)2.678 F(ters is also treated as a delimiter)108 -477.6 Q 5(.I)-.55 G 2.5(ft)-5 G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E +535.2 Q 5(.I)-.55 G 2.5(ft)-5 G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E F0(is null, no w)2.25 E(ord splitting occurs.)-.1 E 1.927 -(Explicit null ar)108 494.4 R 1.927(guments \()-.18 F F1 .833("").833 G -F0(or)3.594 E F1 .833<0808>5.26 G F0 4.427(\)a)C 1.927 +(Explicit null ar)108 552 R 1.927(guments \()-.18 F F1 .833("").833 G F0 +(or)3.594 E F1 .833<0808>5.26 G F0 4.427(\)a)C 1.927 (re retained and passed to commands as empty strings.)-4.427 F(Unquoted) -6.927 E .485(implicit null ar)108 506.4 R .485 +6.927 E .485(implicit null ar)108 564 R .485 (guments, resulting from the e)-.18 F .484 (xpansion of parameters that ha)-.15 F .784 -.15(ve n)-.2 H 2.984(ov).15 G .484(alues, are remo)-3.234 F -.15(ve)-.15 G 2.984(d. If).15 F(a)2.984 -E 1.571(parameter with no v)108 518.4 R 1.571(alue is e)-.25 F 1.571 +E 1.571(parameter with no v)108 576 R 1.571(alue is e)-.25 F 1.571 (xpanded within double quotes, a null ar)-.15 F 1.572 (gument results and is retained and)-.18 F .724 -(passed to a command as an empty string.)108 530.4 R .724 +(passed to a command as an empty string.)108 588 R .724 (When a quoted null ar)5.724 F .723(gument appears as part of a w)-.18 F -.723(ord whose)-.1 F -.15(ex)108 542.4 S .175 +.723(ord whose)-.1 F -.15(ex)108 600 S .175 (pansion is non-null, the null ar).15 F .176(gument is remo)-.18 F -.15 (ve)-.15 G 2.676(d. That).15 F .176(is, the w)2.676 F(ord)-.1 E/F5 10 /Courier@0 SF -5.1672.676 F F0(becomes)2.676 E F52.676 -E F0 .176(after w)2.676 F .176(ord split-)-.1 F(ting and null ar)108 -554.4 Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 -571.2 Q(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 -588 S(thname Expansion).1 E F0 .371(After w)108 600 R .371 +E F0 .176(after w)2.676 F .176(ord split-)-.1 F(ting and null ar)108 612 +Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 628.8 +Q(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 645.6 +S(thname Expansion).1 E F0 .371(After w)108 657.6 R .371 (ord splitting, unless the)-.1 F F12.871 E F0 .371 (option has been set,)2.871 F F1(bash)2.871 E F0 .37(scans each w)2.87 F .37(ord for the characters)-.1 F F1(*)2.87 E F0(,)A F1(?)2.87 E F0 2.87 (,a)C(nd)-2.87 E F1([)2.87 E F0(.)A .677 -(If one of these characters appears, then the w)108 612 R .677 +(If one of these characters appears, then the w)108 669.6 R .677 (ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F F2(pattern)3.177 E F0 3.177(,a).24 G .678(nd replaced with an alphabeti-)-3.177 F .562 -(cally sorted list of \214lenames matching the pattern \(see)108 624 R +(cally sorted list of \214lenames matching the pattern \(see)108 681.6 R F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo) 2.812 E 3.062(w\). If)-.25 F .561(no matching \214lenames)3.061 F .008 -(are found, and the shell option)108 636 R F1(nullglob)2.508 E F0 .008 +(are found, and the shell option)108 693.6 R F1(nullglob)2.508 E F0 .008 (is not enabled, the w)2.508 F .009(ord is left unchanged.)-.1 F .009 (If the)5.009 F F1(nullglob)2.509 E F0 .009(option is)2.509 F .443 -(set, and no matches are found, the w)108 648 R .443(ord is remo)-.1 F +(set, and no matches are found, the w)108 705.6 R .443(ord is remo)-.1 F -.15(ve)-.15 G 2.943(d. If).15 F(the)2.942 E F1(failglob)2.942 E F0 .442 (shell option is set, and no matches are)2.942 F 1.38 -(found, an error message is printed and the command is not e)108 660 R +(found, an error message is printed and the command is not e)108 717.6 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F F1 (nocaseglob)3.88 E F0(is)3.88 E .104 -(enabled, the match is performed without re)108 672 R -.05(ga)-.15 G +(enabled, the match is performed without re)108 729.6 R -.05(ga)-.15 G .104(rd to the case of alphabetic characters.).05 F .103 -(When a pattern is used)5.103 F .377(for pathname e)108 684 R .377 -(xpansion, the character)-.15 F F1 -.63(``)2.878 G -.55(.').63 G(')-.08 -E F0 .378(at the start of a name or immediately follo)5.378 F .378 -(wing a slash must be)-.25 F 1.354(matched e)108 696 R(xplicitly)-.15 E +(When a pattern is used)5.103 F(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(25)194.555 E 0 Cg EP +%%Page: 26 26 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .377 +(for pathname e)108 84 R .377(xpansion, the character)-.15 F/F1 10 +/Times-Bold@0 SF -.63(``)2.878 G -.55(.').63 G(')-.08 E F0 .378 +(at the start of a name or immediately follo)5.378 F .378 +(wing a slash must be)-.25 F 1.354(matched e)108 96 R(xplicitly)-.15 E 3.854(,u)-.65 G 1.354(nless the shell option)-3.854 F F1(dotglob)3.854 E F0 1.354(is set.)3.854 F 1.354(The \214lenames)6.354 F F1 -.63(``)3.854 G -.55(.').63 G(')-.08 E F0(and)6.354 E F1 -.63(``)3.853 G(..).63 E -.63 ('')-.55 G F0 1.353(must al)6.983 F -.1(wa)-.1 G 1.353(ys be).1 F .485 -(matched e)108 708 R(xplicitly)-.15 E 2.985(,e)-.65 G -.15(ve)-3.235 G +(matched e)108 108 R(xplicitly)-.15 E 2.985(,e)-.65 G -.15(ve)-3.235 G 2.985(ni).15 G(f)-2.985 E F1(dotglob)2.985 E F0 .485(is set.)2.985 F .485(In other cases, the)5.485 F F1 -.63(``)2.985 G -.55(.').63 G(')-.08 E F0 .486(character is not treated specially)5.485 F 5.486(.W)-.65 G (hen)-5.486 E .115(matching a pathname, the slash character must al)108 -720 R -.1(wa)-.1 G .114(ys be matched e).1 F .114 -(xplicitly by a slash in the pattern, b)-.15 F .114(ut in)-.2 F -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(25)193.45 E 0 Cg EP -%%Page: 26 26 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .581 -(other matching conte)108 84 R .581 +120 R -.1(wa)-.1 G .114(ys be matched e).1 F .114 +(xplicitly by a slash in the pattern, b)-.15 F .114(ut in)-.2 F .581 +(other matching conte)108 132 R .581 (xts it can be matched by a special pattern character as described belo) --.15 F 3.081(wu)-.25 G(nder)-3.081 E/F1 9/Times-Bold@0 SF -.09(Pa)3.081 -G(tter).09 E(n)-.135 E(Matching)108 96 Q/F2 9/Times-Roman@0 SF(.)A F0 -.073(See the description of)4.573 F/F3 10/Times-Bold@0 SF(shopt)2.573 E -F0(belo)2.573 E 2.573(wu)-.25 G(nder)-2.573 E F1 .072(SHELL B)2.572 F -(UIL)-.09 E .072(TIN COMMANDS)-.828 F F0 .072(for a description of the) -2.322 F F3(nocaseglob)108 108 Q F0(,)A F3(nullglob)2.5 E F0(,)A F3 -(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F3(dotglob)2.5 E F0 -(shell options.)2.5 E(The)108 124.8 Q F1(GLOBIGNORE)2.63 E F0 .13 -(shell v)2.38 F .131 +-.15 F 3.081(wu)-.25 G(nder)-3.081 E/F2 9/Times-Bold@0 SF -.09(Pa)3.081 +G(tter).09 E(n)-.135 E(Matching)108 144 Q/F3 9/Times-Roman@0 SF(.)A F0 +.073(See the description of)4.573 F F1(shopt)2.573 E F0(belo)2.573 E +2.573(wu)-.25 G(nder)-2.573 E F2 .072(SHELL B)2.572 F(UIL)-.09 E .072 +(TIN COMMANDS)-.828 F F0 .072(for a description of the)2.322 F F1 +(nocaseglob)108 156 Q F0(,)A F1(nullglob)2.5 E F0(,)A F1(failglob)2.5 E +F0 2.5(,a)C(nd)-2.5 E F1(dotglob)2.5 E F0(shell options.)2.5 E(The)108 +172.8 Q F2(GLOBIGNORE)2.63 E F0 .13(shell v)2.38 F .131 (ariable may be used to restrict the set of \214le names matching a)-.25 F/F4 10/Times-Italic@0 SF(pattern)2.631 E F0 5.131(.I).24 G(f)-5.131 E -F1(GLO-)2.631 E(BIGNORE)108 136.8 Q F0 2.015(is set, each matching \214\ -le name that also matches one of the patterns in)4.265 F F1(GLOBIGNORE) -4.515 E F0(is)4.264 E(remo)108 148.8 Q -.15(ve)-.15 G 3.914(df).15 G -1.414(rom the list of matches.)-3.914 F 1.415(If the)6.415 F F3 +F2(GLO-)2.631 E(BIGNORE)108 184.8 Q F0 2.015(is set, each matching \214\ +le name that also matches one of the patterns in)4.265 F F2(GLOBIGNORE) +4.515 E F0(is)4.264 E(remo)108 196.8 Q -.15(ve)-.15 G 3.914(df).15 G +1.414(rom the list of matches.)-3.914 F 1.415(If the)6.415 F F1 (nocaseglob)3.915 E F0 1.415(option is set, the matching ag)3.915 F -1.415(ainst the patterns in)-.05 F F1(GLOBIGNORE)108 160.8 Q F0 .147 +1.415(ainst the patterns in)-.05 F F2(GLOBIGNORE)108 208.8 Q F0 .147 (is performed without re)2.397 F -.05(ga)-.15 G .147(rd to case.).05 F -.146(The \214lenames)5.146 F F3 -.63(``)2.646 G -.55(.').63 G(')-.08 E -F0(and)5.146 E F3 -.63(``)2.646 G(..).63 E -.63('')-.55 G F0 .146 -(are al)5.776 F -.1(wa)-.1 G .146(ys ignored when).1 F F1(GLOBIGNORE)108 -172.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 -(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F1(GLOBIGNORE)3.327 E F0 +.146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E +F0(and)5.146 E F1 -.63(``)2.646 G(..).63 E -.63('')-.55 G F0 .146 +(are al)5.776 F -.1(wa)-.1 G .146(ys ignored when).1 F F2(GLOBIGNORE)108 +220.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 +(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F2(GLOBIGNORE)3.327 E F0 .827(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of) --.25 F .683(enabling the)108 184.8 R F3(dotglob)3.183 E F0 .682 +-.25 F .683(enabling the)108 232.8 R F1(dotglob)3.183 E F0 .682 (shell option, so all other \214lenames be)3.183 F .682(ginning with a) --.15 F F3 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) -5.682 F 2.282 -.8(To g)5.682 H .682(et the old).8 F(beha)108 196.8 Q +-.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) +5.682 F 2.282 -.8(To g)5.682 H .682(et the old).8 F(beha)108 244.8 Q 1.184(vior of ignoring \214lenames be)-.2 F 1.184(ginning with a)-.15 F -F3 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e) --.1 E F3 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.185 -(one of the patterns in)6.185 F F1(GLOBIGNORE)3.685 E F2(.)A F0(The)108 -208.8 Q F3(dotglob)3.132 E F0 .632(option is disabled when)3.132 F F1 +F1 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e) +-.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.185 +(one of the patterns in)6.185 F F2(GLOBIGNORE)3.685 E F3(.)A F0(The)108 +256.8 Q F1(dotglob)3.132 E F0 .632(option is disabled when)3.132 F F2 (GLOBIGNORE)3.132 E F0 .632(is unset.)2.882 F .631 -(The pattern matching honors the setting of)5.632 F(the)108 220.8 Q F3 -(extglob)2.5 E F0(shell option.)2.5 E F3 -.1(Pa)108 237.6 S(tter).1 E -2.5(nM)-.15 G(atching)-2.5 E F0(An)108 254.4 Q 3.138(yc)-.15 G .638(har\ +(The pattern matching honors the setting of)5.632 F(the)108 268.8 Q F1 +(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 285.6 S(tter).1 E +2.5(nM)-.15 G(atching)-2.5 E F0(An)108 302.4 Q 3.138(yc)-.15 G .638(har\ acter that appears in a pattern, other than the special pattern charact\ ers described belo)-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 3.62 -(itself. The)108 266.4 R 1.12(NUL character may not occur in a pattern.) +(itself. The)108 314.4 R 1.12(NUL character may not occur in a pattern.) 3.62 F 3.62(Ab)6.12 G 1.12(ackslash escapes the follo)-3.62 F 1.12 (wing character; the)-.25 F .576 -(escaping backslash is discarded when matching.)108 278.4 R .576 +(escaping backslash is discarded when matching.)108 326.4 R .576 (The special pattern characters must be quoted if the)5.576 F 3.076(ya) --.15 G(re)-3.076 E(to be matched literally)108 290.4 Q(.)-.65 E -(The special pattern characters ha)108 307.2 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F3(*)144 324 Q F0 .377(Matches an) -180 324 R 2.877(ys)-.15 G .376(tring, including the null string.)-2.877 -F .376(When the)5.376 F F3(globstar)2.876 E F0 .376 -(shell option is enabled,)2.876 F(and)180 336 Q F3(*)3.275 E F0 .775 +-.15 G(re)-3.076 E(to be matched literally)108 338.4 Q(.)-.65 E +(The special pattern characters ha)108 355.2 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1(*)144 372 Q F0 .377(Matches an) +180 372 R 2.877(ys)-.15 G .376(tring, including the null string.)-2.877 +F .376(When the)5.376 F F1(globstar)2.876 E F0 .376 +(shell option is enabled,)2.876 F(and)180 384 Q F1(*)3.275 E F0 .775 (is used in a pathname e)3.275 F .775(xpansion conte)-.15 F .775(xt, tw) --.15 F 3.275(oa)-.1 G(djacent)-3.275 E F3(*)3.275 E F0 3.275(su)C .775 +-.15 F 3.275(oa)-.1 G(djacent)-3.275 E F1(*)3.275 E F0 3.275(su)C .775 (sed as a single pattern)-3.275 F 1.058(will match all \214les and zero\ - or more directories and subdirectories.)180 348 R 1.058(If follo)6.058 -F 1.058(wed by a)-.25 F F3(/)3.558 E F0(,)A(tw)180 360 Q 2.5(oa)-.1 G -(djacent)-2.5 E F3(*)2.5 E F0 2.5(sw)C -(ill match only directories and subdirectories.)-2.5 E F3(?)144 372 Q F0 -(Matches an)180 372 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F3 -([...])144 384 Q F0 .578(Matches an)180 384 R 3.078(yo)-.15 G .578 + or more directories and subdirectories.)180 396 R 1.058(If follo)6.058 +F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 408 Q 2.5(oa)-.1 G +(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C +(ill match only directories and subdirectories.)-2.5 E F1(?)144 420 Q F0 +(Matches an)180 420 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1 +([...])144 432 Q F0 .578(Matches an)180 432 R 3.078(yo)-.15 G .578 (ne of the enclosed characters.)-3.078 F 3.079(Ap)5.579 G .579 (air of characters separated by a h)-3.079 F(yphen)-.05 E .685 -(denotes a)180 396 R F4 -.15(ra)3.185 G(ng).15 E 3.184(ee)-.1 G(xpr) +(denotes a)180 444 R F4 -.15(ra)3.185 G(ng).15 E 3.184(ee)-.1 G(xpr) -3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684 (haracter that f).15 F .684(alls between those tw)-.1 F 3.184(oc)-.1 G -.684(haracters, inclu-)-3.184 F(si)180 408 Q -.15(ve)-.25 G 3.712(,u).15 +.684(haracters, inclu-)-3.184 F(si)180 456 Q -.15(ve)-.25 G 3.712(,u).15 G 1.212(sing the current locale')-3.712 F 3.712(sc)-.55 G 1.212 (ollating sequence and character set, is matched.)-3.712 F 1.213(If the) -6.213 F 1.124(\214rst character follo)180 420 R 1.124(wing the)-.25 F F3 -([)3.624 E F0 1.124(is a)3.624 F F3(!)3.624 E F0 1.124(or a)6.124 F F3 +6.213 F 1.124(\214rst character follo)180 468 R 1.124(wing the)-.25 F F1 +([)3.624 E F0 1.124(is a)3.624 F F1(!)3.624 E F0 1.124(or a)6.124 F F1 (^)3.623 E F0 1.123(then an)3.623 F 3.623(yc)-.15 G 1.123 (haracter not enclosed is matched.)-3.623 F .894 -(The sorting order of characters in range e)180 432 R .895 +(The sorting order of characters in range e)180 480 R .895 (xpressions is determined by the current locale)-.15 F .376(and the v) -180 444 R .376(alues of the)-.25 F F1(LC_COLLA)2.875 E(TE)-.855 E F0(or) -2.625 E F1(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 +180 492 R .376(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0(or) +2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 (ariables, if set.)-.25 F 1.975 -.8(To o)5.375 H .375(btain the tra-).8 -F .067(ditional interpretation of range e)180 456 R .067 -(xpressions, where)-.15 F F3([a\255d])2.567 E F0 .068(is equi)2.568 F --.25(va)-.25 G .068(lent to).25 F F3([abcd])2.568 E F0 2.568(,s)C .068 -(et v)-2.568 F(alue)-.25 E .157(of the)180 468 R F3(LC_ALL)2.657 E F0 -.157(shell v)2.657 F .157(ariable to)-.25 F F3(C)2.657 E F0 2.657(,o)C -2.657(re)-2.657 G .157(nable the)-2.657 F F3(globasciiranges)2.657 E F0 -.156(shell option.)2.656 F(A)5.156 E F32.656 E F0(may)2.656 E .193(\ +F .067(ditional interpretation of range e)180 504 R .067 +(xpressions, where)-.15 F F1([a\255d])2.567 E F0 .068(is equi)2.568 F +-.25(va)-.25 G .068(lent to).25 F F1([abcd])2.568 E F0 2.568(,s)C .068 +(et v)-2.568 F(alue)-.25 E .157(of the)180 516 R F1(LC_ALL)2.657 E F0 +.157(shell v)2.657 F .157(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C +2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 +.156(shell option.)2.656 F(A)5.156 E F12.656 E F0(may)2.656 E .193(\ be matched by including it as the \214rst or last character in the set.) -180 480 R(A)5.193 E F3(])2.693 E F0 .194(may be matched by)2.693 F -(including it as the \214rst character in the set.)180 492 Q -.4(Wi)180 -510 S(thin).4 E F3([)3.071 E F0(and)3.071 E F3(])3.071 E F0(,)A F4 -.15 +180 528 R(A)5.193 E F1(])2.693 E F0 .194(may be matched by)2.693 F +(including it as the \214rst character in the set.)180 540 Q -.4(Wi)180 +558 S(thin).4 E F1([)3.071 E F0(and)3.071 E F1(])3.071 E F0(,)A F4 -.15 (ch)3.071 G(ar).15 E .571(acter classes)-.15 F F0 .571 -(can be speci\214ed using the syntax)3.071 F F3([:)3.07 E F4(class)A F3 +(can be speci\214ed using the syntax)3.071 F F1([:)3.07 E F4(class)A F1 (:])A F0 3.07(,w)C(here)-3.07 E F4(class)3.07 E F0(is one of the follo) -180 522 Q(wing classes de\214ned in the POSIX standard:)-.25 E F3 8.173 -(alnum alpha ascii blank cntrl digit graph lo)180 534 R 8.173 -(wer print punct space)-.1 F 5(upper w)180 546 R 5(ord xdigit)-.1 F F0 -4.29(Ac)180 558 S 1.789(haracter class matches an)-4.29 F 4.289(yc)-.15 -G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F3 -.1 +180 570 Q(wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 +(alnum alpha ascii blank cntrl digit graph lo)180 582 R 8.173 +(wer print punct space)-.1 F 5(upper w)180 594 R 5(ord xdigit)-.1 F F0 +4.29(Ac)180 606 S 1.789(haracter class matches an)-4.29 F 4.289(yc)-.15 +G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1 -.1 (wo)4.289 G(rd).1 E F0(character)4.289 E -(class matches letters, digits, and the character _.)180 570 Q -.4(Wi) -180 588 S(thin).4 E F3([)4.536 E F0(and)4.536 E F3(])4.536 E F0 4.536 +(class matches letters, digits, and the character _.)180 618 Q -.4(Wi) +180 636 S(thin).4 E F1([)4.536 E F0(and)4.536 E F1(])4.536 E F0 4.536 (,a)C(n)-4.536 E F4 2.036(equivalence class)4.536 F F0 2.037 -(can be speci\214ed using the syntax)4.536 F F3([=)4.537 E F4(c)A F3(=]) +(can be speci\214ed using the syntax)4.536 F F1([=)4.537 E F4(c)A F1(=]) A F0 4.537(,w)C(hich)-4.537 E .125(matches all characters with the same\ - collation weight \(as de\214ned by the current locale\) as)180 600 R -(the character)180 612 Q F4(c)2.5 E F0(.)A -.4(Wi)180 630 S(thin).4 E F3 -([)2.5 E F0(and)2.5 E F3(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F3([.)2.5 -E F4(symbol)A F3(.])A F0(matches the collating symbol)2.5 E F4(symbol) -2.5 E F0(.)A .704(If the)108 646.8 R F3(extglob)3.204 E F0 .705 -(shell option is enabled using the)3.204 F F3(shopt)3.205 E F0 -.2(bu) + collation weight \(as de\214ned by the current locale\) as)180 648 R +(the character)180 660 Q F4(c)2.5 E F0(.)A -.4(Wi)180 678 S(thin).4 E F1 +([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)2.5 +E F4(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F4(symbol) +2.5 E F0(.)A .704(If the)108 694.8 R F1(extglob)3.204 E F0 .705 +(shell option is enabled using the)3.204 F F1(shopt)3.205 E F0 -.2(bu) 3.205 G .705(iltin, se).2 F -.15(ve)-.25 G .705(ral e).15 F .705 (xtended pattern matching operators)-.15 F .256(are recognized.)108 -658.8 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F4 +706.8 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F4 (pattern-list)2.755 E F0 .255 -(is a list of one or more patterns separated by a)2.755 F F3(|)2.755 E +(is a list of one or more patterns separated by a)2.755 F F1(|)2.755 E F0(.)A(Composite patterns may be formed using one or more of the follo) -108 670.8 Q(wing sub-patterns:)-.25 E F3(?\()144 694.8 Q F4 -(pattern-list).833 E F3(\)).833 E F0 -(Matches zero or one occurrence of the gi)180 706.8 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(26)193.45 E 0 Cg EP +108 718.8 Q(wing sub-patterns:)-.25 E(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(26)194.555 E 0 Cg EP %%Page: 27 27 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(*\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E -F0(Matches zero or more occurrences of the gi)180 96 Q -.15(ve)-.25 G -2.5(np).15 G(atterns)-2.5 E F1(+\()144 108 Q F2(pattern-list).833 E F1 -(\)).833 E F0(Matches one or more occurrences of the gi)180 120 Q -.15 -(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 132 Q F2(pattern-list) -.833 E F1(\)).833 E F0(Matches one of the gi)180 144 Q -.15(ve)-.25 G -2.5(np).15 G(atterns)-2.5 E F1(!\()144 156 Q F2(pattern-list).833 E F1 -(\)).833 E F0(Matches an)180 168 Q(ything e)-.15 E(xcept one of the gi) --.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E .968(Complicated e)108 -184.8 R .968(xtended pattern matching ag)-.15 F .968 -(ainst long strings is slo)-.05 F 2.269 -.65(w, e)-.25 H .969 +SF(?\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E +F0(Matches zero or one occurrence of the gi)180 96 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E F1(*\()144 108 Q F2(pattern-list).833 E F1(\)) +.833 E F0(Matches zero or more occurrences of the gi)180 120 Q -.15(ve) +-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 132 Q F2(pattern-list).833 +E F1(\)).833 E F0(Matches one or more occurrences of the gi)180 144 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 156 Q F2 +(pattern-list).833 E F1(\)).833 E F0(Matches one of the gi)180 168 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(!\()144 180 Q F2 +(pattern-list).833 E F1(\)).833 E F0(Matches an)180 192 Q(ything e)-.15 +E(xcept one of the gi)-.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E +.968(Complicated e)108 208.8 R .968(xtended pattern matching ag)-.15 F +.968(ainst long strings is slo)-.05 F 2.269 -.65(w, e)-.25 H .969 (specially when the patterns contain).65 F 1.23 -(alternations and the strings contain multiple matches.)108 196.8 R 1.23 +(alternations and the strings contain multiple matches.)108 220.8 R 1.23 (Using separate matches ag)6.23 F 1.23(ainst shorter strings, or)-.05 F (using arrays of strings instead of a single long string, may be f)108 -208.8 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 225.6 Q -.1(va)-.1 G(l).1 -E F0 1.112(After the preceding e)108 237.6 R 1.112 +232.8 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 249.6 Q -.1(va)-.1 G(l).1 +E F0 1.112(After the preceding e)108 261.6 R 1.112 (xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) 3.613 E F0(,)A F1<08>3.613 E F0 3.613(,a)C(nd)-3.613 E F1(")4.446 E F0 -1.113(that did not result)4.446 F(from one of the abo)108 249.6 Q .3 +1.113(that did not result)4.446 F(from one of the abo)108 273.6 Q .3 -.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3 -10.95/Times-Bold@0 SF(REDIRECTION)72 266.4 Q F0 .545 -(Before a command is e)108 278.4 R -.15(xe)-.15 G .545 +10.95/Times-Bold@0 SF(REDIRECTION)72 290.4 Q F0 .545 +(Before a command is e)108 302.4 R -.15(xe)-.15 G .545 (cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E (ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .405 -(by the shell.)108 290.4 R .405(Redirection allo)5.405 F .405(ws comman\ +(by the shell.)108 314.4 R .405(Redirection allo)5.405 F .405(ws comman\ ds' \214le handles to be duplicated, opened, closed, made to refer to) --.25 F(dif)108 302.4 Q 1.02(ferent \214les, and can change the \214les \ +-.25 F(dif)108 326.4 Q 1.02(ferent \214les, and can change the \214les \ the command reads from and writes to.)-.25 F 1.019 (Redirection may also be)6.019 F .215 -(used to modify \214le handles in the current shell e)108 314.4 R -.15 +(used to modify \214le handles in the current shell e)108 338.4 R -.15 (xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E .215(wing redirection operators)-.25 F .876(may precede or appear an)108 -326.4 R .876(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 +350.4 R .876(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 .875(or may follo)4.145 F 3.375(wa)-.25 G F2(command)A F0 5.875(.R).77 G -.875(edirections are)-5.875 F(processed in the order the)108 338.4 Q 2.5 +.875(edirections are)-5.875 F(processed in the order the)108 362.4 Q 2.5 (ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\ h redirection that may be preceded by a \214le descriptor number may in\ -stead be preceded by a w)108 355.2 R .772(ord of)-.1 F .293(the form {) -108 367.2 R F2(varname)A F0 2.793(}. In)B .293 +stead be preceded by a w)108 379.2 R .772(ord of)-.1 F .293(the form {) +108 391.2 R F2(varname)A F0 2.793(}. In)B .293 (this case, for each redirection operator e)2.793 F .293 -(xcept >&- and <&-, the shell will allocate)-.15 F 3.179<618c>108 379.2 +(xcept >&- and <&-, the shell will allocate)-.15 F 3.179<618c>108 403.2 S .679(le descriptor greater than or equal to 10 and assign it to)-3.179 F F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 -(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 391.2 Q +(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 415.2 Q F0 .6(}, the v)B .6(alue of)-.25 F F2(varname)3.1 E F0 .599 (de\214nes the \214le descriptor to close.)3.1 F .599(If {)5.599 F F2 (varname)A F0 3.099(}i)C 3.099(ss)-3.099 G .599 -(upplied, the redirection)-3.099 F 1.238(persists be)108 403.2 R 1.238 +(upplied, the redirection)-3.099 F 1.238(persists be)108 427.2 R 1.238 (yond the scope of the command, allo)-.15 F 1.238 (wing the shell programmer to manage the \214le descriptor)-.25 F -(himself.)108 415.2 Q .284(In the follo)108 432 R .283(wing description\ +(himself.)108 439.2 Q .284(In the follo)108 456 R .283(wing description\ s, if the \214le descriptor number is omitted, and the \214rst characte\ -r of the redirect-)-.25 F .512(ion operator is)108 444 R F1(<)3.012 E F0 +r of the redirect-)-.25 F .512(ion operator is)108 468 R F1(<)3.012 E F0 3.012(,t)C .512 (he redirection refers to the standard input \(\214le descriptor 0\).) -3.012 F .512(If the \214rst character of the)5.512 F -(redirection operator is)108 456 Q F1(>)2.5 E F0 2.5(,t)C +(redirection operator is)108 480 Q F1(>)2.5 E F0 2.5(,t)C (he redirection refers to the standard output \(\214le descriptor 1\).) --2.5 E .825(The w)108 472.8 R .825(ord follo)-.1 F .824 +-2.5 E .825(The w)108 496.8 R .825(ord follo)-.1 F .824 (wing the redirection operator in the follo)-.25 F .824 (wing descriptions, unless otherwise noted, is sub-)-.25 F .462 -(jected to brace e)108 484.8 R .462(xpansion, tilde e)-.15 F .463 +(jected to brace e)108 508.8 R .462(xpansion, tilde e)-.15 F .463 (xpansion, parameter and v)-.15 F .463(ariable e)-.25 F .463 -(xpansion, command substitution, arith-)-.15 F .867(metic e)108 496.8 R +(xpansion, command substitution, arith-)-.15 F .867(metic e)108 520.8 R .867(xpansion, quote remo)-.15 F -.25(va)-.15 G .867(l, pathname e).25 F .867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 -F .866(xpands to more than one)-.15 F -.1(wo)108 508.8 S(rd,).1 E F1 +F .866(xpands to more than one)-.15 F -.1(wo)108 532.8 S(rd,).1 E F1 (bash)2.5 E F0(reports an error)2.5 E(.)-.55 E -(Note that the order of redirections is signi\214cant.)108 525.6 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 542.4 Q F1(>)2.5 +(Note that the order of redirections is signi\214cant.)108 549.6 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 566.4 Q F1(>)2.5 E F0(dirlist 2)2.5 E F1(>&)A F0(1)A -(directs both standard output and standard error to the \214le)108 559.2 -Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 576 +(directs both standard output and standard error to the \214le)108 583.2 +Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 600 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527 -(directs only the standard output to \214le)108 592.8 R F2(dirlist)3.027 +(directs only the standard output to \214le)108 616.8 R F2(dirlist)3.027 E F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527 (as duplicated from the standard)-.1 F -(output before the standard output w)108 604.8 Q(as redirected to)-.1 E -F2(dirlist)2.5 E F0(.).68 E F1(Bash)108 621.6 Q F0 .599(handles se)3.099 +(output before the standard output w)108 628.8 Q(as redirected to)-.1 E +F2(dirlist)2.5 E F0(.).68 E F1(Bash)108 645.6 Q F0 .599(handles se)3.099 F -.15(ve)-.25 G .599(ral \214lenames specially when the).15 F 3.099(ya) -.15 G .598(re used in redirections, as described in the follo)-3.099 F -(wing)-.25 E 3.477(table. If)108 633.6 R .977 +(wing)-.25 E 3.477(table. If)108 657.6 R .977 (the operating system on which)3.477 F F1(bash)3.478 E F0 .978 (is running pro)3.478 F .978 (vides these special \214les, bash will use them;)-.15 F -(otherwise it will emulate them internally with the beha)108 645.6 Q -(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 662.4 Q(v/fd/)-.15 -E F2(fd)A F0(If)180 674.4 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E +(otherwise it will emulate them internally with the beha)108 669.6 Q +(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 686.4 Q(v/fd/)-.15 +E F2(fd)A F0(If)180 698.4 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E (ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F2(fd)2.5 E F0 -(is duplicated.)2.5 E F1(/de)144 686.4 Q(v/stdin)-.15 E F0 -(File descriptor 0 is duplicated.)180 698.4 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(27)193.45 E 0 Cg EP +(is duplicated.)2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(27) +194.555 E 0 Cg EP %%Page: 28 28 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(/de)144 84 Q(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 -96 Q F1(/de)144 108 Q(v/stderr)-.15 E F0 -(File descriptor 2 is duplicated.)180 120 Q F1(/de)144 132 Q(v/tcp/)-.15 -E/F2 10/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 144 Q F2 -(host)2.997 E F0 .497(is a v)2.997 F .497 +SF(/de)144 84 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 +96 Q F1(/de)144 108 Q(v/stdout)-.15 E F0 +(File descriptor 1 is duplicated.)180 120 Q F1(/de)144 132 Q(v/stderr) +-.15 E F0(File descriptor 2 is duplicated.)180 144 Q F1(/de)144 156 Q +(v/tcp/)-.15 E/F2 10/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 +168 Q F2(host)2.997 E F0 .497(is a v)2.997 F .497 (alid hostname or Internet address, and)-.25 F F2(port)2.996 E F0 .496 (is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 156 Q F1(bash)2.5 E F0 +(vice name,)180 180 Q F1(bash)2.5 E F0 (attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144 -168 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 180 Q F2(host) +192 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 204 Q F2(host) 2.996 E F0 .496(is a v)2.996 F .496 (alid hostname or Internet address, and)-.25 F F2(port)2.997 E F0 .497 (is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 192 Q F1(bash)2.5 E F0 +(vice name,)180 216 Q F1(bash)2.5 E F0 (attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108 -208.8 S(ailure to open or create a \214le causes the redirection to f) +232.8 S(ailure to open or create a \214le causes the redirection to f) -2.6 E(ail.)-.1 E .947(Redirections using \214le descriptors greater th\ -an 9 should be used with care, as the)108 225.6 R 3.446(ym)-.15 G .946 +an 9 should be used with care, as the)108 249.6 R 3.446(ym)-.15 G .946 (ay con\215ict with \214le)-3.446 F -(descriptors the shell uses internally)108 237.6 Q(.)-.65 E F1(Redir)87 -254.4 Q(ecting Input)-.18 E F0 .391 +(descriptors the shell uses internally)108 261.6 Q(.)-.65 E F1(Redir)87 +278.4 Q(ecting Input)-.18 E F0 .391 (Redirection of input causes the \214le whose name results from the e) -108 266.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 -(to be opened for read-)3.661 F(ing on \214le descriptor)108 278.4 Q F2 +108 290.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 +(to be opened for read-)3.661 F(ing on \214le descriptor)108 302.4 Q F2 (n)2.5 E F0 2.5(,o).24 G 2.5(rt)-2.5 G (he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0 (is not speci\214ed.)2.74 E -(The general format for redirecting input is:)108 295.2 Q([)144 312 Q F2 -(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 328.8 Q(ecting Output) +(The general format for redirecting input is:)108 319.2 Q([)144 336 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 352.8 Q(ecting Output) -.18 E F0 .175 (Redirection of output causes the \214le whose name results from the e) -108 340.8 R .174(xpansion of)-.15 F F2(wor)3.014 E(d)-.37 E F0 .174 -(to be opened for writ-)3.444 F .824(ing on \214le descriptor)108 352.8 +108 364.8 R .174(xpansion of)-.15 F F2(wor)3.014 E(d)-.37 E F0 .174 +(to be opened for writ-)3.444 F .824(ing on \214le descriptor)108 376.8 R F2(n)3.324 E F0 3.324(,o).24 G 3.324(rt)-3.324 G .824 (he standard output \(\214le descriptor 1\) if)-3.324 F F2(n)3.684 E F0 .824(is not speci\214ed.)3.564 F .825(If the \214le does not)5.825 F --.15(ex)108 364.8 S(ist it is created; if it does e).15 E +-.15(ex)108 388.8 S(ist it is created; if it does e).15 E (xist it is truncated to zero size.)-.15 E -(The general format for redirecting output is:)108 381.6 Q([)144 398.4 Q +(The general format for redirecting output is:)108 405.6 Q([)144 422.4 Q F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .155 -(If the redirection operator is)108 415.2 R F1(>)2.655 E F0 2.655(,a)C +(If the redirection operator is)108 439.2 R F1(>)2.655 E F0 2.655(,a)C .155(nd the)-2.655 F F1(noclob)2.655 E(ber)-.1 E F0 .154(option to the) 2.654 F F1(set)2.654 E F0 -.2(bu)2.654 G .154 -(iltin has been enabled, the redirection).2 F .657(will f)108 427.2 R +(iltin has been enabled, the redirection).2 F .657(will f)108 451.2 R .657(ail if the \214le whose name results from the e)-.1 F .658 (xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .658 (ists and is a re).15 F .658(gular \214le.)-.15 F .658(If the redi-) -5.658 F .409(rection operator is)108 439.2 R F1(>|)2.909 E F0 2.909(,o)C +5.658 F .409(rection operator is)108 463.2 R F1(>|)2.909 E F0 2.909(,o)C 2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409 (option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.908 G .408 (iltin command).2 F(is not enabled, the redirection is attempted e)108 -451.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) +475.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) -2.5 E F2(wor)2.5 E(d)-.37 E F0 -.15(ex)2.5 G(ists.).15 E F1 -.25(Ap)87 -468 S(pending Redir).25 E(ected Output)-.18 E F0 .641 -(Redirection of output in this f)108 480 R .642 +492 S(pending Redir).25 E(ected Output)-.18 E F0 .641 +(Redirection of output in this f)108 504 R .642 (ashion causes the \214le whose name results from the e)-.1 F .642 (xpansion of)-.15 F F2(wor)3.482 E(d)-.37 E F0 .642(to be)3.912 F .474 -(opened for appending on \214le descriptor)108 492 R F2(n)2.974 E F0 +(opened for appending on \214le descriptor)108 516 R F2(n)2.974 E F0 2.974(,o).24 G 2.974(rt)-2.974 G .474 (he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.333 E F0 .473(is not speci\214ed.)3.213 F(If)5.473 E(the \214le does not e)108 -504 Q(xist it is created.)-.15 E -(The general format for appending output is:)108 520.8 Q([)144 537.6 Q -F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 554.4 Q +528 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 544.8 Q([)144 561.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 578.4 Q (ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .248 -(This construct allo)108 566.4 R .249(ws both the standard output \(\ +(This construct allo)108 590.4 R .249(ws both the standard output \(\ \214le descriptor 1\) and the standard error output \(\214le descrip-) -.25 F(tor 2\) to be redirected to the \214le whose name is the e)108 -578.4 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E -(There are tw)108 595.2 Q 2.5(of)-.1 G +602.4 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E +(There are tw)108 619.2 Q 2.5(of)-.1 G (ormats for redirecting standard output and standard error:)-2.5 E F1 -(&>)144 612 Q F2(wor)A(d)-.37 E F0(and)108 624 Q F1(>&)144 636 Q F2(wor) -A(d)-.37 E F0(Of the tw)108 652.8 Q 2.5(of)-.1 G +(&>)144 636 Q F2(wor)A(d)-.37 E F0(and)108 648 Q F1(>&)144 660 Q F2(wor) +A(d)-.37 E F0(Of the tw)108 676.8 Q 2.5(of)-.1 G (orms, the \214rst is preferred.)-2.5 E(This is semantically equi)5 E --.25(va)-.25 G(lent to).25 E F1(>)144 669.6 Q F2(wor)A(d)-.37 E F0(2)2.5 -E F1(>&)A F0(1)A .115(When using the second form,)108 686.4 R F2(wor) +-.25(va)-.25 G(lent to).25 E F1(>)144 693.6 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A .115(When using the second form,)108 710.4 R F2(wor) 2.614 E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or) -.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.614(td)-2.614 G -.114(oes, other redirection operators)-2.614 F(apply \(see)108 698.4 Q +.114(oes, other redirection operators)-2.614 F(apply \(see)108 722.4 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E (w\) for compatibility reasons.)-.25 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(28)193.45 E 0 Cg EP +(2018 August 7)145.395 E(28)194.555 E 0 Cg EP %%Page: 29 29 %%BeginPageSetup BP @@ -3779,7 +3805,7 @@ F0 2.754<2c8c>C .254(le descriptor)-2.754 F F2(n)3.114 E F0 .254 3.466 E F0 3.466(,t)C .965 (he standard output and standard error are redirected as described) -3.466 F(pre)108 691.2 Q(viously)-.25 E(.)-.65 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(29)193.45 E 0 Cg EP +(2018 August 7)145.395 E(29)194.555 E 0 Cg EP %%Page: 30 30 %%BeginPageSetup BP @@ -3903,8 +3929,8 @@ F1(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 .532(The \214rst ele-)5.532 F(ment of the)108 720 Q F4(FUNCN)2.5 E(AME) -.18 E F0 -.25(va)2.25 G (riable is set to the name of the function while the function is e).25 E --.15(xe)-.15 G(cuting.).15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 -E(30)193.45 E 0 Cg EP +-.15(xe)-.15 G(cuting.).15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 +E(30)194.555 E 0 Cg EP %%Page: 31 31 %%BeginPageSetup BP @@ -4044,7 +4070,7 @@ E F0 -.25(va)2.871 G .371 -.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le) 5.44 F -.15(ve)-.25 G .44(ls are listed in order).15 F (of decreasing precedence.)108 691.2 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(31)193.45 E 0 Cg EP +(2018 August 7)145.395 E(31)194.555 E 0 Cg EP %%Page: 32 32 %%BeginPageSetup BP @@ -4144,7 +4170,7 @@ R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) F2(<)3.595 E F0(and)3.595 E F2(>)3.595 E F0 1.095(operators sort le) 3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.096 E F2(test)3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 -714 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(32)193.45 E 0 Cg EP +714 Q(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(32)194.555 E 0 Cg EP %%Page: 33 33 %%BeginPageSetup BP @@ -4234,7 +4260,7 @@ F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(string1)108 679.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 (Tr)144 691.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 (string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E(GNU Bash 5.0) -72 768 Q(2018 March 15)144.29 E(33)193.45 E 0 Cg EP +72 768 Q(2018 August 7)145.395 E(33)194.555 E 0 Cg EP %%Page: 34 34 %%BeginPageSetup BP @@ -4360,8 +4386,8 @@ ful, or if the command name contains one or more slashes, the shell e) (subshell reinitializes itself, so that the ef)108 722.4 R .329 (fect is as if a ne)-.25 F 2.83(ws)-.25 G .33(hell had been in)-2.83 F -.2(vo)-.4 G -.1(ke).2 G 2.83(dt).1 G 2.83(oh)-2.83 G .33 -(andle the script, with)-2.83 F(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(34)193.45 E 0 Cg EP +(andle the script, with)-2.83 F(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(34)194.555 E 0 Cg EP %%Page: 35 35 %%BeginPageSetup BP @@ -4450,7 +4476,7 @@ G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo) 640.8 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377 (cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F F13.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) -108 652.8 R(not in)2.5 E F5(posix)2.5 E F0(mode,)2.5 E F1(bash)2.5 E F0 +108 652.8 R(not in)2.5 E F5(posix mode)2.5 E F0(,)A F1(bash)2.5 E F0 (clears the)2.5 E F12.5 E F0(option in such subshells.)2.5 E .404 (If a command is follo)108 669.6 R .404(wed by a)-.25 F F1(&)2.904 E F0 .405(and job control is not acti)2.904 F -.15(ve)-.25 G 2.905(,t).15 G @@ -4459,7 +4485,7 @@ F13.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) (.O)C .198(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc) .1 G .197(ommand inherits the \214le descriptors of the calling shell) -2.698 F(as modi\214ed by redirections.)108 693.6 Q(GNU Bash 5.0)72 768 -Q(2018 March 15)144.29 E(35)193.45 E 0 Cg EP +Q(2018 August 7)145.395 E(35)194.555 E 0 Cg EP %%Page: 36 36 %%BeginPageSetup BP @@ -4595,8 +4621,8 @@ G .93(rom the)-3.43 F 1.357(jobs table with the)108 686.4 R F3(diso) (shell option has been set with)2.666 F F3(shopt)2.666 E F0(,)A F3(bash) 2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166 (to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108 -727.2 Q(xits.)-.15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(36) -193.45 E 0 Cg EP +727.2 Q(xits.)-.15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(36) +194.555 E 0 Cg EP %%Page: 37 37 %%BeginPageSetup BP @@ -4738,7 +4764,8 @@ R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F (reports such changes immediately)2.648 F 5.147(.A)-.65 G .447 -.15 (ny t)-5.147 H .147(rap on).15 F F4(SIGCHLD)2.647 E F0 .147(is e)2.397 F -.15(xe)-.15 G(-).15 E(cuted for each child that e)108 715.2 Q(xits.) --.15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(37)193.45 E 0 Cg EP +-.15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(37)194.555 E 0 Cg +EP %%Page: 38 38 %%BeginPageSetup BP @@ -4839,7 +4866,8 @@ story \214le \(see)108 650.4 R F3(HIST)4.085 E(OR)-.162 E(Y)-.315 E F0 (pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351(shell option \(see the)2.852 F(description of the)108 698.4 Q F1(shopt)2.5 E F0(command under)2.5 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) --.25 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(38)193.45 E 0 Cg EP +-.25 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(38)194.555 E 0 Cg +EP %%Page: 39 39 %%BeginPageSetup BP @@ -4964,8 +4992,8 @@ E F4(macr)2.66 E(o)-.45 E F0(,)A F4 -.1(ke)2.66 G(yname)-.2 E F0 .161 .15 F 2.5(lish. F)108 676.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni) 144 700.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E (Meta-Rubout: backw)144 712.8 Q(ard-kill-w)-.1 E(ord)-.1 E -(Control-o: "> output")144 724.8 Q(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(39)193.45 E 0 Cg EP +(Control-o: "> output")144 724.8 Q(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(39)194.555 E 0 Cg EP %%Page: 40 40 %%BeginPageSetup BP @@ -5060,7 +5088,8 @@ E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) -.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F2(audible)3.44 E F0(,)A (readline attempts to ring the terminal')144 708 Q 2.5(sb)-.55 G(ell.) --2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(40)193.45 E 0 Cg EP +-2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(40)194.555 E 0 Cg +EP %%Page: 41 41 %%BeginPageSetup BP @@ -5165,8 +5194,8 @@ R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F (ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298 (gin and end sequences of non-printing characters, which)-.15 F (can be used to embed a terminal control sequence into the mode string.) -144 720 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(41)193.45 E 0 Cg -EP +144 720 Q(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(41)194.555 E 0 +Cg EP %%Page: 42 42 %%BeginPageSetup BP @@ -5276,8 +5305,8 @@ E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 .15 E F1(mark\255modi\214ed\255lines \(Off\))108 684 Q F0(If set to)144 696 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) -.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1 -(*)A F0(\).)A(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(42)193.45 E 0 -Cg EP +(*)A F0(\).)A(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(42)194.555 E +0 Cg EP %%Page: 43 43 %%BeginPageSetup BP @@ -5382,8 +5411,8 @@ F .186(last line of the primary prompt when vi editing mode is acti)144 -.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F .314(gin and end sequences of non-print-)-.15 F(ing characters, which c\ an be used to embed a terminal control sequence into the mode string.) -144 708 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(43)193.45 E 0 Cg -EP +144 708 Q(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(43)194.555 E 0 +Cg EP %%Page: 44 44 %%BeginPageSetup BP @@ -5483,7 +5512,7 @@ Q F0 .356(This directi)144 684 R .656 -.15(ve t)-.25 H(ak).15 E .356 144 696 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 -.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1 ($include)144 720 Q F2(/etc/inputr)5.833 E(c)-.37 E F0(GNU Bash 5.0)72 -768 Q(2018 March 15)144.29 E(44)193.45 E 0 Cg EP +768 Q(2018 August 7)145.395 E(44)194.555 E 0 Cg EP %%Page: 45 45 %%BeginPageSetup BP @@ -5587,7 +5616,7 @@ idth.)-.05 E F1(next\255scr)108 700.8 Q(een\255line)-.18 E F0 .638 144 724.8 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009 (fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G 2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(45)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(45)194.555 E 0 Cg EP %%Page: 46 46 %%BeginPageSetup BP @@ -5673,7 +5702,7 @@ F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .794(at point.)144 (is computed, the ar)2.781 F .281(gument is e)-.18 F .282 (xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 700.8 Q (xpansion had been speci\214ed.)-.15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(46)193.45 E 0 Cg EP +(2018 August 7)145.395 E(46)194.555 E 0 Cg EP %%Page: 47 47 %%BeginPageSetup BP @@ -5773,7 +5802,7 @@ G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278 (Insert a tab character)144 676.8 Q(.)-.55 E F1 (self\255insert \(a, b, A, 1, !, ...\))108 688.8 Q F0 (Insert the character typed.)144 700.8 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(47)193.45 E 0 Cg EP +(2018 August 7)145.395 E(47)194.555 E 0 Cg EP %%Page: 48 48 %%BeginPageSetup BP @@ -5867,8 +5896,8 @@ F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 -2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 676.8 Q F0 (Delete all spaces and tabs around point.)144 688.8 Q F1(kill\255r)108 700.8 Q(egion)-.18 E F0(Kill the te)144 712.8 Q(xt in the current re) --.15 E(gion.)-.15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(48) -193.45 E 0 Cg EP +-.15 E(gion.)-.15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(48) +194.555 E 0 Cg EP %%Page: 49 49 %%BeginPageSetup BP @@ -5970,7 +5999,7 @@ F1(delete\255char\255or\255list)108 633.6 Q F0 .234 -.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 705.6 Q F0(List the possible completions of the te)144 717.6 Q (xt before point, treating it as a \214lename.)-.15 E(GNU Bash 5.0)72 -768 Q(2018 March 15)144.29 E(49)193.45 E 0 Cg EP +768 Q(2018 August 7)145.395 E(49)194.555 E 0 Cg EP %%Page: 50 50 %%BeginPageSetup BP @@ -6060,7 +6089,7 @@ SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1 F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E F0 1.095(command enough times to)3.595 F (return the line to its initial state.)144 729.6 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(50)193.45 E 0 Cg EP +(2018 August 7)145.395 E(50)194.555 E 0 Cg EP %%Page: 51 51 %%BeginPageSetup BP @@ -6167,7 +6196,8 @@ F2(compspec)108 724.8 Q F0 3.829(\)h)C 1.329 (as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu) 3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the) --.25 F(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(51)193.45 E 0 Cg EP +-.25 F(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(51)194.555 E 0 Cg +EP %%Page: 52 52 %%BeginPageSetup BP @@ -6307,7 +6337,7 @@ ode as the list of possible completions.)108 660 Q .246(If the pre)108 (when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1 F(pletion is attempted and an)108 717.6 Q 2.5(ym)-.15 G (atches are added to the results of the other actions.)-2.5 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(52)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(52)194.555 E 0 Cg EP %%Page: 53 53 %%BeginPageSetup BP @@ -6439,7 +6469,7 @@ F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 (When using command-line editing, search commands are a)5.001 F -.25(va) -.2 G .002(ilable in each edit-).25 F(ing mode that pro)108 717.6 Q (vide access to the history list.)-.15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(53)193.45 E 0 Cg EP +(2018 August 7)145.395 E(53)194.555 E 0 Cg EP %%Page: 54 54 %%BeginPageSetup BP @@ -6569,8 +6599,8 @@ Q F0 1.607(Start a history substitution, e)144 638.4 R 1.607 (This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 698.4 Q F4(string) A F0 .865(Refer to the most recent command preceding the current positi\ on in the history list starting with)144 698.4 R F4(string)144 710.4 Q -F0(.).22 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(54)193.45 E 0 Cg -EP +F0(.).22 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(54)194.555 E 0 +Cg EP %%Page: 55 55 %%BeginPageSetup BP @@ -6690,8 +6720,8 @@ F1(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F1(shift)2.961 E F0 -.2(bu) (guments be)-.18 F .26(ginning with)-.15 F F12.76 E F0 .261 (without requiring)2.76 F F12.761 E F0 5.261(.O)C .261(ther b) -5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261 -(ut are not)-.2 F(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(55)193.45 -E 0 Cg EP +(ut are not)-.2 F(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(55) +194.555 E 0 Cg EP %%Page: 56 56 %%BeginPageSetup BP @@ -6826,7 +6856,7 @@ Q F0(List current)180 685.2 Q F1 -.18(re)2.5 G(adline).18 E F0 G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo) -.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 709.2 S 2.5(yt).1 G (hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E(GNU Bash 5.0)72 768 -Q(2018 March 15)144.29 E(56)193.45 E 0 Cg EP +Q(2018 August 7)145.395 E(56)194.555 E 0 Cg EP %%Page: 57 57 %%BeginPageSetup BP @@ -6959,7 +6989,7 @@ F0 .468(will return an unsuccessful status.)2.968 F .468(On systems) 144 720 R .71(gument of)-.18 F F13.21 E F0 .71(is con)3.21 F -.15 (ve)-.4 G .71(rted to).15 F F3($OLDPWD)3.21 E F0 .71 (before the directory change is attempted.)2.96 F .71(If a non-)5.71 F -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(57)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(57)194.555 E 0 Cg EP %%Page: 58 58 %%BeginPageSetup BP @@ -7021,2609 +7051,2633 @@ em directly from a completion speci\214cation with the same \215ags.)144 (will be displayed.)2.5 E(The return v)144 369.6 Q (alue is true unless an in)-.25 E -.25(va)-.4 G (lid option is supplied, or no matches were generated.).25 E F2 -(complete)108 386.4 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C -F2-3.728 E F3(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E -F0 3.728(][)C F2-3.728 E F3(action)3.728 E F0 3.728(][)C F2 --3.728 E F3(globpat)3.728 E F0 3.729(][)C F2-3.729 E F3(wor)3.729 -E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F3(func-)3.729 E(tion)108 -398.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([)144 410.4 Q -F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3(pr)2.5 E -(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78>-.18 E F0(]) -A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2(complete \255pr)108 -422.4 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F3(name)-2.5 E F0(...])2.5 E -.634(Specify ho)144 434.4 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 -(uments to each).18 F F3(name)3.134 E F0 .634(should be completed.)3.134 -F .633(If the)5.634 F F23.133 E F0 .633 -(option is supplied, or if no)3.133 F .139(options are supplied, e)144 -446.4 R .139(xisting completion speci\214cations are printed in a w)-.15 -F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.) -144 458.4 R(The)5.31 E F22.81 E F0 .31(option remo)2.81 F -.15(ve) --.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F3 -(name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E -F3(name)2.81 E F0(s)A 1.346 -(are supplied, all completion speci\214cations.)144 470.4 R(The)6.347 E -F23.847 E F0 1.347(option indicates that the remaining options) -3.847 F .5(and actions should apply to the `)144 482.4 R(`def)-.74 E +(complete)108 386.4 Q F0([)3.404 E F2(\255abcdefgjksuv)A F0 3.404(][)C +F2-3.404 E F3(comp-option)3.404 E F0 3.404(][)C F2(\255DEI)-3.404 +E F0 3.404(][)C F2-3.404 E F3(action)3.404 E F0 3.404(][)C F2 +-3.404 E F3(globpat)3.404 E F0 3.404(][)C F2-3.404 E F3(wor) +3.404 E(dlist)-.37 E F0 3.405(][)C F2-3.405 E F3(func-)3.405 E +(tion)108 398.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([) +144 410.4 Q F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3 +(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78> +-.18 E F0(])A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2 +(complete \255pr)108 422.4 Q F0([)2.5 E F2(\255DEI)A F0 2.5(][)C F3 +(name)-2.5 E F0(...])2.5 E .634(Specify ho)144 434.4 R 3.134(wa)-.25 G +-.18(rg)-3.134 G .634(uments to each).18 F F3(name)3.134 E F0 .634 +(should be completed.)3.134 F .633(If the)5.634 F F23.133 E F0 +.633(option is supplied, or if no)3.133 F .139(options are supplied, e) +144 446.4 R .139(xisting completion speci\214cations are printed in a w) +-.15 F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31 +(reused as input.)144 458.4 R(The)5.31 E F22.81 E F0 .31 +(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31 +(ompletion speci\214cation for each)-2.81 F F3(name)2.81 E F0 2.81(,o)C +1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F3(name)2.81 E F0(s)A 1.207 +(are supplied, all completion speci\214cations.)144 470.4 R(The)6.207 E +F23.707 E F0 1.208(option indicates that other supplied options) +3.708 F .5(and actions should apply to the `)144 482.4 R(`def)-.74 E (ault')-.1 E 3('c)-.74 G .5 (ommand completion; that is, completion attempted on)-3 F 3.455(ac)144 494.4 S .955(ommand for which no completion has pre)-3.455 F .955 (viously been de\214ned.)-.25 F(The)5.955 E F23.455 E F0 .955 -(option indicates that)3.455 F .065 -(the remaining options and actions should apply to `)144 506.4 R -(`empty')-.74 E 2.564('c)-.74 G .064 -(ommand completion; that is, comple-)-2.564 F -(tion attempted on a blank line.)144 518.4 Q 1.437 +(option indicates that)3.455 F .876 +(other supplied options and actions should apply to `)144 506.4 R +(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-) +-3.376 F .447(pletion attempted on a blank line.)144 518.4 R(The)5.447 E +F22.947 E F0 .448 +(option indicates that other supplied options and actions)2.947 F 1.335 +(should apply to completion on the inital non-assignment w)144 530.4 R +1.334(ord on the line, or after a command)-.1 F .43(delimiter such as) +144 542.4 R F2(;)2.93 E F0(or)2.93 E F2(|)2.93 E F0 2.93(,w)C .431 +(hich is usually command name completion.)-2.93 F .431 +(If multiple options are sup-)5.431 F .708(plied, the)144 554.4 R F2 +3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15 +(ve)-.15 G(r).15 E F23.208 E F0 3.208(,a)C .708(nd both tak)-3.208 +F 3.208(ep)-.1 G .707(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F2 +3.207 E F0 5.707(.I)C 3.207(fa)-5.707 G 1.007 -.15(ny o)-3.207 H +(f).15 E F23.207 E F0(,)A F2144 566.4 Q F0 2.603(,o)C(r) +-2.603 E F22.603 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15 +G(ther)-2.603 E F3(name)2.603 E F0(ar)2.603 E .103 +(guments are ignored; these completions only apply to the)-.18 F +(case speci\214ed by the option.)144 578.4 Q 1.438 (The process of applying these completion speci\214cations when w)144 -542.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144 -554.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E -(ogrammable Completion)-.18 E F0(.)A .556 -(Other options, if speci\214ed, ha)144 578.4 R .856 -.15(ve t)-.2 H .555 +602.4 R 1.437(ord completion is attempted is)-.1 F(described abo)144 +614.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E +(ogrammable Completion)-.18 E F0(.)A .555 +(Other options, if speci\214ed, ha)144 638.4 R .855 -.15(ve t)-.2 H .555 (he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 -(guments to the)-.18 F F23.055 E F0(,)A F23.055 E F0 3.055 -(,a)C(nd)-3.055 E F23.055 E F0 .722(options \(and, if necessary) -144 590.4 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E -F23.222 E F0 .723 -(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E -(sion before the)144 602.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2144 614.4 Q -F3(comp-option)2.5 E F0(The)184 626.4 Q F3(comp-option)2.791 E F0 .291 +(guments to the)-.18 F F23.056 E F0(,)A F23.056 E F0 3.056 +(,a)C(nd)-3.056 E F23.056 E F0 .723(options \(and, if necessary) +144 650.4 R 3.223(,t)-.65 G(he)-3.223 E F23.223 E F0(and)3.223 E +F23.223 E F0 .722 +(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E +(sion before the)144 662.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2144 674.4 Q +F3(comp-option)2.5 E F0(The)184 686.4 Q F3(comp-option)2.79 E F0 .291 (controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') .15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 -(yond the simple)-.15 F(generation of completions.)184 638.4 Q F3 -(comp-option)5 E F0(may be one of:)2.5 E F2(bashdefault)184 650.4 Q F0 -.281(Perform the rest of the def)224 662.4 R(ault)-.1 E F2(bash)2.781 E -F0 .281(completions if the compspec generates no)2.781 F(matches.)224 -674.4 Q F2(default)184 686.4 Q F0 2.876(Use readline')224 686.4 R 5.376 -(sd)-.55 G(ef)-5.376 E 2.875 -(ault \214lename completion if the compspec generates no)-.1 F(matches.) -224 698.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(58)193.45 E 0 -Cg EP +(yond the simple)-.15 F(generation of completions.)184 698.4 Q F3 +(comp-option)5 E F0(may be one of:)2.5 E(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(58)194.555 E 0 Cg EP %%Page: 59 59 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(dir)184 84 Q(names)-.15 E F0(Perform directory name completion if th\ -e compspec generates no matches.)224 96 Q F1(\214lenames)184 108 Q F0 --.7(Te)224 120 S .137(ll readline that the compspec generates \214lenam\ -es, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E .134 -(name\255speci\214c processing \(lik)224 132 R 2.634(ea)-.1 G .134 -(dding a slash to directory names, quoting spe-)-2.634 F .45 -(cial characters, or suppressing trailing spaces\).)224 144 R .45 -(Intended to be used with shell)5.45 F(functions.)224 156 Q F1(noquote) -184 168 Q F0 -.7(Te)224 168 S .814 +SF(bashdefault)184 84 Q F0 .281(Perform the rest of the def)224 96 R +(ault)-.1 E F1(bash)2.781 E F0 .281 +(completions if the compspec generates no)2.781 F(matches.)224 108 Q F1 +(default)184 120 Q F0 2.875(Use readline')224 120 R 5.375(sd)-.55 G(ef) +-5.375 E 2.876(ault \214lename completion if the compspec generates no) +-.1 F(matches.)224 132 Q F1(dir)184 144 Q(names)-.15 E F0(Perform direc\ +tory name completion if the compspec generates no matches.)224 156 Q F1 +(\214lenames)184 168 Q F0 -.7(Te)224 180 S .137(ll readline that the co\ +mpspec generates \214lenames, so it can perform an).7 F 2.636<798c>-.15 +G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 192 R 2.634 +(ea)-.1 G .134(dding a slash to directory names, quoting spe-)-2.634 F +.45(cial characters, or suppressing trailing spaces\).)224 204 R .45 +(Intended to be used with shell)5.45 F(functions.)224 216 Q F1(noquote) +184 228 Q F0 -.7(Te)224 228 S .814 (ll readline not to quote the completed w).7 F .814(ords if the)-.1 F -3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 180 Q(ault\).)-.1 E F1(nosort)184 192 Q F0 --.7(Te)224 192 S(ll readline not to sort the list of possible completio\ -ns alphabetically).7 E(.)-.65 E F1(nospace)184 204 Q F0 -.7(Te)224 204 S +3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F +(\214lenames is the def)224 240 Q(ault\).)-.1 E F1(nosort)184 252 Q F0 +-.7(Te)224 252 S(ll readline not to sort the list of possible completio\ +ns alphabetically).7 E(.)-.65 E F1(nospace)184 264 Q F0 -.7(Te)224 264 S .22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1 -F .22(ords completed at the end)-.1 F(of the line.)224 216 Q F1 -(plusdirs)184 228 Q F0 1.985(After an)224 228 R 4.485(ym)-.15 G 1.985 +F .22(ords completed at the end)-.1 F(of the line.)224 276 Q F1 +(plusdirs)184 288 Q F0 1.985(After an)224 288 R 4.485(ym)-.15 G 1.985 (atches de\214ned by the compspec are generated, directory name)-4.485 F -.583(completion is attempted and an)224 240 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 252 -Q F1144 264 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 276 +.584(completion is attempted and an)224 300 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 312 +Q F1144 324 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 336 Q F2(action)2.5 E F0(may be one of the follo)2.5 E (wing to generate a list of possible completions:)-.25 E F1(alias)184 -288 Q F0(Alias names.)224 288 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(arrayv)184 300 Q(ar)-.1 E F0(Array v)224 312 Q -(ariable names.)-.25 E F1(binding)184 324 Q(Readline)224 324 Q F0 -.1 -(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 336 S(iltin) -.2 E F0(Names of shell b)224 336 Q(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 348 -Q F0(Command names.)224 360 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 372 Q(ectory)-.18 E F0(Directory names.)224 384 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 396 -Q F0(Names of disabled shell b)224 408 Q(uiltins.)-.2 E F1(enabled)184 -420 Q F0(Names of enabled shell b)224 420 Q(uiltins.)-.2 E F1(export)184 -432 Q F0(Names of e)224 432 Q(xported shell v)-.15 E 2.5(ariables. May) +348 Q F0(Alias names.)224 348 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 360 Q(ar)-.1 E F0(Array v)224 372 Q +(ariable names.)-.25 E F1(binding)184 384 Q(Readline)224 384 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 396 S(iltin) +.2 E F0(Names of shell b)224 396 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 408 +Q F0(Command names.)224 420 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 432 Q(ectory)-.18 E F0(Directory names.)224 444 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 456 +Q F0(Names of disabled shell b)224 468 Q(uiltins.)-.2 E F1(enabled)184 +480 Q F0(Names of enabled shell b)224 480 Q(uiltins.)-.2 E F1(export)184 +492 Q F0(Names of e)224 492 Q(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -444 Q F0(File names.)224 444 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(function)184 456 Q F0(Names of shell functions.)224 468 -Q F1(gr)184 480 Q(oup)-.18 E F0(Group names.)224 480 Q +504 Q F0(File names.)224 504 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 516 Q F0(Names of shell functions.)224 528 +Q F1(gr)184 540 Q(oup)-.18 E F0(Group names.)224 540 Q (May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -492 Q F0(Help topics as accepted by the)224 504 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 516 Q F0(Hostnames, as tak)224 528 +552 Q F0(Help topics as accepted by the)224 564 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 576 Q F0(Hostnames, as tak)224 588 Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 540 Q F0 -(Job names, if job control is acti)224 540 Q -.15(ve)-.25 G 5(.M).15 G -(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 552 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 564 Q(ed w)-.15 E 2.5(ords. May) +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 600 Q F0 +(Job names, if job control is acti)224 600 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 612 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 624 Q(ed w)-.15 E 2.5(ords. May) -.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 -576 Q F0(Names of running jobs, if job control is acti)224 576 Q -.15 -(ve)-.25 G(.).15 E F1(ser)184 588 Q(vice)-.1 E F0(Service names.)224 588 -Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 600 -Q F0 -1.11(Va)224 600 S(lid ar)1.11 E(guments for the)-.18 E F12.5 +636 Q F0(Names of running jobs, if job control is acti)224 636 Q -.15 +(ve)-.25 G(.).15 E F1(ser)184 648 Q(vice)-.1 E F0(Service names.)224 648 +Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 660 +Q F0 -1.11(Va)224 660 S(lid ar)1.11 E(guments for the)-.18 E F12.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 -(shopt)184 612 Q F0(Shell option names as accepted by the)224 612 Q F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 624 Q F0 -(Signal names.)224 624 Q F1(stopped)184 636 Q F0 -(Names of stopped jobs, if job control is acti)224 636 Q -.15(ve)-.25 G -(.).15 E F1(user)184 648 Q F0(User names.)224 648 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 660 S -(riable).1 E F0(Names of all shell v)224 660 Q 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 672 Q F2 -(command)2.5 E(command)184 684 Q F0 1.056(is e)3.556 F -.15(xe)-.15 G -1.056(cuted in a subshell en).15 F 1.056 -(vironment, and its output is used as the possible)-.4 F(completions.) -184 696 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(59)193.45 E 0 Cg -EP +(shopt)184 672 Q F0(Shell option names as accepted by the)224 672 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 684 Q F0 +(Signal names.)224 684 Q F1(stopped)184 696 Q F0 +(Names of stopped jobs, if job control is acti)224 696 Q -.15(ve)-.25 G +(.).15 E F1(user)184 708 Q F0(User names.)224 708 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A(GNU Bash 5.0)72 768 +Q(2018 August 7)145.395 E(59)194.555 E 0 Cg EP %%Page: 60 60 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q/F2 10/Times-Italic@0 SF(function)2.5 E F0 .113 -(The shell function)184 96 R F2(function)2.614 E F0 .114(is e)2.614 F +SF -.1(va)184 84 S(riable).1 E F0(Names of all shell v)224 84 Q 2.5 +(ariables. May)-.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A +F1144 96 Q/F2 10/Times-Italic@0 SF(command)2.5 E(command)184 108 Q +F0 1.055(is e)3.555 F -.15(xe)-.15 G 1.055(cuted in a subshell en).15 F +1.056(vironment, and its output is used as the possible)-.4 F +(completions.)184 120 Q F1144 132 Q F2(function)2.5 E F0 .114 +(The shell function)184 144 R F2(function)2.614 E F0 .114(is e)2.614 F -.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 -(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 108 R --.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 -($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 +(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 156 R +-.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1 +($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 120 R 1.407(gument \()-.18 F F1 +(are being completed, the second ar)184 168 R 1.407(gument \()-.18 F F1 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 -(ord being completed, and the)-.1 F .104(third ar)184 132 R .104 -(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) --2.604 F .104(ord preceding the w)-.1 F .103 -(ord being completed on the current com-)-.1 F .101(mand line.)184 144 R -.101(When it \214nishes, the possible completions are retrie)5.101 F --.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) --.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 156 Q(Y)-.828 E F0(array v)2.25 -E(ariable.)-.25 E F1144 168 Q F2(globpat)2.5 E F0 1.008 -(The pathname e)184 180 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 -E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-) --.15 F(tions.)184 192 Q F1144 204 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 216 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 +(ord being completed, and the)-.1 F .103(third ar)184 180 R .103 +(gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w) +-2.603 F .104(ord preceding the w)-.1 F .104 +(ord being completed on the current com-)-.1 F .102(mand line.)184 192 R +.102(When it \214nishes, the possible completions are retrie)5.102 F +-.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the) +-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 204 Q(Y)-.828 E F0(array v)2.25 +E(ariable.)-.25 E F1144 216 Q F2(globpat)2.5 E F0 1.007 +(The pathname e)184 228 R 1.007(xpansion pattern)-.15 F F2(globpat)3.507 +E F0 1.007(is e)3.507 F 1.008(xpanded to generate the possible comple-) +-.15 F(tions.)184 240 Q F1144 252 Q F2(pr)2.5 E(e\214x)-.37 E(pr) +184 264 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534 (ginning of each possible completion after all other options ha)-.15 F --.15(ve)-.2 G(been applied.)184 228 Q F1144 240 Q F2(suf)2.5 E -<8c78>-.18 E(suf)184 240 Q<8c78>-.18 E F0 +-.15(ve)-.2 G(been applied.)184 276 Q F1144 288 Q F2(suf)2.5 E +<8c78>-.18 E(suf)184 288 Q<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 252 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 264 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 -(is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139 -(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F .98 -(each resultant w)184 276 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15 -F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 E F0 -3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 288 Q .766 -(vide a mechanism for the w)-.15 F .765 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 300 Q F2(wor)2.5 E +(dlist)-.37 E F0(The)184 312 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14 +(is split using the characters in the)3.639 F F3(IFS)3.64 E F0 1.14 +(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F .981 +(each resultant w)184 324 R .981(ord is e)-.1 F 3.481(xpanded. Shell) +-.15 F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 +E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F(pro)184 336 Q .765 +(vide a mechanism for the w)-.15 F .766 (ords to contain shell metacharacters or characters in the)-.1 F -.25 -(va)184 300 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) +(va)184 348 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.) A F0 1.964 (The possible completions are the members of the resultant list which) -6.464 F(match the w)184 312 Q(ord being completed.)-.1 E F1144 324 -Q F2(\214lterpat)2.5 E(\214lterpat)184 336 Q F0 .456 -(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F -.455(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 348 R 1.596 -(guments, and each completion)-.18 F(matching)184 360 Q F2(\214lterpat) -3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 -(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 -(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 -(tes the pattern;).05 F(in this case, an)184 372 Q 2.5(yc)-.15 G +6.465 F(match the w)184 360 Q(ord being completed.)-.1 E F1144 372 +Q F2(\214lterpat)2.5 E(\214lterpat)184 384 Q F0 .455 +(is a pattern as used for pathname e)2.955 F 2.956(xpansion. It)-.15 F +.456(is applied to the list of possible)2.956 F 1.596 +(completions generated by the preceding options and ar)184 396 R 1.596 +(guments, and each completion)-.18 F(matching)184 408 Q F2(\214lterpat) +3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704 +(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 +(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705 +(tes the pattern;).05 F(in this case, an)184 420 Q 2.5(yc)-.15 G (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .466(The return v)144 388.8 R .466 +-.15(ve)-.15 G(d.).15 E .467(The return v)144 436.8 R .467 (alue is true unless an in)-.25 F -.25(va)-.4 G .466 -(lid option is supplied, an option other than).25 F F12.967 E F0 -(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 -(plied without a)144 400.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 -(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H -1.361(ompletion speci\214cation for a).15 F F2(name)144 412.8 Q F0 +(lid option is supplied, an option other than).25 F F12.966 E F0 +(or)2.966 E F12.966 E F0 .466(is sup-)2.966 F 1.361 +(plied without a)144 448.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 +(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H +1.362(ompletion speci\214cation for a).15 F F2(name)144 460.8 Q F0 (for which no speci\214cation e)2.5 E (xists, or an error occurs adding a completion speci\214cation.)-.15 E -F1(compopt)108 429.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C -F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 441.6 R -F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 -.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 -(completion if no)144 453.6 R F2(name)3.226 E F0 3.226(sa)C .726 -(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) -C .725(re gi)-3.225 F -.15(ve)-.25 G .725 -(n, display the completion options for).15 F(each)144 465.6 Q F2(name) -3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) +F1(compopt)108 477.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C +F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C +F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 489.6 +R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 +.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725 +(completion if no)144 501.6 R F2(name)3.225 E F0 3.225(sa)C .725 +(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) +C .725(re gi)-3.225 F -.15(ve)-.25 G .726 +(n, display the completion options for).15 F(each)144 513.6 Q F2(name) +3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 477.6 Q F0 -.2(bu) -2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) --5.297 E F12.797 E F0 .297 -(option indicates that the remaining options should apply to)2.797 F -1.227(the `)144 489.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ +F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 525.6 Q F0 -.2(bu) +2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he) +-5.178 E F12.678 E F0 .178 +(option indicates that other supplied options should apply to)2.678 F +1.228(the `)144 537.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ mmand completion; that is, completion attempted on a command for which \ -no)-3.727 F 2.178(completion has pre)144 501.6 R 2.178 -(viously been de\214ned.)-.25 F(The)7.178 E F14.678 E F0 2.177 -(option indicates that the remaining options)4.677 F(should apply to `) -144 513.6 Q(`empty')-.74 E 2.5('c)-.74 G -(ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.387(The return v)144 537.6 R 1.387(alue is true unless an in)-.25 F --.25(va)-.4 G 1.388 +no)-3.728 F 2.038(completion has pre)144 549.6 R 2.038 +(viously been de\214ned.)-.25 F(The)7.038 E F14.538 E F0 2.039 +(option indicates that other supplied options)4.538 F 1.539 +(should apply to `)144 561.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538 +(ommand completion; that is, completion attempted on a blank line.) +-4.039 F(The)144 573.6 Q F13.205 E F0 .705(option indicates that \ +other supplied options should apply to completion on the inital non-) +3.205 F .868(assignment w)144 585.6 R .868 +(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368 +E F0(or)3.368 E F1(|)3.368 E F0 3.367(,w)C .867(hich is usually com-) +-3.367 F(mand name completion.)144 597.6 Q 1.387(The return v)144 621.6 +R 1.387(alue is true unless an in)-.25 F -.25(va)-.4 G 1.388 (lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 549.6 Q F2(name)2.5 E F0 +(options for a)144 633.6 Q F2(name)2.5 E F0 (for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 566.4 Q F0([) -2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 578.4 R 1.754 +(xists, or an output error occurs.)-.15 E F1(continue)108 650.4 Q F0([) +2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 662.4 R 1.754 (xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 (select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 -(is speci\214ed,)4.493 F 1.208(resume at the)144 590.4 R F2(n)3.709 E F0 +(is speci\214ed,)4.493 F 1.208(resume at the)144 674.4 R F2(n)3.709 E F0 1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F5 10 /Symbol SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 (is greater than the number of enclosing)3.949 F .514 -(loops, the last enclosing loop \(the `)144 602.4 R(`top-le)-.74 E -.15 +(loops, the last enclosing loop \(the `)144 686.4 R(`top-le)-.74 E -.15 (ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 (The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) -3.013 E(not greater than or equal to 1.)144 614.4 Q F1(declar)108 631.2 -Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E -F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 -(typeset)108 643.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 --2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.264(Declare v)144 655.2 R 1.264(ariables and/or gi)-.25 F -1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) -3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F --.25(va)144 667.2 S 3.483(riables. The).25 F F13.483 E F0 .983 -(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 -(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 -3.482 E F0 .982(is used)3.482 F(with)144 679.2 Q F2(name)2.774 E -F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 -2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275 -(re ignored.)-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied) -2.775 F(without)144 691.2 Q F2(name)4.814 E F0(ar)4.814 E 2.314 -(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 -(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F -(attrib)144 703.2 Q 1.181(utes speci\214ed by the additional options.) --.2 F 1.182(If no other options are supplied with)6.181 F F13.682 -E F0(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 -715.2 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 -(ariables. The)-.25 F F13.12 E F0 .62 -(option will restrict the display)3.12 F 1.29(to shell functions.)144 -727.2 R(The)6.29 E F13.79 E F0 1.291(option inhibits the display \ -of function de\214nitions; only the function)3.791 F(GNU Bash 5.0)72 768 -Q(2018 March 15)144.29 E(60)193.45 E 0 Cg EP +3.013 E(not greater than or equal to 1.)144 698.4 Q(GNU Bash 5.0)72 768 +Q(2018 August 7)145.395 E(60)194.555 E 0 Cg EP %%Page: 61 61 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .948 -(name and attrib)144 84 R .948(utes are printed.)-.2 F .948(If the)5.948 -F/F1 10/Times-Bold@0 SF(extdeb)3.448 E(ug)-.2 E F0 .948 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(declar)108 84 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C +F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E F0([=)A +F2(value)A F0 2.5(].)C(..])-2.5 E F1(typeset)108 96 Q F0([)2.5 E F1 +(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 +E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E 1.264(Declare v)144 108 R +1.264(ariables and/or gi)-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib) +.15 F 3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C +1.265(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265 +(hen display the v)-3.765 F 1.265(alues of)-.25 F -.25(va)144 120 S +3.483(riables. The).25 F F13.483 E F0 .983 +(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 +(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 +3.482 E F0 .982(is used)3.482 F(with)144 132 Q F2(name)2.774 E F0 +(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 +2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275(re ignored.) +-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied)2.775 F +(without)144 144 Q F2(name)4.814 E F0(ar)4.814 E 2.314 +(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 +(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F +(attrib)144 156 Q 1.181(utes speci\214ed by the additional options.)-.2 +F 1.182(If no other options are supplied with)6.181 F F13.682 E F0 +(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 168 R +.62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12(ariables. The) +-.25 F F13.12 E F0 .62(option will restrict the display)3.12 F +1.29(to shell functions.)144 180 R(The)6.29 E F13.79 E F0 1.291(o\ +ption inhibits the display of function de\214nitions; only the function) +3.791 F .948(name and attrib)144 192 R .948(utes are printed.)-.2 F .948 +(If the)5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948 (shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C .948(he source)-3.448 F 1.69(\214le name and line number where each)144 -96 R/F2 10/Times-Italic@0 SF(name)4.19 E F0 1.69 -(is de\214ned are displayed as well.)4.19 F(The)6.69 E F14.19 E F0 -(option)4.19 E(implies)144 108 Q F13.892 E F0 6.392(.T)C(he)-6.392 -E F13.892 E F0 1.391(option forces v)3.892 F 1.391 +204 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F +(The)6.69 E F14.19 E F0(option)4.19 E(implies)144 216 Q F1 +3.892 E F0 6.392(.T)C(he)-6.392 E F13.892 E F0 1.391 +(option forces v)3.892 F 1.391 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G(n).15 E(when)144 120 Q F1(declar)4.382 E(e)-.18 E F0 1.882 +(ve)-.25 G(n).15 E(when)144 228 Q F1(declar)4.382 E(e)-.18 E F0 1.882 (is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F 1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F -(wing)-.25 E .794(options can be used to restrict output to v)144 132 R +(wing)-.25 E .794(options can be used to restrict output to v)144 240 R .794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F -1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 144 Q(utes:)-.2 E F1 -144 156 Q F0(Each)180 156 Q F2(name)2.5 E F0(is an inde)2.5 E -.15 +1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 252 Q(utes:)-.2 E F1 +144 264 Q F0(Each)180 264 Q F2(name)2.5 E F0(is an inde)2.5 E -.15 (xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 -E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 168 Q F0(Each)180 -168 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) +E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 276 Q F0(Each)180 +276 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) .15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G -(\).).15 E F1144 180 Q F0(Use function names only)180 180 Q(.)-.65 -E F1144 192 Q F0 .557(The v)180 192 R .558 +(\).).15 E F1144 288 Q F0(Use function names only)180 288 Q(.)-.65 +E F1144 300 Q F0 .557(The v)180 300 R .558 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 (va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558 -(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 204 Q F0(abo)2.25 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 312 Q F0(abo)2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E -(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 216 Q F0 .91 -(When the v)180 216 R .909(ariable is assigned a v)-.25 F .909 +(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 324 Q F0 .91 +(When the v)180 324 R .909(ariable is assigned a v)-.25 F .909 (alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 -G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 228 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 240 Q -F0(Gi)180 240 Q 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the) +G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 336 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 348 Q +F0(Gi)180 348 Q 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the) 3.819 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 (ute, making it a name reference to another v)-.2 F(ariable.)-.25 E -1.519(That other v)180 252 R 1.519(ariable is de\214ned by the v)-.25 F +1.519(That other v)180 360 R 1.519(ariable is de\214ned by the v)-.25 F 1.518(alue of)-.25 F F2(name)4.018 E F0 6.518(.A)C 1.518 -(ll references, assignments, and)-6.518 F(attrib)180 264 Q .226 +(ll references, assignments, and)-6.518 F(attrib)180 372 Q .226 (ute modi\214cations to)-.2 F F2(name)2.726 E F0 2.726(,e)C .226 (xcept those using or changing the)-2.876 F F12.726 E F0(attrib) -2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 276 R +2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 384 R .809(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D 3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2 -F(applied to array v)180 288 Q(ariables.)-.25 E F1144 300 Q F0 -(Mak)180 300 Q(e)-.1 E F2(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E +F(applied to array v)180 396 Q(ariables.)-.25 E F1144 408 Q F0 +(Mak)180 408 Q(e)-.1 E F2(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E 7.546(.T)-.65 G 2.546(hese names cannot then be assigned v)-7.546 F -2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 312 -Q F1144 324 Q F0(Gi)180 324 Q .73 -.15(ve e)-.25 H(ach).15 E F2 +2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 420 +Q F1144 432 Q F0(Gi)180 432 Q .73 -.15(ve e)-.25 H(ach).15 E F2 (name)2.93 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 E(UG)-.1 E F0(and)2.929 E F1(RETURN)2.929 E F0 -(traps from the calling shell.)180 336 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 348 -Q F0 .909(When the v)180 348 R .909(ariable is assigned a v)-.25 F .909 +(traps from the calling shell.)180 444 Q(The trace attrib)5 E +(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 456 +Q F0 .909(When the v)180 456 R .909(ariable is assigned a v)-.25 F .909 (alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15 -(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 360 R(lo)2.5 -E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 372 Q -F0(Mark)180 372 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E +(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 468 R(lo)2.5 +E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 480 Q +F0(Mark)180 480 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E (xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .121 -(Using `+' instead of `\255' turns of)144 388.8 R 2.621(ft)-.25 G .121 +(Using `+' instead of `\255' turns of)144 496.8 R 2.621(ft)-.25 G .121 (he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12 (xceptions that)-.15 F F1(+a)2.62 E F0 .12(may not be used)2.62 F .644 -(to destro)144 400.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) +(to destro)144 508.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) -3.144 F .644(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) 3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145 -(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 412.8 Q F1 +(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 520.8 Q F1 (declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 (local, as with the)2.835 F F1(local)2.835 E F0 .335 (command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.282 -(is supplied.)144 424.8 R 1.282(If a v)6.282 F 1.283 +(is supplied.)144 532.8 R 1.282(If a v)6.282 F 1.283 (ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 (,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283 (ariable is set to)-.25 F F2(value)3.783 E F0(.)A .927(When using)144 -436.8 R F13.427 E F0(or)3.427 E F13.427 E F0 .926 +544.8 R F13.427 E F0(or)3.427 E F13.427 E F0 .926 (and the compound assignment syntax to create array v)3.427 F .926 -(ariables, additional)-.25 F(attrib)144 448.8 Q .592(utes do not tak)-.2 +(ariables, additional)-.25 F(attrib)144 556.8 Q .592(utes do not tak)-.2 F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 (ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 (alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 (option is encountered, an attempt is made to de\214ne a function using) -144 460.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C +144 568.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C 2.928(na)-2.928 G .428(ttempt is)-2.928 F .062(made to assign a v)144 -472.8 R .062(alue to a readonly v)-.25 F .063 +580.8 R .062(alue to a readonly v)-.25 F .063 (ariable, an attempt is made to assign a v)-.25 F .063 (alue to an array v)-.25 F(ari-)-.25 E .102 -(able without using the compound assignment syntax \(see)144 484.8 R F1 +(able without using the compound assignment syntax \(see)144 592.8 R F1 (Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F2(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 496.8 S .171 +F2(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 604.8 S .171 (lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .172 -(ariable, an)-.25 F .96(attempt is made to turn of)144 508.8 R 3.46(fa) +(ariable, an)-.25 F .96(attempt is made to turn of)144 616.8 R 3.46(fa) -.25 G .96(rray status for an array v)-3.46 F .96 -(ariable, or an attempt is made to display a)-.25 F(non-e)144 520.8 Q +(ariable, or an attempt is made to display a)-.25 F(non-e)144 628.8 Q (xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 537.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 -(])A F0 -.4(Wi)144 549.6 S .328 +(dirs [\255clpv] [+)108 645.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 +(])A F0 -.4(Wi)144 657.6 S .328 (thout options, displays the list of currently remembered directories.) .4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 561.6 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 573.6 Q +(single line with directory names separated by spaces.)144 669.6 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 681.6 Q F0 2.003(command; the)4.503 F F1(popd)4.503 E F0 2.003(command remo) 4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503 -F 2.003(The current directory is)7.003 F(al)144 585.6 Q -.1(wa)-.1 G -(ys the \214rst directory in the stack.).1 E F1144 597.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 597.6 Q -F1144 609.6 Q F0 .882 -(Produces a listing using full pathnames; the def)180 609.6 R .881 +F 2.003(The current directory is)7.003 F(al)144 693.6 Q -.1(wa)-.1 G +(ys the \214rst directory in the stack.).1 E F1144 705.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 705.6 Q +F1144 717.6 Q F0 .882 +(Produces a listing using full pathnames; the def)180 717.6 R .881 (ault listing format uses a tilde to denote)-.1 F(the home directory)180 -621.6 Q(.)-.65 E F1144 633.6 Q F0 -(Print the directory stack with one entry per line.)180 633.6 Q F1 -144 645.6 Q F0 .272(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 645.6 R 2.773(xi)-.15 G 2.773 -(nt)-2.773 G(he)-2.773 E(stack.)180 657.6 Q F1(+)144 669.6 Q F2(n)A F0 -1.565(Displays the)180 669.6 R F2(n)4.065 E F0 1.565 -(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1 -(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 681.6 Q F1144 693.6 Q F2 -(n)A F0 1.194(Displays the)180 693.6 R F2(n)3.694 E F0 1.194 -(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F -F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 705.6 Q 1.707(The return v)144 -722.4 R 1.707(alue is 0 unless an in)-.25 F -.25(va)-.4 G 1.707 -(lid option is supplied or).25 F F2(n)4.207 E F0(inde)4.206 E -.15(xe) --.15 G 4.206(sb).15 G -.15(ey)-4.206 G 1.706(ond the end of the).15 F -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(61)193.45 E 0 Cg EP +729.6 Q(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(61) +194.555 E 0 Cg EP %%Page: 62 62 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(directory stack.) -144 84 Q/F1 10/Times-Bold@0 SF(diso)108 100.8 Q(wn)-.1 E F0([)2.5 E F1 -(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF -(jobspec)-2.5 E F0(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 -112.8 S .121(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2 -(jobspec)4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j) --.25 H 2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122 -(is not present, and)2.932 F .096(neither the)144 124.8 R F12.596 -E F0 .096(nor the)2.596 F F12.596 E F0 .096 -(option is supplied, the)2.596 F F2(curr)2.596 E .096(ent job)-.37 F F0 -.096(is used.)2.596 F .096(If the)5.096 F F12.596 E F0 .096 -(option is gi)2.596 F -.15(ve)-.25 G .096(n, each).15 F F2(jobspec) -145.74 136.8 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085(df).15 G -.585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585(ed so that)-.1 -F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 -(is not sent to the job if the)2.835 F .962(shell recei)144 148.8 R -.15 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0(Print the directory stack with one entry per line.) +180 84 Q F1144 96 Q F0 .272(Print the directory stack with one en\ +try per line, pre\214xing each entry with its inde)180 96 R 2.773(xi) +-.15 G 2.773(nt)-2.773 G(he)-2.773 E(stack.)180 108 Q F1(+)144 120 Q/F2 +10/Times-Italic@0 SF(n)A F0 1.565(Displays the)180 120 R F2(n)4.065 E F0 +1.565(th entry counting from the left of the list sho)B 1.564(wn by)-.25 +F F1(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 +E(without options, starting with zero.)180 132 Q F1144 144 Q F2(n)A +F0 1.194(Displays the)180 144 R F2(n)3.694 E F0 1.194 +(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F +F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 156 Q .258(The return v)144 +172.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) +-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) +.15 F(tory stack.)144 184.8 Q F1(diso)108 201.6 Q(wn)-.1 E F0([)2.5 E F1 +(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 213.6 S .121 +(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) +4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H +2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 +F .096(neither the)144 225.6 R F12.596 E F0 .096(nor the)2.596 F +F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) +.15 F F2(jobspec)145.74 237.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 +G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F +.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 +(is not sent to the job if the)2.835 F .962(shell recei)144 249.6 R -.15 (ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 (If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 160.8 R F1 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 261.6 R F1 3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 (ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 172.8 S(lue is 0 unless a).25 E F2 +1.359(The return)6.359 F -.25(va)144 273.6 S(lue is 0 unless a).25 E F2 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 189.6 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .425(Output the)144 201.6 R F2(ar)2.925 E(g)-.37 E +F1(echo)108 290.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 302.4 R F2(ar)2.925 E(g)-.37 E F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 (wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 -(error occurs.)144 213.6 R(If)5.307 E F12.807 E F0 .307 +(error occurs.)144 314.4 R(If)5.307 E F12.807 E F0 .307 (is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 (ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 -225.6 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +326.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) 6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 -(interpretation of these escape characters, e)144 237.6 R -.15(ve)-.25 G +(interpretation of these escape characters, e)144 338.4 R -.15(ve)-.25 G 3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 (ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 -249.6 Q F1(xpg_echo)3.459 E F0 .959 +350.4 Q F1(xpg_echo)3.459 E F0 .959 (shell option may be used to dynamically determine whether or not)3.459 F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 -(these escape characters by def)144 261.6 R(ault.)-.1 E F1(echo)5.715 E +(these escape characters by def)144 362.4 R(ault.)-.1 E F1(echo)5.715 E F0 .716(does not interpret)3.215 F F13.216 E F0 .716 (to mean the end of options.)3.216 F F1(echo)5.716 E F0 -(interprets the follo)144 273.6 Q(wing escape sequences:)-.25 E F1(\\a) -144 285.6 Q F0(alert \(bell\))180 285.6 Q F1(\\b)144 297.6 Q F0 -(backspace)180 297.6 Q F1(\\c)144 309.6 Q F0(suppress further output)180 -309.6 Q F1(\\e)144 321.6 Q(\\E)144 333.6 Q F0(an escape character)180 -333.6 Q F1(\\f)144 345.6 Q F0(form feed)180 345.6 Q F1(\\n)144 357.6 Q -F0(ne)180 357.6 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 369.6 Q F0 -(carriage return)180 369.6 Q F1(\\t)144 381.6 Q F0(horizontal tab)180 -381.6 Q F1(\\v)144 393.6 Q F0 -.15(ve)180 393.6 S(rtical tab).15 E F1 -(\\\\)144 405.6 Q F0(backslash)180 405.6 Q F1(\\0)144 417.6 Q F2(nnn)A -F0(the eight-bit character whose v)180 417.6 Q(alue is the octal v)-.25 +(interprets the follo)144 374.4 Q(wing escape sequences:)-.25 E F1(\\a) +144 386.4 Q F0(alert \(bell\))180 386.4 Q F1(\\b)144 398.4 Q F0 +(backspace)180 398.4 Q F1(\\c)144 410.4 Q F0(suppress further output)180 +410.4 Q F1(\\e)144 422.4 Q(\\E)144 434.4 Q F0(an escape character)180 +434.4 Q F1(\\f)144 446.4 Q F0(form feed)180 446.4 Q F1(\\n)144 458.4 Q +F0(ne)180 458.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 470.4 Q F0 +(carriage return)180 470.4 Q F1(\\t)144 482.4 Q F0(horizontal tab)180 +482.4 Q F1(\\v)144 494.4 Q F0 -.15(ve)180 494.4 S(rtical tab).15 E F1 +(\\\\)144 506.4 Q F0(backslash)180 506.4 Q F1(\\0)144 518.4 Q F2(nnn)A +F0(the eight-bit character whose v)180 518.4 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 -(\\x)144 429.6 Q F2(HH)A F0(the eight-bit character whose v)180 429.6 Q +(\\x)144 530.4 Q F2(HH)A F0(the eight-bit character whose v)180 530.4 Q (alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 -(\\u)144 441.6 Q F2(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 453.6 R 1.506 +(\\u)144 542.4 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R 1.506 (alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.006 E F0(\(one to four he)180 465.6 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 477.6 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 489.6 R .547 +4.006 E F0(\(one to four he)180 566.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 578.4 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 590.4 R .547 (alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 E(HHH)180 501.6 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(enable)108 518.4 Q F0([)2.5 E F1A F0 2.5(][)C +3.048 E(HHH)180 602.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F1(enable)108 619.2 Q F0([)2.5 E F1A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 530.4 R +(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 631.2 R .278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 (uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 -(the same name as a shell b)144 542.4 R .834(uiltin to be e)-.2 F -.15 +(the same name as a shell b)144 643.2 R .834(uiltin to be e)-.2 F -.15 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 (ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 554.4 R .989 +(the shell normally searches for b)144 655.2 R .989 (uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 (is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 566.4 R F2(names)4.082 E F0 1.582(are enabled.) +(abled; otherwise,)144 667.2 R F2(names)4.082 E F0 1.582(are enabled.) 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 -G(TH)-.189 E F0 .081(instead of the shell b)144 578.4 R .081(uiltin v) +G(TH)-.189 E F0 .081(instead of the shell b)144 679.2 R .081(uiltin v) -.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) 2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 590.4 S 1.524 +(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 691.2 S 1.524 (iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(The)144 602.4 Q F1 +(ystems that support dynamic loading.)-4.024 F(The)144 703.2 Q F1 2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F .367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) -5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 614.4 R F1 +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 715.2 R F1 2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -626.4 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +727.2 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 (is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F -(If)5.098 E F12.598 E F0 1.916 -(is supplied, the list printed includes all b)144 638.4 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 650.4 R F12.879 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.879 F F2(special) -2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F -(alue)-.25 E .994(is 0 unless a)144 662.4 R F2(name)3.854 E F0 .994 -(is not a shell b)3.674 F .994(uiltin or there is an error loading a ne) --.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 -674.4 Q F1 -2.3 -.15(ev a)108 691.2 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 -E F0(...])2.5 E(The)144 703.2 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C -.671(re read and concatenated together into a single command.)-3.171 F -.67(This command is then read)5.67 F .495(and e)144 715.2 R -.15(xe)-.15 -G .495(cuted by the shell, and its e).15 F .495 -(xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 -(ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) --2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 727.2 Q -(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(62)193.45 E 0 Cg EP +(If)5.098 E F12.598 E F0(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(62)194.555 E 0 Cg EP %%Page: 63 63 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(exec)108 84 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E/F2 10 -/Times-Italic@0 SF(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E -F2(ar)A(guments)-.37 E F0(]])A(If)144 96 Q F2(command)3.006 E F0 .306 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.916 +(is supplied, the list printed includes all b)144 84 R 1.916 +(uiltins, with an indication of whether or not each is)-.2 F 2.879 +(enabled. If)144 96 R/F1 10/Times-Bold@0 SF2.879 E F0 .379 +(is supplied, the output is restricted to the POSIX)2.879 F/F2 10 +/Times-Italic@0 SF(special)2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The) +.2 F .378(return v)2.878 F(alue)-.25 E .994(is 0 unless a)144 108 R F2 +(name)3.854 E F0 .994(is not a shell b)3.674 F .994 +(uiltin or there is an error loading a ne)-.2 F 3.495(wb)-.25 G .995 +(uiltin from a shared)-3.695 F(object.)144 120 Q F1 -2.3 -.15(ev a)108 +136.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 148.8 +Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671 +(re read and concatenated together into a single command.)-3.171 F .67 +(This command is then read)5.67 F .495(and e)144 160.8 R -.15(xe)-.15 G +.495(cuted by the shell, and its e).15 F .495 +(xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 +(ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 172.8 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 +(exec)108 189.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) +-.37 E F0(]])A(If)144 201.6 Q F2(command)3.006 E F0 .306 (is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 (wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E -(guments)-.37 E F0(become)3.075 E .176(the ar)144 108 R .176(guments to) --.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G(he)-2.676 E F1 -2.676 E F0 .176 +(guments)-.37 E F0(become)3.075 E .176(the ar)144 213.6 R .176 +(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G +(he)-2.676 E F12.676 E F0 .176 (option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 120 R .5(gument passed to)-.18 F -F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 E -(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 .499 -(option causes)2.999 F F2(com-)3.199 E(mand)144 132 Q F0 .638(to be e) -3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(ginning of)-.15 F .5(the zeroth ar)144 225.6 R .5(gument passed to)-.18 +F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 +E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 +.499(option causes)2.999 F F2(com-)3.199 E(mand)144 237.6 Q F0 .638 +(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 (vironment. If)-.4 F F13.138 E F0 .638 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 144 R 1.077(gument to the e)-.18 F -.15(xe) --.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077 -(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a).15 F -(non-interacti)144 156 Q .876 -.15(ve s)-.25 H .576(hell e).15 F .576 -(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 +3.319 F 1.078(zeroth ar)144 249.6 R 1.077(gument to the e)-.18 F -.15 +(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 +1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) +.15 F(non-interacti)144 261.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 (shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 -F(ail-)-.1 E 3.32(ure. An)144 168 R(interacti)3.32 E 1.12 -.15(ve s)-.25 -H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 F --.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 -(xits uncondi-)-.15 F .287(tionally if)144 180 R F1(exec)2.787 E F0 -.1 -(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 +F(ail-)-.1 E 3.32(ure. An)144 273.6 R(interacti)3.32 E 1.12 -.15(ve s) +-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 +F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 +(xits uncondi-)-.15 F .287(tionally if)144 285.6 R F1(exec)2.787 E F0 +-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 (is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak) -2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,) -.25 F(and the return status is 0.)144 192 Q +.25 F(and the return status is 0.)144 297.6 Q (If there is a redirection error)5 E 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 208.8 Q F0([)2.5 E F2(n)A F0 -(])A .096(Cause the shell to e)144 208.8 R .096(xit with a status of) +(he return status is 1.)-2.5 E F1(exit)108 314.4 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 314.4 R .096(xit with a status of) -.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 (is omitted, the e)2.835 F .095(xit status is that of the last command) --.15 F -.15(exe)144 220.8 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 +-.15 F -.15(exe)144 326.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 /Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G -(cuted before the shell terminates.).15 E F1(export)108 237.6 Q F0([)2.5 +(cuted before the shell terminates.).15 E F1(export)108 343.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E -F0(]] ...)A F1(export \255p)108 249.6 Q F0 .256(The supplied)144 261.6 R +F0(]] ...)A F1(export \255p)108 355.2 Q F0 .256(The supplied)144 367.2 R F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15 -(xe)-.15 G(cuted).15 E 2.627(commands. If)144 273.6 R(the)2.627 E F1 +(xe)-.15 G(cuted).15 E 2.627(commands. If)144 379.2 R(the)2.627 E F1 2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) .15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) 5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F1144 285.6 Q F0 .048 +(n, or if the).15 F F1144 391.2 Q F0 .048 (option is supplied, a list of names of all e)2.547 F .048(xported v) -.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.548 E F0 -.048(option causes the)2.548 F -.15(ex)144 297.6 S 1.447 +.048(option causes the)2.548 F -.15(ex)144 403.2 S 1.447 (port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 309.6 S .741(lue of the v) +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 415.2 S .741(lue of the v) .25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 (export)5.741 E F0 .742(returns an e)3.242 F .742 (xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) -.25 F .032(encountered, one of the)144 321.6 R F2(names)2.532 E F0 .032 +.25 F .032(encountered, one of the)144 427.2 R F2(names)2.532 E F0 .032 (is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 -(that)2.711 E(is not a function.)144 333.6 Q F1(fc)108 350.4 Q F0([)2.5 -E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 +(that)2.711 E(is not a function.)144 439.2 Q F1(fc)108 456 Q F0([)2.5 E +F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -362.4 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +468 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 (cmd)-2.5 E F0(])A .431 -(The \214rst form selects a range of commands from)144 374.4 R F2<8c72> +(The \214rst form selects a range of commands from)144 480 R F2<8c72> 4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 (from the history list and displays or)3.612 F .142(edits and re-e)144 -386.4 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +492 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 (may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 398.4 Q .31(ginning with that string\) or as a number \(an inde)-.15 -F 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05 -(ga)-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19 -(is used as an of)144 410.4 R .19 -(fset from the current command number\).)-.25 F(If)5.19 E F2(last)2.779 -E F0 .189(is not speci\214ed, it is set to the cur)3.369 F(-)-.2 E .948 -(rent command for listing \(so that)144 422.4 R/F4 10/Courier@0 SF .948 -(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) -3.448 F F2<8c72>5.359 E(st)-.1 E F0(other)4.129 E(-)-.2 E 2.5(wise. If) -144 434.4 R F2<8c72>4.41 E(st)-.1 E F0 -(is not speci\214ed, it is set to the pre)3.18 E -(vious command for editing and \25516 for listing.)-.25 E(The)144 458.4 -Q F12.522 E F0 .022 +144 504 Q .31(ginning with that string\) or as a number \(an inde)-.15 F +2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) +-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19(is used as an of) +144 516 R .19(fset from the current command number\).)-.25 F(If)5.19 E +F2(last)2.779 E F0 .189(is not speci\214ed, it is set to the cur)3.369 F +(-)-.2 E .948(rent command for listing \(so that)144 528 R/F4 10 +/Courier@0 SF .948(fc \255l \25510)3.448 F F0 .948 +(prints the last 10 commands\) and to)3.448 F F2<8c72>5.359 E(st)-.1 E +F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 540 R F2<8c72>4.41 E(st)-.1 E +F0(is not speci\214ed, it is set to the pre)3.18 E +(vious command for editing and \25516 for listing.)-.25 E(The)144 564 Q +F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 470.4 R .438(If the) -5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 +(rses the order of).15 F .438(the commands.)144 576 R .438(If the)5.438 +F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 482.4 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E -F2(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835 -(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 -F(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E .63(the v)144 494.4 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E -F0 -.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 -F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 -(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 506.4 R .951 +.335(the editor gi)144 588 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 +(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) +.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F +(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G +(n,).15 E .63(the v)144 600 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0 +-.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F +F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 +(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 612 R .951 (ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 (When editing is complete, the edited commands are echoed and)5.951 F --.15(exe)144 518.4 S(cuted.).15 E .788(In the second form,)144 542.4 R -F2(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +-.15(exe)144 624 S(cuted.).15 E .788(In the second form,)144 648 R F2 +(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 (cuted after each instance of).15 F F2(pat)3.288 E F0 .788 (is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 -E(mand)144 554.4 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> +E(mand)144 660 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> 2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171 (useful alias to use with this is)-2.5 F F4 .171(r='fc \255s')2.671 F F0 -2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 566.4 Q F4 7.165 -(rc)3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 +2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 672 Q F4 7.165(rc) +3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 (ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r) 3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F -(mand.)144 578.4 Q .142(If the \214rst form is used, the return v)144 -602.4 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(mand.)144 684 Q .142(If the \214rst form is used, the return v)144 708 +R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .454(specify history lines out of range.)144 614.4 -R .454(If the)5.454 F F12.954 E F0 .454 +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 720 R +.454(If the)5.454 F F12.954 E F0 .454 (option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 -(alue of the)-.25 F .788(last command e)144 626.4 R -.15(xe)-.15 G .788 -(cuted or f).15 F .787 +(alue of the)-.25 F(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(63) +194.555 E 0 Cg EP +%%Page: 64 64 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .788 +(last command e)144 84 R -.15(xe)-.15 G .788(cuted or f).15 F .787 (ailure if an error occurs with the temporary \214le of commands.)-.1 F .787(If the)5.787 F 1.135 (second form is used, the return status is that of the command re-e)144 -638.4 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 -(does not)4.406 F(specify a v)144 650.4 Q -(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F1(fg)108 667.2 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) -144 679.2 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 -(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 -(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 -1.413(is not present, the)4.223 F(shell')144 691.2 Q 3.116(sn)-.55 G -.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617 -(is used.)3.116 F .617(The return v)5.617 F .617 -(alue is that of the command placed into the)-.25 F(fore)144 703.2 Q +96 R -.15(xe)-.15 G 1.136(cuted, unless).15 F/F1 10/Times-Italic@0 SF +(cmd)3.836 E F0 1.136(does not)4.406 F(specify a v)144 108 Q +(alid history line, in which case)-.25 E/F2 10/Times-Bold@0 SF(fc)2.5 E +F0(returns f)2.5 E(ailure.)-.1 E F2(fg)108 124.8 Q F0([)2.5 E F1 +(jobspec)A F0(])A(Resume)144 136.8 Q F1(jobspec)5.654 E F0 1.413 +(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913 +(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1 +(jobspec)5.653 E F0 1.413(is not present, the)4.223 F(shell')144 148.8 Q +3.116(sn)-.55 G .616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job) +-.37 F F0 .617(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 160.8 Q .363(ground, or f)-.15 F .363 (ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 -(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 715.2 Q -F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 172.8 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0 (speci\214es a job that w)2.81 E(as started without job control.)-.1 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(63)193.45 E 0 Cg EP -%%Page: 64 64 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(getopts)108 84 Q/F2 10/Times-Italic@0 SF(optstring name)2.5 E F0([) -2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144 96 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.293 F F2 +F2(getopts)108 189.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs) +-.37 E F0(])A F2(getopts)144 201.6 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.293 F F1 (optstring)6.023 E F0 .793(contains the option)3.513 F .15 -(characters to be recognized; if a character is follo)144 108 R .149 +(characters to be recognized; if a character is follo)144 213.6 R .149 (wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449 --.15(ve a)-.2 H(n).15 E(ar)144 120 Q .578 +-.15(ve a)-.2 H(n).15 E(ar)144 225.6 Q .578 (gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 132 R 1.665 -(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) +(acters may not be used as option characters.)144 237.6 R 1.665 +(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts) 4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 -(option in the shell v)144 144 R(ariable)-.25 E F2(name)3.296 E F0 3.296 -(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797(if it does not e) -3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G 3.297(ft)-3.297 G -.797(he ne)-3.297 F(xt)-.15 E(ar)144 156 Q .085 +(option in the shell v)144 249.6 R(ariable)-.25 E F1(name)3.296 E F0 +3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797 +(if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G +3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 261.6 Q .085 (gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9 /Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) 4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845 -(or a shell script is in)144 168 R -.2(vo)-.4 G -.1(ke).2 G 3.345 -(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 +(or a shell script is in)144 273.6 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F2 (getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 -(into the v)144 180 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A F0 -.803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 +(into the v)144 285.6 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A +F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 (automatically; it must be manually)3.053 F .293 -(reset between multiple calls to)144 192 R F1(getopts)2.793 E F0 .293 +(reset between multiple calls to)144 297.6 R F2(getopts)2.793 E F0 .293 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 204 Q -2.044(When the end of options is encountered,)144 228 R F1(getopts)4.543 -E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 -(alue greater than zero.)-.25 F F3(OPTIND)144 240 Q F0 +2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 309.6 +Q 2.044(When the end of options is encountered,)144 333.6 R F2(getopts) +4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 +(alue greater than zero.)-.25 F F3(OPTIND)144 345.6 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 -(is set to ?.)2.5 E F1(getopts)144 264 Q F0 2.392 +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 +(is set to ?.)2.5 E F2(getopts)144 369.6 Q F0 2.392 (normally parses the positional parameters, b)4.892 F 2.392 (ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 -(ni).15 G(n)-4.893 E F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144 -276 Q F0(parses those instead.)2.5 E F1(getopts)144 300 Q F0 1.166 +(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F2(getopts)144 +381.6 Q F0(parses those instead.)2.5 E F2(getopts)144 405.6 Q F0 1.166 (can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.165 -(is a colon,)3.885 F F2(silent)4.005 E F0(error)4.345 E 1.07 -(reporting is used.)144 312 R 1.071 +1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165 +(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07 +(reporting is used.)144 417.6 R 1.071 (In normal operation, diagnostic messages are printed when in)6.07 F --.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144 324 -R .394(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable) --.25 E F3(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F -(will be displayed, e)144 336 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 -G(he \214rst character of)-2.5 E F2(optstring)2.73 E F0(is not a colon.) -2.72 E .666(If an in)144 360 R -.25(va)-.4 G .666(lid option is seen,) -.25 F F1(getopts)3.166 E F0 .667(places ? into)3.167 F F2(name)3.527 E -F0 .667(and, if not silent, prints an error message)3.347 F .4 -(and unsets)144 372 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1 -(getopts)2.899 E F0 .399 -(is silent, the option character found is placed in)2.899 F F3(OPT)2.899 -E(ARG)-.81 E F0 .399(and no)2.649 F(diagnostic message is printed.)144 -384 Q 1.241(If a required ar)144 408 R 1.241(gument is not found, and) --.18 F F1(getopts)3.741 E F0 1.241(is not silent, a question mark \() -3.741 F F1(?).833 E F0 3.742(\)i).833 G 3.742(sp)-3.742 G 1.242 -(laced in)-3.742 F F2(name)144 420 Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 -E F0 .234(is unset, and a diagnostic message is printed.)2.485 F(If) -5.234 E F1(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F1 -(:).833 E F0(\)).833 E(is placed in)144 432 Q F2(name)2.86 E F0(and)2.68 -E F3(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 -E F1(getopts)144 456 Q F0 .902 +-.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144 +429.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +(ariable)-.25 E F3(OPTERR)2.894 E F0 .394 +(is set to 0, no error messages)2.644 F(will be displayed, e)144 441.6 Q +-.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E +F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 465.6 R +-.25(va)-.4 G .666(lid option is seen,).25 F F2(getopts)3.166 E F0 .667 +(places ? into)3.167 F F1(name)3.527 E F0 .667 +(and, if not silent, prints an error message)3.347 F .4(and unsets)144 +477.6 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899 E +F0 .399(is silent, the option character found is placed in)2.899 F F3 +(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F +(diagnostic message is printed.)144 489.6 Q 1.241(If a required ar)144 +513.6 R 1.241(gument is not found, and)-.18 F F2(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.742 +(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 525.6 +Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F2 +(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F2(:).833 E +F0(\)).833 E(is placed in)144 537.6 Q F1(name)2.86 E F0(and)2.68 E F3 +(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F2 +(getopts)144 561.6 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) 3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 468 Q F1(hash)108 484.8 -Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E -F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858 -(Each time)144 496.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 -G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) +(options is encountered or an error occurs.)144 573.6 Q F2(hash)108 +590.4 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2-2.5 E F1(\214lename) +2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A +.858(Each time)144 602.4 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) +-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name) 3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 508.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +(the directories in)144 614.4 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .243(If the)144 520.8 -R F12.743 E F0 .243 -(option is supplied, no path search is performed, and)2.743 F F2 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 626.4 +R F22.743 E F0 .243 +(option is supplied, no path search is performed, and)2.743 F F1 (\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711 -(of the command.)144 532.8 R(The)6.711 E F14.211 E F0 1.711 +(of the command.)144 638.4 R(The)6.711 E F24.211 E F0 1.711 (option causes the shell to for)4.211 F 1.712 -(get all remembered locations.)-.18 F(The)6.712 E F14.212 E F0 -.833(option causes the shell to for)144 544.8 R .833 -(get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) -C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .703(plied, the full pathname to which each)144 556.8 R F2(name) +(get all remembered locations.)-.18 F(The)6.712 E F24.212 E F0 +.833(option causes the shell to for)144 650.4 R .833 +(get the remembered location of each)-.18 F F1(name)3.333 E F0 5.833(.I) +C 3.333(ft)-5.833 G(he)-3.333 E F23.333 E F0 .833(option is sup-) +3.333 F .703(plied, the full pathname to which each)144 662.4 R F1(name) 3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F -F2(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 -568.8 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 -.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 +F1(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 +674.4 R F23.295 E F0 3.295(,t)C(he)-3.295 E F1(name)3.295 E F0 +.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F2 3.295 E F0 .795(option causes)3.295 F .934 (output to be displayed in a format that may be reused as input.)144 -580.8 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G -.935(n, or if).15 F(only)144 592.8 Q F12.822 E F0 .322 +686.4 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G +.935(n, or if).15 F(only)144 698.4 Q F22.822 E F0 .322 (is supplied, information about remembered commands is printed.)2.822 F -.321(The return status is true)5.321 F(unless a)144 604.8 Q F2(name)2.86 +.321(The return status is true)5.321 F(unless a)144 710.4 Q F1(name)2.86 E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E F1(help)108 621.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 -(pattern)-2.5 E F0(])A .866(Display helpful information about b)144 -633.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 -.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 -G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144 -645.6 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 -(therwise help for all the b)-2.807 F .306 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 657.6 Q F1 -144 669.6 Q F0(Display a short description of each)180 669.6 Q F2 -(pattern)2.5 E F1144 681.6 Q F0(Display the description of each) -180 681.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G -(ormat)-2.5 E F1144 693.6 Q F0 -(Display only a short usage synopsis for each)180 693.6 Q F2(pattern)2.5 -E F0(The return status is 0 unless no command matches)144 710.4 Q F2 -(pattern)2.5 E F0(.).24 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(64)193.45 E 0 Cg EP +.25 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(64)194.555 E 0 Cg EP %%Page: 65 65 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(history [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A(history \255c) -108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E F1 -(history \255d)108 120 Q F2(start)2.5 E F0A F2(end)A F1 -(history \255anrw)108 132 Q F0([)2.5 E F2(\214lename)A F0(])A F1 -(history \255p)108 144 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5(g.) --.37 G(..)-2.5 E F0(])A F1(history \255s)108 156 Q F2(ar)2.5 E(g)-.37 E -F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 168 S .752 +SF(help)108 84 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C/F2 10 +/Times-Italic@0 SF(pattern)-2.5 E F0(])A .866 +(Display helpful information about b)144 96 R .867(uiltin commands.)-.2 +F(If)5.867 E F2(pattern)4.617 E F0 .867(is speci\214ed,)3.607 F F1(help) +3.367 E F0(gi)3.367 E -.15(ve)-.25 G 3.367(sd).15 G(etailed)-3.367 E +.307(help on all commands matching)144 108 R F2(pattern)2.807 E F0 2.807 +(;o).24 G .307(therwise help for all the b)-2.807 F .306 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 120 Q F1 +144 132 Q F0(Display a short description of each)180 132 Q F2 +(pattern)2.5 E F1144 144 Q F0(Display the description of each)180 +144 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5 +E F1144 156 Q F0(Display only a short usage synopsis for each)180 +156 Q F2(pattern)2.5 E F0 +(The return status is 0 unless no command matches)144 172.8 Q F2 +(pattern)2.5 E F0(.).24 E F1(history [)108 189.6 Q F2(n)A F1(])A +(history \255c)108 201.6 Q(history \255d)108 213.6 Q F2(of)2.5 E(fset) +-.18 E F1(history \255d)108 225.6 Q F2(start)2.5 E F0A F2(end)A F1 +(history \255anrw)108 237.6 Q F0([)2.5 E F2(\214lename)A F0(])A F1 +(history \255p)108 249.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 261.6 Q F2(ar)2.5 E(g) +-.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 +273.6 S .752 (th no options, display the command history list with line numbers.).4 F .752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 -G .381(been modi\214ed.)144 180 R .38(An ar)5.38 F .38(gument of)-.18 F -F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 +G .381(been modi\214ed.)144 285.6 R .38(An ar)5.38 F .38(gument of)-.18 +F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 (lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 192 Q(T)-.855 E F0 .264 +/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 297.6 Q(T)-.855 E F0 .264 (is set and not null, it is used as a format string for)2.514 F F2 (strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 -(ciated with each displayed history entry)144 204 R 6.019(.N)-.65 G +(ciated with each displayed history entry)144 309.6 R 6.019(.N)-.65 G 3.519(oi)-6.019 G(nterv)-3.519 E 1.019 (ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 216 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 321.6 R(If)5.176 E F2(\214lename) 2.676 E F0 .176 (is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 228 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25 -E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 240 Q F0 -(Clear the history list by deleting all the entries.)180 240 Q F1 -144 252 Q F2(of)2.5 E(fset)-.18 E F0 .39 -(Delete the history entry at position)180 264 R F2(of)2.889 E(fset)-.18 -E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)2.889 -F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti)-2.889 -G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve)-.25 G -.598(to one greater than the last history position, so ne)180 276 R -.05 -(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599 -(ndices count back from the end).15 F(of the history)180 288 Q 2.5(,a) +(not, the v)144 333.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 345.6 Q F0 +(Clear the history list by deleting all the entries.)180 345.6 Q F1 +144 357.6 Q F2(of)2.5 E(fset)-.18 E F0 .39 +(Delete the history entry at position)180 369.6 R F2(of)2.889 E(fset) +-.18 E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne) +2.889 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti) +-2.889 G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve) +-.25 G .598(to one greater than the last history position, so ne)180 +381.6 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599 +(ndices count back from the end).15 F(of the history)180 393.6 Q 2.5(,a) -.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G (efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1 -144 300 Q F2(start)2.5 E F0A F2(end)A F0 .758 -(Delete the history entries between positions)180 312 R F2(start)3.258 E -F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve)-.25 -G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne).15 F --.05(ga)-.15 G(-).05 E(ti)180 324 Q .3 -.15(ve v)-.25 H(alues for)-.1 E -F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 +144 405.6 Q F2(start)2.5 E F0A F2(end)A F0 .758 +(Delete the history entries between positions)180 417.6 R F2(start)3.258 +E F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve) +-.25 G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne) +.15 F -.05(ga)-.15 G(-).05 E(ti)180 429.6 Q .3 -.15(ve v)-.25 H +(alues for)-.1 E F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 (are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1 -144 336 Q F0 .564(Append the `)180 336 R(`ne)-.74 E(w')-.25 E 3.064('h) --.74 G .564(istory lines to the history \214le.)-3.064 F .565 -(These are history lines entered since)5.564 F(the be)180 348 Q +144 441.6 Q F0 .564(Append the `)180 441.6 R(`ne)-.74 E(w')-.25 E 3.064 +('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565 +(These are history lines entered since)5.564 F(the be)180 453.6 Q (ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E -(ut not already appended to the history \214le.)-.2 E F1144 360 Q -F0 .854(Read the history lines not already read from the history \214le\ - into the current history list.)180 360 R .772 -(These are lines appended to the history \214le since the be)180 372 R +(ut not already appended to the history \214le.)-.2 E F1144 465.6 +Q F0 .854(Read the history lines not already read from the history \214\ +le into the current history list.)180 465.6 R .772 +(These are lines appended to the history \214le since the be)180 477.6 R .773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E -(sion.)180 384 Q F1144 396 Q F0(Read the contents of the history \ -\214le and append them to the current history list.)180 396 Q F1 -144 408 Q F0(Write the current history list to the history \214le, o)180 -408 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 420 Q F0 .626 -(Perform history substitution on the follo)180 420 R(wing)-.25 E F2(ar) -3.125 E(gs)-.37 E F0 .625(and display the result on the standard)3.125 F -2.975(output. Does)180 432 R .475 +(sion.)180 489.6 Q F1144 501.6 Q F0(Read the contents of the hist\ +ory \214le and append them to the current history list.)180 501.6 Q F1 +144 513.6 Q F0 +(Write the current history list to the history \214le, o)180 513.6 Q +-.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G +(ontents.)-2.5 E F1144 525.6 Q F0 .626 +(Perform history substitution on the follo)180 525.6 R(wing)-.25 E F2 +(ar)3.125 E(gs)-.37 E F0 .625(and display the result on the standard) +3.125 F 2.975(output. Does)180 537.6 R .475 (not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) 2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 444 Q(xpansion.)-.15 E F1144 456 Q F0 .363 -(Store the)180 456 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(normal history e)180 549.6 Q(xpansion.)-.15 E F1144 561.6 Q F0 +.363(Store the)180 561.6 R F2(ar)3.193 E(gs)-.37 E F0 .363 (in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 -(he last command in the history list is)-5.363 F(remo)180 468 Q -.15(ve) --.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .145(If the)144 484.8 R F3(HISTTIMEFORMA)2.645 E(T) +(he last command in the history list is)-5.363 F(remo)180 573.6 Q -.15 +(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .145(If the)144 590.4 R F3(HISTTIMEFORMA)2.645 E(T) -.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .669(entry is written to the history \214le, mark)144 496.8 R .669 +.25 F .669(entry is written to the history \214le, mark)144 602.4 R .669 (ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 -(hen the history)-5.668 F .955(\214le is read, lines be)144 508.8 R .956 +(hen the history)-5.668 F .955(\214le is read, lines be)144 614.4 R .956 (ginning with the history comment character follo)-.15 F .956 (wed immediately by a digit)-.25 F 1.796 -(are interpreted as timestamps for the follo)144 520.8 R 1.795 +(are interpreted as timestamps for the follo)144 626.4 R 1.795 (wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F -1.795(alue is 0 unless an)-.25 F(in)144 532.8 Q -.25(va)-.4 G .768(lid \ +1.795(alue is 0 unless an)-.25 F(in)144 638.4 Q -.25(va)-.4 G .768(lid \ option is encountered, an error occurs while reading or writing the his\ -tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 544.8 Q(fset) +tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 650.4 Q(fset) -.18 E F0 1.032(is supplied as an ar)3.532 F 1.031(gument to)-.18 F F1 3.531 E F0 3.531(,o)C 3.531(rt)-3.531 G 1.031(he history e)-3.531 F 1.031(xpansion supplied as an ar)-.15 F 1.031(gument to)-.18 F F1 -3.531 E F0 -.1(fa)144 556.8 S(ils.).1 E F1(jobs)108 573.6 Q F0([) +3.531 E F0 -.1(fa)144 662.4 S(ils.).1 E F1(jobs)108 679.2 Q F0([) 2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1 -(jobs \255x)108 585.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 -E F0(... ])2.5 E(The \214rst form lists the acti)144 597.6 Q .3 -.15 +(jobs \255x)108 691.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 +E F0(... ])2.5 E(The \214rst form lists the acti)144 703.2 Q .3 -.15 (ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1144 609.6 Q F0 -(List process IDs in addition to the normal information.)180 609.6 Q F1 -144 621.6 Q F0 .193(Display information only about jobs that ha) -180 621.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 -F .194(as last noti-)-.1 F(\214ed of their status.)180 633.6 Q F1 -144 645.6 Q F0(List only the process ID of the job')180 645.6 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 657.6 Q F0 -(Display only running jobs.)180 657.6 Q F1144 669.6 Q F0 -(Display only stopped jobs.)180 669.6 Q(If)144 686.4 Q F2(jobspec)4.554 -E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 -(n, output is restricted to information about that job).15 F 5.313(.T) --.4 G .313(he return status is 0 unless)-5.313 F(an in)144 698.4 Q -.25 -(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 715.2 R F1 -2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) -3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 727.2 Q --.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) -2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(65)193.45 E 0 Cg EP +(he follo).15 E(wing meanings:)-.25 E F1144 715.2 Q F0 +(List process IDs in addition to the normal information.)180 715.2 Q +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(65)194.555 E 0 Cg EP %%Page: 66 66 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(kill)108 84 Q F0([)2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec) -2.5 E F0(|)2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2 -(sigspec)A F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5 -(].)C(..)-2.5 E F1(kill \255l)108 96 Q F0(|)A F1A F0([)2.5 E F2 -(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12 -(Send the signal named by)144 108 R F2(sigspec)2.96 E F0(or)2.93 E F2 +SF144 84 Q F0 .193(Display information only about jobs that ha)180 +84 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 F .194 +(as last noti-)-.1 F(\214ed of their status.)180 96 Q F1144 108 Q +F0(List only the process ID of the job')180 108 Q 2.5(sp)-.55 G +(rocess group leader)-2.5 E(.)-.55 E F1144 120 Q F0 +(Display only running jobs.)180 120 Q F1144 132 Q F0 +(Display only stopped jobs.)180 132 Q(If)144 148.8 Q/F2 10 +/Times-Italic@0 SF(jobspec)4.554 E F0 .314(is gi)3.124 F -.15(ve)-.25 G +.314(n, output is restricted to information about that job).15 F 5.313 +(.T)-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 160.8 Q +-.25(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G +(lid).25 E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 +177.6 R F12.894 E F0 .394(option is supplied,)2.894 F F1(jobs) +2.894 E F0 .394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394 +(found in)3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 +E F0 .395(with the corre-)3.164 F(sponding process group ID, and e)144 +189.6 Q -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E +F2(ar)2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.) +-.15 E F1(kill)108 206.4 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|) +2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A +F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..) +-2.5 E F1(kill \255l)108 218.4 Q F0(|)A F1A F0([)2.5 E F2(sigspec) +A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12 +(Send the signal named by)144 230.4 R F2(sigspec)2.96 E F0(or)2.93 E F2 (signum)2.96 E F0 .119(to the processes named by)2.939 F F2(pid)3.869 E F0(or)3.389 E F2(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is) -2.929 E .318(either a case-insensiti)144 120 R .618 -.15(ve s)-.25 H +2.929 E .318(either a case-insensiti)144 242.4 R .618 -.15(ve s)-.25 H .318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0 .319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 -(pre\214x\) or a signal)2.569 F(number;)144 132 Q F2(signum)4.189 E F0 +(pre\214x\) or a signal)2.569 F(number;)144 254.4 Q F2(signum)4.189 E F0 1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.348(is assumed.)3.599 F(An)6.348 E(ar)144 144 Q .522(gument of)-.18 F -F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 -F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F -F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) -.15 F .28(of the signals corresponding to the ar)144 156 R .28 -(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2 --.2(ex)2.78 G(it_status).2 E F0(ar)144 168 Q .377(gument to)-.18 F F1 -2.877 E F0 .378 +1.348(is assumed.)3.599 F(An)6.348 E(ar)144 266.4 Q .522(gument of)-.18 +F F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an) +5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when) +.18 F F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523 +(n, the names).15 F .28(of the signals corresponding to the ar)144 278.4 +R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E +F2 -.2(ex)2.78 G(it_status).2 E F0(ar)144 290.4 Q .377(gument to)-.18 F +F12.877 E F0 .378 (is a number specifying either a signal number or the e)2.877 F .378 -(xit status of a process termi-)-.15 F .963(nated by a signal.)144 180 R -(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 -G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 302.4 +R(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va) +-.25 G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 (returns true if at least one signal w)3.462 F(as)-.1 E -(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1 -E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2 -(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 -220.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +(successfully sent, or f)144 314.4 Q(alse if an error occurs or an in) +-.1 E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 331.2 Q +F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +343.2 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 (xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197 (ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) -2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 232.8 Q F2(ar) +2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 355.2 Q F2(ar) 2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 -(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5 -E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.56(re).15 G .06(ach ar)-2.56 F +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 372 Q F0([)2.5 E +F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(.. | \255 ])-2.5 E -.15(Fo)144 384 S 2.56(re).15 G .06(ach ar)-2.56 F .06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0 .06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he) --5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 273.6 Q 3.152(yo) --.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar) -3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 +-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 396 Q 3.152(yo)-.15 +G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar)3.152 +E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -285.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H -.422(isible scope restricted to that function and its children.).15 F -(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 -(of shell options is made local to the function in which)144 297.6 R F1 +408 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422 +(isible scope restricted to that function and its children.).15 F(If) +5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 +(of shell options is made local to the function in which)144 420 R F1 (local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462 -(d: shell options changed).1 F 1.563(using the)144 309.6 R F1(set)4.063 -E F0 -.2(bu)4.063 G 1.563 +(d: shell options changed).1 F 1.563(using the)144 432 R F1(set)4.063 E +F0 -.2(bu)4.063 G 1.563 (iltin inside the function are restored to their original v).2 F 1.562 -(alues when the function)-.25 F 3.743(returns. W)144 321.6 R 1.243 +(alues when the function)-.25 F 3.743(returns. W)144 444 R 1.243 (ith no operands,)-.4 F F1(local)3.743 E F0 1.243 (writes a list of local v)3.743 F 1.244 (ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42 -(error to use)144 333.6 R F1(local)2.92 E F0 .42 +(error to use)144 456 R F1(local)2.92 E F0 .42 (when not within a function.)2.92 F .42(The return status is 0 unless) 5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) -144 345.6 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or) -2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout) -108 362.4 Q F0(Exit a login shell.)144 362.4 Q F1(map\214le)108 379.2 Q -F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) +144 468 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 +E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108 +484.8 Q F0(Exit a login shell.)144 484.8 Q F1(map\214le)108 501.6 Q F0 +([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) 2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 -2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 -2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E -(ay)-.15 E F0(])A F1 -.18(re)108 391.2 S(adarray).18 E F0([)2.5 E F1 +(ay)-.15 E F0(])A F1 -.18(re)108 513.6 S(adarray).18 E F0([)2.5 E F1 A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 (][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 (count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 (fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 -(])A .179(Read lines from the standard input into the inde)144 403.2 R +(])A .179(Read lines from the standard input into the inde)144 525.6 R -.15(xe)-.15 G 2.679(da).15 G .179(rray v)-2.679 F(ariable)-.25 E F2 (arr)2.68 E(ay)-.15 E F0 2.68(,o).32 G 2.68(rf)-2.68 G .18 -(rom \214le descriptor)-2.68 F F2(fd)4.65 E F0 1.249(if the)144 415.2 R +(rom \214le descriptor)-2.68 F F2(fd)4.65 E F0 1.249(if the)144 537.6 R F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F (ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) --6.248 F(ha)144 427.2 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 439.2 Q F0 .91 -(The \214rst character of)180 439.2 R F2(delim)3.41 E F0 .911 +-6.248 F(ha)144 549.6 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 561.6 Q F0 .91 +(The \214rst character of)180 561.6 R F2(delim)3.41 E F0 .911 (is used to terminate each input line, rather than ne)3.41 F 3.411 -(wline. If)-.25 F F2(delim)180 451.2 Q F0(is the empty string,)2.5 E F1 +(wline. If)-.25 F F2(delim)180 573.6 Q F0(is the empty string,)2.5 E F1 (map\214le)2.5 E F0(will terminate a line when it reads a NUL character) -2.5 E(.)-.55 E F1144 463.2 Q F0(Cop)180 463.2 Q 2.5(ya)-.1 G 2.5 +2.5 E(.)-.55 E F1144 585.6 Q F0(Cop)180 585.6 Q 2.5(ya)-.1 G 2.5 (tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count) -2.5 E F0(is 0, all lines are copied.)2.5 E F1144 475.2 Q F0(Be)180 -475.2 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 +2.5 E F0(is 0, all lines are copied.)2.5 E F1144 597.6 Q F0(Be)180 +597.6 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x)-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5 -(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 487.2 Q F0 -(Discard the \214rst)180 487.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -144 499.2 Q F0(Remo)180 499.2 Q .3 -.15(ve a t)-.15 H(railing).15 +(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 609.6 Q F0 +(Discard the \214rst)180 609.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 621.6 Q F0(Remo)180 621.6 Q .3 -.15(ve a t)-.15 H(railing).15 E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E -(wline\) from each line read.)-.25 E F1144 511.2 Q F0 -(Read lines from \214le descriptor)180 511.2 Q F2(fd)2.5 E F0 -(instead of the standard input.)2.5 E F1144 523.2 Q F0(Ev)180 -523.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(wline\) from each line read.)-.25 E F1144 633.6 Q F0 +(Read lines from \214le descriptor)180 633.6 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 645.6 Q F0(Ev)180 +645.6 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 (quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 -(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 535.2 -Q F0(Specify the number of lines read between each call to)180 535.2 Q -F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 552 Q F12.968 E F0 .467 -(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 657.6 +Q F0(Specify the number of lines read between each call to)180 657.6 Q +F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 674.4 Q F12.968 E F0 +.467(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .261(plied the inde)144 564 R 2.761(xo)-.15 G -2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be assig\ -ned and the line to be assigned to that element)-.15 F .275 -(as additional ar)144 576 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +(luated, it is sup-).25 F .261(plied the inde)144 686.4 R 2.761(xo)-.15 +G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ +igned and the line to be assigned to that element)-.15 F .275 +(as additional ar)144 698.4 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E F0 .275(is e)2.775 F -.25(va)-.25 G .274 (luated after the line is read b).25 F .274 -(ut before the array element is)-.2 F(assigned.)144 588 Q -(If not supplied with an e)144 604.8 Q(xplicit origin,)-.15 E F1 +(ut before the array element is)-.2 F(assigned.)144 710.4 Q +(If not supplied with an e)144 727.2 Q(xplicit origin,)-.15 E F1 (map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F1(map\214le)144 621.6 Q F0 1.905 -(returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F2(arr) -4.406 E(ay)-.15 E F0(is)4.406 E(in)144 633.6 Q -.25(va)-.4 G -(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 -(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F1(popd)108 650.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 662.4 Q -.15(ve)-.15 G 2.8(se) -.15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 -(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G -.299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 -674.4 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 -(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 -F(wing)-.25 E(meanings:)144 686.4 Q F1144 698.4 Q F0 .551 -(Suppresses the normal change of directory when remo)180 698.4 R .551 -(ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 710.4 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(66)193.45 E 0 Cg EP +(before assigning to it.)2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(66)194.555 E 0 Cg EP %%Page: 67 67 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 -G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14 -(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1 -(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 96 -S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0(remo) -2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)-.65 E -F3(popd +1)2.5 E F0(the second.)2.5 E F1144 108 Q F2(n)A F0(Remo)180 -108 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 1.259 -(th entry counting from the right of the list sho)B 1.259(wn by)-.25 F -F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5(zero. F) -180 120 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0(remo)2.5 E -.15 -(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 -E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 136.8 R F1(popd) -3.143 E F0 .643(command is successful, a)3.143 F F1(dirs)3.143 E F0 .644 -(is performed as well, and the return status is 0.)3.143 F F1(popd)5.644 -E F0 .416(returns f)144 148.8 R .416(alse if an in)-.1 F -.25(va)-.4 G -.415(lid option is encountered, the directory stack is empty).25 F 2.915 +SF(map\214le)144 84 Q F0 1.905(returns successfully unless an in)4.405 F +-.25(va)-.4 G 1.905(lid option or option ar).25 F 1.906 +(gument is supplied,)-.18 F/F2 10/Times-Italic@0 SF(arr)4.406 E(ay)-.15 +E F0(is)4.406 E(in)144 96 Q -.25(va)-.4 G(lid or unassignable, or if).25 +E F2(arr)2.5 E(ay)-.15 E F0(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da) +.15 G(rray)-2.5 E(.)-.65 E F1(popd)108 112.8 Q F0<5bad>2.5 E F1(n)A F0 +2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 +124.8 Q -.15(ve)-.15 G 2.8(se).15 G .3(ntries from the directory stack.) +-2.8 F -.4(Wi)5.299 G .299(th no ar).4 F .299(guments, remo)-.18 F -.15 +(ve)-.15 G 2.799(st).15 G .299(he top directory from the)-2.799 F 1.478 +(stack, and performs a)144 136.8 R F1(cd)3.978 E F0 1.479(to the ne) +3.978 F 3.979(wt)-.25 G 1.479(op directory)-3.979 F 6.479(.A)-.65 G -.18 +(rg)-6.479 G 1.479(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H +1.479(he follo).15 F(wing)-.25 E(meanings:)144 148.8 Q F1144 160.8 +Q F0 .551(Suppresses the normal change of directory when remo)180 160.8 +R .551(ving directories from the stack, so)-.15 F +(that only the stack is manipulated.)180 172.8 Q F1(+)144 184.8 Q F2(n)A +F0(Remo)180 184.8 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E +F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 +F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 +196.8 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 +(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) +-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1144 208.8 Q F2(n)A F0 +(Remo)180 208.8 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 +1.259(th entry counting from the right of the list sho)B 1.259(wn by) +-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 +(zero. F)180 220.8 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0 +(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 +E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 +237.6 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1 +(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.) +3.143 F F1(popd)5.644 E F0 .416(returns f)144 249.6 R .416 +(alse if an in)-.1 F -.25(va)-.4 G .415 +(lid option is encountered, the directory stack is empty).25 F 2.915 (,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 160.8 Q -(ails.)-.1 E F1(printf)108 177.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(tory stack entry is speci\214ed, or the directory change f)144 261.6 Q +(ails.)-.1 E F1(printf)108 278.4 Q F0([)2.5 E F1A F2(var)2.5 E F0 (])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 -(Write the formatted)144 189.6 R F2(ar)3.936 E(guments)-.37 E F0 1.437 +(Write the formatted)144 290.4 R F2(ar)3.936 E(guments)-.37 E F0 1.437 (to the standard output under the control of the)3.936 F F2(format)3.937 E F0 6.437(.T)C(he)-6.437 E F13.937 E F0 .126 -(option causes the output to be assigned to the v)144 201.6 R(ariable) +(option causes the output to be assigned to the v)144 302.4 R(ariable) -.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) -2.626 F(output.)144 213.6 Q(The)144 237.6 Q F2(format)3.017 E F0 .517(i\ +2.626 F(output.)144 314.4 Q(The)144 338.4 Q F2(format)3.017 E F0 .517(i\ s a character string which contains three types of objects: plain chara\ cters, which are)3.017 F .704(simply copied to standard output, charact\ -er escape sequences, which are con)144 249.6 R -.15(ve)-.4 G .703 +er escape sequences, which are con)144 350.4 R -.15(ve)-.4 G .703 (rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 261.6 R .037 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 273.6 Q(gument)-.37 E F0 +\214cations, each of which causes printing of the ne)144 362.4 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 374.4 Q(gument)-.37 E F0 5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 (printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 -E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 285.6 Q -(xtensions:)-.15 E F1(%b)144 297.6 Q F0(causes)180 297.6 Q F1(printf) +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 386.4 Q +(xtensions:)-.15 E F1(%b)144 398.4 Q F0(causes)180 398.4 Q F1(printf) 2.595 E F0 .096(to e)2.595 F .096 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar) -2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 309.6 Q(ay as) --.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 321.6 Q F0(causes)180 321.6 Q +2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 410.4 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 422.4 Q F0(causes)180 422.4 Q F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 333.6 Q F1(%\()144 345.6 Q F2(datefmt)A F1(\)T)A F0(causes) -180 357.6 Q F1(printf)4.403 E F0 1.904 +(input.)180 434.4 Q F1(%\()144 446.4 Q F2(datefmt)A F1(\)T)A F0(causes) +180 458.4 Q F1(printf)4.403 E F0 1.904 (to output the date-time string resulting from using)4.403 F F2(datefmt) -4.404 E F0 1.904(as a format)4.404 F .381(string for)180 369.6 R F2 +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 470.4 R F2 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 (ger representing the number)-.15 F .292(of seconds since the epoch.)180 -381.6 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +482.4 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F .293(alues may be used: \2551 represents the)-.25 F .694 -(current time, and \2552 represents the time the shell w)180 393.6 R +(current time, and \2552 represents the time the shell w)180 494.4 R .693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar) -3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 405.6 R -.15 +3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 506.4 R -.15 (ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F -F1(printf)2.71 E F0(beha)180 417.6 Q(vior)-.2 E(.)-.55 E(Ar)144 434.4 Q +F1(printf)2.71 E F0(beha)180 518.4 Q(vior)-.2 E(.)-.55 E(Ar)144 535.2 Q .464(guments to non-string format speci\214ers are treated as C constan\ ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258 -(minus sign is allo)144 446.4 R 1.259 +(minus sign is allo)144 547.2 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.259(alue is the)-.25 F(ASCII v)144 458.4 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 475.2 Q F2(format)3.424 E -F0 .923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 -E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) -3.423 E F0 .923(requires more)3.423 F F2(ar)144 487.2 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.533 F .033 +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 559.2 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 576 Q F2(format)3.424 E F0 +.923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 E +(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) +3.423 E F0 .923(requires more)3.423 F F2(ar)144 588 Q(guments)-.37 E F0 +.033(than are supplied, the e)2.533 F .033 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) .15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,) --.25 F(as appropriate, had been supplied.)144 499.2 Q(The return v)5 E +-.25 F(as appropriate, had been supplied.)144 600 Q(The return v)5 E (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 516 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 528 Q F0([)2.5 E F1A F0 2.5 -(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the direc\ -tory stack, or rotates the stack, making the ne)144 540 R 3.139(wt)-.25 -G .639(op of the)-3.139 F .416(stack the current w)144 552 R .416 +108 616.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 628.8 Q F0([)2.5 E F1A F0 +2.5(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the di\ +rectory stack, or rotates the stack, making the ne)144 640.8 R 3.139(wt) +-.25 G .639(op of the)-3.139 F .416(stack the current w)144 652.8 R .416 (orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F (guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 (changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625 -(and returns 0, unless the directory stack is empty)144 564 R 6.625(.A) --.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 -.15 -(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 576 Q F1 -144 588 Q F0 1.811(Suppresses the normal change of directory when\ - rotating or adding directories to the)180 588 R -(stack, so that only the stack is manipulated.)180 600 Q F1(+)144 612 Q -F2(n)A F0 1.268(Rotates the stack so that the)180 612 R F2(n)3.768 E F0 -1.267(th directory \(counting from the left of the list sho)B 1.267 -(wn by)-.25 F F1(dirs)180 624 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F1144 636 Q F2(n)A F0 .92 -(Rotates the stack so that the)180 636 R F2(n)3.42 E F0 .92 +(and returns 0, unless the directory stack is empty)144 664.8 R 6.625 +(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 +-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 676.8 Q +F1144 688.8 Q F0 1.811(Suppresses the normal change of directory \ +when rotating or adding directories to the)180 688.8 R +(stack, so that only the stack is manipulated.)180 700.8 Q F1(+)144 +712.8 Q F2(n)A F0 1.268(Rotates the stack so that the)180 712.8 R F2(n) +3.768 E F0 1.267(th directory \(counting from the left of the list sho)B +1.267(wn by)-.25 F F1(dirs)180 724.8 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(67)194.555 E 0 Cg EP +%%Page: 68 68 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q/F2 10/Times-Italic@0 SF(n)A F0 .92 +(Rotates the stack so that the)180 84 R F2(n)3.42 E F0 .92 (th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F1(dirs)180 648 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 -E F2(dir)144.35 660 Q F0(Adds)180 660 Q F2(dir)3.138 E F0 .288 +F F1(dirs)180 96 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 E +F2(dir)144.35 108 Q F0(Adds)180 108 Q F2(dir)3.138 E F0 .288 (to the directory stack at the top, making it the ne)3.518 F 2.787(wc) -.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F -(if it had been supplied as the ar)180 672 Q(gument to the)-.18 E F1(cd) -2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 688.8 R F1(pushd)2.988 +(if it had been supplied as the ar)180 120 Q(gument to the)-.18 E F1(cd) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 136.8 R F1(pushd)2.988 E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488 (is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F -F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 700.8 R F2(dir) +F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 148.8 R F2(dir) 3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 -(stack is empty)144 712.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ +(stack is empty)144 160.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 724.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(67)193.45 E 0 -Cg EP -%%Page: 68 68 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(pwd)108 84 Q F0([)2.5 E F1(\255LP)A F0(])A .845 -(Print the absolute pathname of the current w)144 96 R .845 +-.15 F(speci\214ed ne)144 172.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E F1(pwd)108 189.6 Q F0([)2.5 E F1(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 201.6 R .845 (orking directory)-.1 F 5.844(.T)-.65 G .844 (he pathname printed contains no)-5.844 F .181(symbolic links if the)144 -108 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 -(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) -2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264(enabled. If) -144 120 R(the)3.264 E F13.264 E F0 .763 +213.6 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 +.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 +(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264 +(enabled. If)144 225.6 R(the)3.264 E F13.264 E F0 .763 (option is used, the pathname printed may contain symbolic links.)3.264 F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 132 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 144 Q F1 -.18(re)108 160.8 S(ad) -.18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1-3.817 E/F2 10 -/Times-Italic@0 SF(aname)3.817 E F0 3.817(][)C F1-3.817 E F2 -(delim)3.817 E F0 3.817(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 -3.817(][)C F1-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816 -(][)C F1-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1 --3.816 E F2(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E -F2(timeout)3.816 E F0 3.816(][)C F1-3.816 E F2(fd)3.816 E F0(])A -([)108 172.8 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\ -tandard input, or from the \214le descriptor)144 184.8 R F2(fd)3.016 E -F0 .516(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 196.8 Q -F13.848 E F0 1.348(option, split into w)3.848 F 1.348 -(ords as described abo)-.1 F 1.647 -.15(ve u)-.15 H(nder).15 E F1 -.75 -(Wo)3.847 G 1.347(rd Splitting).75 F F0 3.847(,a)C 1.347 -(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465 -(assigned to the \214rst)144 208.8 R F2(name)3.965 E F0 3.965(,t).18 G + reading the name of the current directory or an in)144 237.6 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 249.6 Q F1 -.18(re)108 266.4 S +(ad).18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1-3.817 E F2 +(aname)3.817 E F0 3.817(][)C F1-3.817 E F2(delim)3.817 E F0 3.817 +(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 3.817(][)C F1 +-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1-3.816 E +F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1-3.816 E F2(pr) +3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E F2(timeout)3.816 E F0 +3.816(][)C F1-3.816 E F2(fd)3.816 E F0(])A([)108 278.4 Q F2(name)A +F0(...])2.5 E .516(One line is read from the standard input, or from th\ +e \214le descriptor)144 290.4 R F2(fd)3.016 E F0 .516(supplied as an ar) +3.016 F .517(gument to)-.18 F(the)144 302.4 Q F13.848 E F0 1.348 +(option, split into w)3.848 F 1.348(ords as described abo)-.1 F 1.647 +-.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.847 G 1.347(rd Splitting).75 F +F0 3.847(,a)C 1.347(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465 +(assigned to the \214rst)144 314.4 R F2(name)3.965 E F0 3.965(,t).18 G 1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465 -F -.1(wo)144 220.8 S 1.112(rds than names, the remaining w).1 F 1.112 +F -.1(wo)144 326.4 S 1.112(rds than names, the remaining w).1 F 1.112 (ords and their interv)-.1 F 1.112 -(ening delimiters are assigned to the last)-.15 F F2(name)144 232.8 Q F0 +(ening delimiters are assigned to the last)-.15 F F2(name)144 338.4 Q F0 5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w) -.25 F .723 (ords read from the input stream than names, the remaining names are)-.1 -F .532(assigned empty v)144 244.8 R 3.032(alues. The)-.25 F .532 +F .532(assigned empty v)144 350.4 R 3.032(alues. The)-.25 F .532 (characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531 (are used to split the line into w)2.782 F .531(ords using the same)-.1 -F .197(rules the shell uses for e)144 256.8 R .197 +F .197(rules the shell uses for e)144 362.4 R .197 (xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197 -(backslash charac-)2.697 F .157(ter \()144 268.8 R F1(\\)A F0 2.657(\)m) +(backslash charac-)2.697 F .157(ter \()144 374.4 R F1(\\)A F0 2.657(\)m) C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s) .15 H .157(pecial meaning for the ne).15 F .156 (xt character read and for line continu-)-.15 F 2.5(ation. Options,)144 -280.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 292.8 Q F2(aname)2.5 E F0 1.049 -(The w)180 304.8 R 1.049 +386.4 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 398.4 Q F2(aname)2.5 E F0 1.049 +(The w)180 410.4 R 1.049 (ords are assigned to sequential indices of the array v)-.1 F(ariable) -.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F2 -(aname)180.33 316.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 +(aname)180.33 422.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 (ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5 -E(guments are ignored.)-.18 E F1144 328.8 Q F2(delim)2.5 E F0 -1.318(The \214rst character of)180 340.8 R F2(delim)3.818 E F0 1.317 +E(guments are ignored.)-.18 E F1144 434.4 Q F2(delim)2.5 E F0 +1.318(The \214rst character of)180 446.4 R F2(delim)3.818 E F0 1.317 (is used to terminate the input line, rather than ne)3.818 F 3.817 -(wline. If)-.25 F F2(delim)180 352.8 Q F0(is the empty string,)2.5 E F1 +(wline. If)-.25 F F2(delim)180 458.4 Q F0(is the empty string,)2.5 E F1 -.18(re)2.5 G(ad).18 E F0 (will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F1 -144 364.8 Q F0 .372 -(If the standard input is coming from a terminal,)180 364.8 R F1 -.18 +144 470.4 Q F0 .372 +(If the standard input is coming from a terminal,)180 470.4 R F1 -.18 (re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo) 2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E -.218(to obtain the line.)180 376.8 R .218 +.218(to obtain the line.)180 482.4 R .218 (Readline uses the current \(or def)5.218 F .218 (ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E -(acti)180 388.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(acti)180 494.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E (ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E -(ault \214lename completion.)-.1 E F1144 400.8 Q F2(te)2.5 E(xt) --.2 E F0(If)180 400.8 Q F1 -.18(re)2.715 G(adline).18 E F0 .216 +(ault \214lename completion.)-.1 E F1144 506.4 Q F2(te)2.5 E(xt) +-.2 E F0(If)180 506.4 Q F1 -.18(re)2.715 G(adline).18 E F0 .216 (is being used to read the line,)2.715 F F2(te)2.716 E(xt)-.2 E F0 .216 (is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-) --.25 F(ing be)180 412.8 Q(gins.)-.15 E F1144 424.8 Q F2(nc)2.5 E -(har)-.15 E(s)-.1 E F1 -.18(re)180 436.8 S(ad).18 E F0 1.395 +-.25 F(ing be)180 518.4 Q(gins.)-.15 E F1144 530.4 Q F2(nc)2.5 E +(har)-.15 E(s)-.1 E F1 -.18(re)180 542.4 S(ad).18 E F0 1.395 (returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 1.395 (characters rather than w)3.895 F 1.394(aiting for a complete line of) --.1 F(input, b)180 448.8 Q(ut honors a delimiter if fe)-.2 E(wer than) +-.1 F(input, b)180 554.4 Q(ut honors a delimiter if fe)-.2 E(wer than) -.25 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 (characters are read before the delimiter)2.5 E(.)-.55 E F1144 -460.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 472.8 S(ad).18 E +566.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 578.4 S(ad).18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 E (har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 (aiting for a complete)-.1 F .275 -(line of input, unless EOF is encountered or)180 484.8 R F1 -.18(re) +(line of input, unless EOF is encountered or)180 590.4 R F1 -.18(re) 2.775 G(ad).18 E F0 .274(times out.)2.774 F .274 (Delimiter characters encoun-)5.274 F 1.002 -(tered in the input are not treated specially and do not cause)180 496.8 +(tered in the input are not treated specially and do not cause)180 602.4 R F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc) -3.503 E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 508.8 R .608 +3.503 E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 614.4 R .608 (The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0 -3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 520.8 S .669 +3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 626.4 S .669 (riable is assigned e).25 F .669 (xactly the characters read \(with the e)-.15 F .67 -(xception of backslash; see the)-.15 F F1180 532.8 Q F0 -(option belo)2.5 E(w\).)-.25 E F1144 544.8 Q F2(pr)2.5 E(ompt)-.45 -E F0(Display)180 556.8 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161 +(xception of backslash; see the)-.15 F F1180 638.4 Q F0 +(option belo)2.5 E(w\).)-.25 E F1144 650.4 Q F2(pr)2.5 E(ompt)-.45 +E F0(Display)180 662.4 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161 (on standard error)3.661 F 3.661(,w)-.4 G 1.161(ithout a trailing ne) --3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 568.8 Q +-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 674.4 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F (prompt is displayed only if input is coming from a terminal.)2.5 E F1 -144 580.8 Q F0 .543(Backslash does not act as an escape character) -180 580.8 R 5.543(.T)-.55 G .544 -(he backslash is considered to be part of)-5.543 F(the line.)180 592.8 Q +144 686.4 Q F0 .543(Backslash does not act as an escape character) +180 686.4 R 5.543(.T)-.55 G .544 +(he backslash is considered to be part of)-5.543 F(the line.)180 698.4 Q (In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E (wline pair may not be used as a line continuation.)-.25 E F1144 -604.8 Q F0(Silent mode.)180 604.8 Q -(If input is coming from a terminal, characters are not echoed.)5 E F1 -144 616.8 Q F2(timeout)2.5 E F0(Cause)180 628.8 Q F1 -.18(re)2.929 -G(ad).18 E F0 .428(to time out and return f)2.929 F .428 -(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 -(ber of characters\) is not read within)180 640.8 R F2(timeout)3.061 E +710.4 Q F0(Silent mode.)180 710.4 Q +(If input is coming from a terminal, characters are not echoed.)5 E +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(68)194.555 E 0 Cg EP +%%Page: 69 69 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q/F2 10/Times-Italic@0 SF(timeout)2.5 E F0(Cause)180 96 Q +F1 -.18(re)2.929 G(ad).18 E F0 .428(to time out and return f)2.929 F +.428(ailure if a complete line of input \(or a speci\214ed num-)-.1 F +.56(ber of characters\) is not read within)180 108 R F2(timeout)3.061 E F0(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) -3.061 F(with a fractional portion follo)180 652.8 Q +3.061 F(with a fractional portion follo)180 120 Q (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 -664.8 R .506(fect when reading)-.25 F .59(from re)180 676.8 R .59 +132 R .506(fect when reading)-.25 F .59(from re)180 144 R .59 (gular \214les.)-.15 F(If)5.59 E F1 -.18(re)3.09 G(ad).18 E F0 .589 (times out,)3.09 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 -(artial input read into the speci\214ed).15 F -.25(va)180 688.8 S -(riable).25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 -.27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately) -2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 -G(ata.)-2.77 E 1.12(The e)180 700.8 R 1.12 -(xit status is 0 if input is a)-.15 F -.25(va)-.2 G 1.12 -(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G 1.12 -(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 712.8 R -.15(ex)2.5 G -(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(68)193.45 E 0 Cg EP -%%Page: 69 69 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q/F2 10/Times-Italic@0 SF(fd)2.5 E F0 -(Read input from \214le descriptor)180 84 Q F2(fd)2.5 E F0(.)A .476 -(If no)144 100.8 R F2(names)3.336 E F0 .476 +(artial input read into the speci\214ed).15 F -.25(va)180 156 S(riable) +.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 +(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 +F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G +(ata.)-2.77 E 1.12(The e)180 168 R 1.12(xit status is 0 if input is a) +-.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) +.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 +180 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) +.15 E(xceeded.)-.15 E F1144 192 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 192 Q F2(fd)2.5 E F0(.)A .476 +(If no)144 208.8 R F2(names)3.336 E F0 .476 (are supplied, the line read is assigned to the v)3.246 F(ariable)-.25 E /F3 9/Times-Bold@0 SF(REPL)2.977 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .477(The e)4.977 F .477(xit status is zero,)-.15 F .773 -(unless end-of-\214le is encountered,)144 112.8 R F1 -.18(re)3.273 G(ad) +(unless end-of-\214le is encountered,)144 220.8 R F1 -.18(re)3.273 G(ad) .18 E F0 .772 (times out \(in which case the status is greater than 128\), a)3.273 F --.25(va)144 124.8 S 2.004 +-.25(va)144 232.8 S 2.004 (riable assignment error \(such as assigning to a readonly v).25 F 2.005 (ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.005(lid \214le).25 F -(descriptor is supplied as the ar)144 136.8 Q(gument to)-.18 E F1 -2.5 E F0(.)A F1 -.18(re)108 153.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A +(descriptor is supplied as the ar)144 244.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 261.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A -(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 165.6 R -.15(ve)-.25 G +(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 273.6 R -.15(ve)-.25 G (n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v) -.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77 -(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 177.6 R +(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 285.6 R 1.096(If the)6.096 F F13.596 E F0 1.097 (option is supplied, the functions corresponding to the)3.596 F F2 -(names)3.597 E F0 1.097(are so)3.597 F(mark)144 189.6 Q 3.334(ed. The) +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 297.6 Q 3.334(ed. The) -.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) -3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 201.6 R 1.076 -.15(ve a)-.25 H 3.276 +-.25 E .776(ables to associati)144 309.6 R 1.076 -.15(ve a)-.25 H 3.276 (rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) -3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 213.6 R -.15(ve) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 321.6 R -.15(ve) -.25 G .521(n, or if the).15 F F13.021 E F0 .521 (option is supplied, a list of all readonly names is printed.)3.021 F .521(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 225.6 R(The)5.296 E F1 +to a subset of the set of readonly names.)144 333.6 R(The)5.296 E F1 2.796 E F0(option)2.796 E .786 (causes output to be displayed in a format that may be reused as input.) -144 237.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -249.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +144 345.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +357.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) -3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 261.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +144 369.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) -.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 273.6 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 290.4 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 302.4 R +(is supplied with a)2.76 F F2(name)144.36 381.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 398.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 410.4 R -.15(xe)-.15 G .02(cuting and return the v).15 F .021 (alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F 5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597 -(the return status is that of the last command e)144 314.4 R -.15(xe) +(the return status is that of the last command e)144 422.4 R -.15(xe) -.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15 -G(cuted).15 E 1.238(by a trap handler)144 326.4 R 3.738(,t)-.4 G 1.238 +G(cuted).15 E 1.238(by a trap handler)144 434.4 R 3.738(,t)-.4 G 1.238 (he last command used to determine the status is the last command e) -3.738 F -.15(xe)-.15 G(cuted).15 E 1.033(before the trap handler)144 -338.4 R 6.033(.I)-.55 G(f)-6.033 E F1 -.18(re)3.533 G(tur).18 E(n)-.15 E +446.4 R 6.033(.I)-.55 G(f)-6.033 E F1 -.18(re)3.533 G(tur).18 E(n)-.15 E F0 1.033(is e)3.533 F -.15(xe)-.15 G 1.033(cuted during a).15 F F1(DEB) 3.532 E(UG)-.1 E F0 1.032(trap, the last command used to)3.532 F .389 -(determine the status is the last command e)144 350.4 R -.15(xe)-.15 G +(determine the status is the last command e)144 458.4 R -.15(xe)-.15 G .389(cuted by the trap handler before).15 F F1 -.18(re)2.89 G(tur).18 E (n)-.15 E F0 -.1(wa)2.89 G 2.89(si).1 G -1.9 -.4(nv o)-2.89 H -.1(ke).4 -G(d.).1 E(If)144 362.4 Q F1 -.18(re)2.584 G(tur).18 E(n)-.15 E F0 .084 +G(d.).1 E(If)144 470.4 Q F1 -.18(re)2.584 G(tur).18 E(n)-.15 E F0 .084 (is used outside a function, b)2.584 F .084(ut during e)-.2 F -.15(xe) -.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084 E F1(sour)A(ce)-.18 E F0 2.583(\)c)C .083(ommand, it)-2.583 F .588 -(causes the shell to stop e)144 374.4 R -.15(xe)-.15 G .588 +(causes the shell to stop e)144 482.4 R -.15(xe)-.15 G .588 (cuting that script and return either).15 F F2(n)3.448 E F0 .589 (or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e) -144 386.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F +144 494.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F .326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325 (is supplied, the return v)2.826 F .325(alue is)-.25 F .444 -(its least signi\214cant 8 bits.)144 398.4 R .444 +(its least signi\214cant 8 bits.)144 506.4 R .444 (The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E (n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381 -(ment, or is used outside a function and not during e)144 410.4 R -.15 +(ment, or is used outside a function and not during e)144 518.4 R -.15 (xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E F1(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E -.749(mand associated with the)144 422.4 R F1(RETURN)3.249 E F0 .749 +.749(mand associated with the)144 530.4 R F1(RETURN)3.249 E F0 .749 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 -G .75(cution resumes after the function).15 F(or script.)144 434.4 Q F1 -(set)108 451.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +G .75(cution resumes after the function).15 F(or script.)144 542.4 Q F1 +(set)108 559.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E -F0(...])2.5 E F1(set)108 463.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +F0(...])2.5 E F1(set)108 571.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E -(g)-.37 E F0(...])2.5 E -.4(Wi)144 475.2 S .836 +(g)-.37 E F0(...])2.5 E -.4(Wi)144 583.2 S .836 (thout options, the name and v).4 F .835(alue of each shell v)-.25 F .835(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 487.2 +(reused as input for setting or resetting the currently-set v)144 595.2 R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.912(reset. In)144 499.2 R F2(posix)2.912 E F0 -.412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 -(The output is sorted according to the current)5.412 F 3.53 -(locale. When)144 511.2 R 1.031(options are speci\214ed, the)3.53 F +(riables cannot be).25 F 2.947(reset. In)144 607.2 R F2 .447(posix mode) +2.947 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 +(ariables are listed.)-.25 F .447 +(The output is sorted according to the current)5.447 F 3.53 +(locale. When)144 619.2 R 1.031(options are speci\214ed, the)3.53 F 3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) -.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F -1.624(after option processing are treated as v)144 523.2 R 1.623 +1.624(after option processing are treated as v)144 631.2 R 1.623 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 535.2 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +144 643.2 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 547.2 Q -F0 1.377(Each v)184 547.2 R 1.377 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 655.2 Q +F0 1.377(Each v)184 655.2 R 1.377 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) -.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F -1.378(ute and)-.2 F(mark)184 559.2 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 571.2 Q F0 .132 -(Report the status of terminated background jobs immediately)184 571.2 R +1.378(ute and)-.2 F(mark)184 667.2 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 679.2 Q F0 .132 +(Report the status of terminated background jobs immediately)184 679.2 R 2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 583.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 595.2 Q F0 -.087(Exit immediately if a)184 595.2 R F2(pipeline)2.587 E F0 .087 +(primary prompt.)184 691.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 703.2 Q F0 +.087(Exit immediately if a)184 703.2 R F2(pipeline)2.587 E F0 .087 (\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F -F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 607.2 Q +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 715.2 Q F2 1.521(compound command)4.021 F F0(\(see)4.021 E F3 1.521 (SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F 1.521(xits with a non-zero status.)-.15 F .079(The shell does not e)184 -619.2 R .079(xit if the command that f)-.15 F .08 -(ails is part of the command list immediately)-.1 F(follo)184 631.2 Q -1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 --.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 -(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) -4.154 E(ed)-.15 E -.1(wo)184 643.2 S .581(rds, part of an).1 F 3.081(yc) --.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 -(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 -(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 655.2 R -F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) --3.418 H .918(ommand in a pipeline b).15 F .917 -(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E --.25(va)184 667.2 S .66(lue is being in).25 F -.15(ve)-.4 G .66 +727.2 R .079(xit if the command that f)-.15 F .08 +(ails is part of the command list immediately)-.1 F(GNU Bash 5.0)72 768 +Q(2018 August 7)145.395 E(69)194.555 E 0 Cg EP +%%Page: 70 70 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(follo)184 84 Q +1.655(wing a)-.25 F/F1 10/Times-Bold@0 SF(while)4.155 E F0(or)4.155 E F1 +(until)4.155 E F0 -.1(ke)4.155 G(yw)-.05 E 1.655 +(ord, part of the test follo)-.1 F 1.654(wing the)-.25 F F1(if)4.154 E +F0(or)4.154 E F1(elif)4.154 E F0(reserv)4.154 E(ed)-.15 E -.1(wo)184 96 +S .581(rds, part of an).1 F 3.081(yc)-.15 G .581(ommand e)-3.081 F -.15 +(xe)-.15 G .581(cuted in a).15 F F1(&&)3.081 E F0(or)3.081 E F1(||)3.081 +E F0 .582(list e)3.082 F .582(xcept the command follo)-.15 F(wing)-.25 E +.918(the \214nal)184 108 R F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 +3.418(,a)C 1.218 -.15(ny c)-3.418 H .918(ommand in a pipeline b).15 F +.917(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 +E -.25(va)184 120 S .66(lue is being in).25 F -.15(ve)-.4 G .66 (rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 (ompound command other than a subshell returns a)-3.161 F 1.113 -(non-zero status because a command f)184 679.2 R 1.112(ailed while)-.1 F +(non-zero status because a command f)184 132 R 1.112(ailed while)-.1 F F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 -(eing ignored, the shell does)-3.612 F .177(not e)184 691.2 R 2.677 +(eing ignored, the shell does)-3.612 F .177(not e)184 144 R 2.677 (xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 (fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 (cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 -(option applies to)2.678 F .618(the shell en)184 703.2 R .617 +(option applies to)2.678 F .618(the shell en)184 156 R .617 (vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 715.2 R(ONMENT) --.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +-.4 F/F2 9/Times-Bold@0 SF .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR) +184 168 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 727.2 -Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(69)193.45 E 0 Cg EP -%%Page: 70 70 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.042 -(If a compound command or shell function e)184 84 R -.15(xe)-.15 G 2.042 -(cutes in a conte).15 F 2.042(xt where)-.15 F/F1 10/Times-Bold@0 SF -4.542 E F0 2.042(is being)4.542 F 1.435 -(ignored, none of the commands e)184 96 R -.15(xe)-.15 G 1.436 -(cuted within the compound command or function).15 F .194 -(body will be af)184 108 R .194(fected by the)-.25 F F12.694 E F0 -.193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 +(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 180 Q +2.042(If a compound command or shell function e)184 198 R -.15(xe)-.15 G +2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 E F0 +2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 210 R +-.15(xe)-.15 G 1.436(cuted within the compound command or function).15 F +.194(body will be af)184 222 R .194(fected by the)-.25 F F12.694 E +F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 120 R 3.39(ac)3.39 G .89 +-.1 E 3.39(status. If)184 234 R 3.39(ac)3.39 G .89 (ompound command or shell function sets)-3.39 F F13.39 E F0 .89 (while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E -(where)184 132 Q F13.154 E F0 .654 +(where)184 246 Q F13.154 E F0 .654 (is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 -.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F -(or the command containing the function call completes.)184 144 Q F1 -144 156 Q F0(Disable pathname e)184 156 Q(xpansion.)-.15 E F1 -144 168 Q F0 2.238(Remember the location of commands as the)184 -168 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F +(or the command containing the function call completes.)184 258 Q F1 +144 270 Q F0(Disable pathname e)184 270 Q(xpansion.)-.15 E F1 +144 282 Q F0 2.238(Remember the location of commands as the)184 +282 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F -.15(xe)-.15 G 4.739(cution. This).15 F(is)4.739 E(enabled by def)184 -180 Q(ault.)-.1 E F1144 192 Q F0 .514(All ar)184 192 R .514 +294 Q(ault.)-.1 E F1144 306 Q F0 .514(All ar)184 306 R .514 (guments in the form of assignment statements are placed in the en)-.18 F .513(vironment for a)-.4 F -(command, not just those that precede the command name.)184 204 Q F1 -144 216 Q F0 .148(Monitor mode.)184 216 R .148 +(command, not just those that precede the command name.)184 318 Q F1 +144 330 Q F0 .148(Monitor mode.)184 330 R .148 (Job control is enabled.)5.148 F .149(This option is on by def)5.148 F .149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 -(on systems that support it \(see)184 228 R/F2 9/Times-Bold@0 SF .651 -(JOB CONTR)3.151 F(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151 -(\). All).15 F .65(processes run in a separate)3.151 F .678 -(process group.)184 240 R .679(When a background job completes, the she\ -ll prints a line containing its)5.678 F -.15(ex)184 252 S(it status.).15 -E F1144 264 Q F0 .653(Read commands b)184 264 R .653(ut do not e) --.2 F -.15(xe)-.15 G .653(cute them.).15 F .652 -(This may be used to check a shell script for)5.653 F(syntax errors.)184 -276 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1144 288 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) -184 300 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E -(wing:)-.25 E F1(allexport)184 312 Q F0(Same as)224 324 Q F12.5 E -F0(.)A F1(braceexpand)184 336 Q F0(Same as)224 348 Q F12.5 E F0(.) -A F1(emacs)184 360 Q F0 .089 -(Use an emacs-style command line editing interf)224 360 R 2.589 +(on systems that support it \(see)184 342 R F2 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 +(processes run in a separate)3.151 F .678(process group.)184 354 R .679 +(When a background job completes, the shell prints a line containing it\ +s)5.678 F -.15(ex)184 366 S(it status.).15 E F1144 378 Q F0 .653 +(Read commands b)184 378 R .653(ut do not e)-.2 F -.15(xe)-.15 G .653 +(cute them.).15 F .652(This may be used to check a shell script for) +5.653 F(syntax errors.)184 390 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F1144 402 Q/F3 10/Times-Italic@0 SF +(option\255name)2.5 E F0(The)184 414 Q F3(option\255name)2.5 E F0 +(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 426 Q F0 +(Same as)224 438 Q F12.5 E F0(.)A F1(braceexpand)184 450 Q F0 +(Same as)224 462 Q F12.5 E F0(.)A F1(emacs)184 474 Q F0 .089 +(Use an emacs-style command line editing interf)224 474 R 2.589 (ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 -(when the shell is interacti)224 372 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(when the shell is interacti)224 486 R -.15(ve)-.25 G 3.45(,u).15 G .95 (nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E -F0 2.5(option. This)224 384 R(also af)2.5 E(fects the editing interf) +F0 2.5(option. This)224 498 R(also af)2.5 E(fects the editing interf) -.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) -184 396 Q(exit)-.18 E F0(Same as)224 396 Q F12.5 E F0(.)A F1 -(errtrace)184 408 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 -(functrace)184 420 Q F0(Same as)224 432 Q F12.5 E F0(.)A F1 -(hashall)184 444 Q F0(Same as)224 444 Q F12.5 E F0(.)A F1 -(histexpand)184 456 Q F0(Same as)224 468 Q F12.5 E F0(.)A F1 -(history)184 480 Q F0 .586(Enable command history)224 480 R 3.087(,a) +184 510 Q(exit)-.18 E F0(Same as)224 510 Q F12.5 E F0(.)A F1 +(errtrace)184 522 Q F0(Same as)224 522 Q F12.5 E F0(.)A F1 +(functrace)184 534 Q F0(Same as)224 546 Q F12.5 E F0(.)A F1 +(hashall)184 558 Q F0(Same as)224 558 Q F12.5 E F0(.)A F1 +(histexpand)184 570 Q F0(Same as)224 582 Q F12.5 E F0(.)A F1 +(history)184 594 Q F0 .586(Enable command history)224 594 R 3.087(,a) -.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF -(.)A F0 .587(This option is)5.087 F(on by def)224 492 Q +(.)A F0 .587(This option is)5.087 F(on by def)224 606 Q (ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -504 Q(eeof)-.18 E F0 1.657(The ef)224 516 R 1.657 +618 Q(eeof)-.18 E F0 1.657(The ef)224 630 R 1.657 (fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10) 4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -528 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) -.15 E F1 -.1(ke)184 540 S(yw).1 E(ord)-.1 E F0(Same as)224 552 Q F1 -2.5 E F0(.)A F1(monitor)184 564 Q F0(Same as)224 564 Q F12.5 -E F0(.)A F1(noclob)184 576 Q(ber)-.1 E F0(Same as)224 588 Q F12.5 -E F0(.)A F1(noexec)184 600 Q F0(Same as)224 600 Q F12.5 E F0(.)A -F1(noglob)184 612 Q F0(Same as)224 612 Q F12.5 E F0(.)A F1(nolog) -184 624 Q F0(Currently ignored.)224 624 Q F1(notify)184 636 Q F0 -(Same as)224 636 Q F12.5 E F0(.)A F1(nounset)184 648 Q F0(Same as) -224 648 Q F12.5 E F0(.)A F1(onecmd)184 660 Q F0(Same as)224 660 Q -F12.5 E F0(.)A F1(ph)184 672 Q(ysical)-.15 E F0(Same as)224 672 Q -F12.5 E F0(.)A F1(pipefail)184 684 Q F0 1.029 -(If set, the return v)224 684 R 1.029(alue of a pipeline is the v)-.25 F -1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 696 -R 1.136 -(xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 708 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(70)193.45 E 0 Cg EP +642 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F1 -.1(ke)184 654 S(yw).1 E(ord)-.1 E F0(Same as)224 666 Q F1 +2.5 E F0(.)A F1(monitor)184 678 Q F0(Same as)224 678 Q F12.5 +E F0(.)A F1(noclob)184 690 Q(ber)-.1 E F0(Same as)224 702 Q F12.5 +E F0(.)A F1(noexec)184 714 Q F0(Same as)224 714 Q F12.5 E F0(.)A +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(70)194.555 E 0 Cg EP %%Page: 71 71 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(posix)184 84 Q F0 2.09(Change the beha)224 84 R 2.091(vior of)-.2 F -F1(bash)4.591 E F0 2.091(where the def)4.591 F 2.091(ault operation dif) --.1 F 2.091(fers from the)-.25 F 1.212 -(POSIX standard to match the standard \()224 96 R/F2 10/Times-Italic@0 -SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9/Times-Bold@0 SF 1.212 -(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 -(for a reference to a document that details ho)224 108 R 4.807(wp)-.25 G +SF(noglob)184 84 Q F0(Same as)224 84 Q F12.5 E F0(.)A F1(nolog)184 +96 Q F0(Currently ignored.)224 96 Q F1(notify)184 108 Q F0(Same as)224 +108 Q F12.5 E F0(.)A F1(nounset)184 120 Q F0(Same as)224 120 Q F1 +2.5 E F0(.)A F1(onecmd)184 132 Q F0(Same as)224 132 Q F12.5 +E F0(.)A F1(ph)184 144 Q(ysical)-.15 E F0(Same as)224 144 Q F12.5 +E F0(.)A F1(pipefail)184 156 Q F0 1.029(If set, the return v)224 156 R +1.029(alue of a pipeline is the v)-.25 F 1.03 +(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 168 R +1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F -.15(ex)224 180 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 192 Q F0 +2.09(Change the beha)224 192 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 +(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 +204 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9 +/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 +(for a reference to a document that details ho)224 216 R 4.807(wp)-.25 G 2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224 -120 Q(vior)-.2 E(.)-.55 E F1(pri)184 132 Q(vileged)-.1 E F0(Same as)224 -144 Q F12.5 E F0(.)A F1 -.1(ve)184 156 S(rbose).1 E F0(Same as)224 -156 Q F12.5 E F0(.)A F1(vi)184 168 Q F0 1.466 -(Use a vi-style command line editing interf)224 168 R 3.965(ace. This) +228 Q(vior)-.2 E(.)-.55 E F1(pri)184 240 Q(vileged)-.1 E F0(Same as)224 +252 Q F12.5 E F0(.)A F1 -.1(ve)184 264 S(rbose).1 E F0(Same as)224 +264 Q F12.5 E F0(.)A F1(vi)184 276 Q F0 1.466 +(Use a vi-style command line editing interf)224 276 R 3.965(ace. This) -.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 -180 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 -(xtrace)184 192 Q F0(Same as)224 192 Q F12.5 E F0(.)A(If)184 210 Q +288 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 300 Q F0(Same as)224 300 Q F12.5 E F0(.)A(If)184 318 Q F13.052 E F0 .552(is supplied with no)3.052 F F2(option\255name) 3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553 (alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184 -222 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0 +330 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0 3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071 (commands to recreate the current)3.571 F -(option settings is displayed on the standard output.)184 234 Q F1 -144 246 Q F0 -.45(Tu)184 246 S 1.071(rn on).45 F F2(privile)4.821 E -.1 +(option settings is displayed on the standard output.)184 342 Q F1 +144 354 Q F0 -.45(Tu)184 354 S 1.071(rn on).45 F F2(privile)4.821 E -.1 (ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.072 (\214les are not pro-)3.322 F 1.501 -(cessed, shell functions are not inherited from the en)184 258 R 1.5 +(cessed, shell functions are not inherited from the en)184 366 R 1.5 (vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 --.27(BA)184 270 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) +-.27(BA)184 378 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) .855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F -(vironment,)-.4 E .38(are ignored.)184 282 R .38 +(vironment,)-.4 E .38(are ignored.)184 390 R .38 (If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) -.25 H .379(ser \(group\) id not equal to the real).15 F .461 -(user \(group\) id, and the)184 294 R F12.961 E F0 .461 +(user \(group\) id, and the)184 402 R F12.961 E F0 .461 (option is not supplied, these actions are tak)2.961 F .462 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 306 Q .695 -.15(ve u)-.25 H .395 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 414 Q .695 -.15(ve u)-.25 H .395 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .386(user id is not reset.)184 318 R -.45(Tu)5.386 G +E -.15(ve)-.25 G .386(user id is not reset.)184 426 R -.45(Tu)5.386 G .386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F -(set to the real user and group ids.)184 330 Q F1144 342 Q F0 -(Exit after reading and e)184 342 Q -.15(xe)-.15 G(cuting one command.) -.15 E F1144 354 Q F0 -.35(Tr)184 354 S .044(eat unset v).35 F .044 +(set to the real user and group ids.)184 438 Q F1144 450 Q F0 +(Exit after reading and e)184 450 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 462 Q F0 -.35(Tr)184 462 S .044(eat unset v).35 F .044 (ariables and parameters other than the special parameters "@" and "*" \ -as an)-.25 F .182(error when performing parameter e)184 366 R 2.682 +as an)-.25 F .182(error when performing parameter e)184 474 R 2.682 (xpansion. If)-.15 F -.15(ex)2.682 G .183 (pansion is attempted on an unset v).15 F(ari-)-.25 E .746 -(able or parameter)184 378 R 3.246(,t)-.4 G .746 +(able or parameter)184 486 R 3.246(,t)-.4 G .746 (he shell prints an error message, and, if not interacti)-3.246 F -.15 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -390 Q F1144 402 Q F0(Print shell input lines as the)184 402 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 414 Q F0 .315(After e)184 414 R +498 Q F1144 510 Q F0(Print shell input lines as the)184 510 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 522 Q F0 .315(After e)184 522 R .315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 (fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,) 2.815 E F1(select)2.815 E F0(command,)2.815 E 1.236(or arithmetic)184 -426 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F +534 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F 1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 -(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 438 Q +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 546 Q (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 450 Q F0 2.578(The shell performs brace e)184 450 R 2.578 +144 558 Q F0 2.578(The shell performs brace e)184 558 R 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 462 Q -(ault.)-.1 E F1144 474 Q F0 .214(If set,)184 474 R F1(bash)2.714 E +-.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 570 Q +(ault.)-.1 E F1144 582 Q F0 .214(If set,)184 582 R F1(bash)2.714 E F0 .214(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F -3.053(tors. This)184 486 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +3.053(tors. This)184 594 R .553(may be o)3.053 F -.15(ve)-.15 G .553 (rridden when creating output \214les by using the redirection opera-) -.15 F(tor)184 498 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 510 Q F0 .104(If set, an)184 510 R 2.604(yt)-.15 G .104 +.15 F(tor)184 606 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 618 Q F0 .104(If set, an)184 618 R 2.604(yt)-.15 G .104 (rap on)-2.604 F F1(ERR)2.604 E F0 .103 (is inherited by shell functions, command substitutions, and com-)2.604 -F .838(mands e)184 522 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F .838(mands e)184 630 R -.15(xe)-.15 G .838(cuted in a subshell en).15 F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 -(trap is normally not inherited in)3.339 F(such cases.)184 534 Q F1 -144 546 Q F0(Enable)184 546 Q F1(!)3.032 E F0 .532 +(trap is normally not inherited in)3.339 F(such cases.)184 642 Q F1 +144 654 Q F0(Enable)184 654 Q F1(!)3.032 E F0 .532 (style history substitution.)5.532 F .531(This option is on by def)5.532 -F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 558 Q -.15 -(ve)-.25 G(.).15 E F1144 570 Q F0 .959 -(If set, the shell does not resolv)184 570 R 3.459(es)-.15 G .959 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 666 Q -.15 +(ve)-.25 G(.).15 E F1144 678 Q F0 .959 +(If set, the shell does not resolv)184 678 R 3.459(es)-.15 G .959 (ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 (cuting commands such as).15 F F1(cd)3.46 E F0 2.822 -(that change the current w)184 582 R 2.822(orking directory)-.1 F 7.822 +(that change the current w)184 690 R 2.822(orking directory)-.1 F 7.822 (.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.821 -(ysical directory structure)-.05 F 2.685(instead. By)184 594 R(def)2.685 +(ysical directory structure)-.05 F 2.685(instead. By)184 702 R(def)2.685 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 606 Q(.)-.65 E F1144 -618 Q F0 .89(If set, an)184 618 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 -(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 +(mands which change the current directory)184 714 Q(.)-.65 E +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(71)194.555 E 0 Cg EP +%%Page: 72 72 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0 .89(If set, an)184 84 R 3.39(yt)-.15 G .89(raps on) +-3.39 F F1(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 (are inherited by shell functions, command)3.39 F 1.932 -(substitutions, and commands e)184 630 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 96 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 642 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 654 Q -F0 .401(If no ar)184 654 R .401(guments follo)-.18 F 2.901(wt)-.25 G +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 108 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 120 Q +F0 .401(If no ar)184 120 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401(his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.4 E(the positional parameters are set to the)184 666 Q F2 -(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G -(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -678 Q F0 1.944(Signal the end of options, cause all remaining)184 678 R -F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G -1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 690 R -F13.446 E F0(and)3.446 E F13.446 E F0 .945 +(Otherwise,)5.4 E(the positional parameters are set to the)184 132 Q/F2 +10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni) +.15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E +F0(.)A F1144 144 Q F0 1.944 +(Signal the end of options, cause all remaining)184 144 R F2(ar)4.444 E +(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G 1.945 +(ssigned to the positional)-4.445 F 3.446(parameters. The)184 156 R F1 +3.446 E F0(and)3.446 E F13.446 E F0 .945 (options are turned of)3.446 F 3.445(f. If)-.25 F .945(there are no) 3.445 F F2(ar)3.445 E(g)-.37 E F0 .945(s, the positional)B -(parameters remain unchanged.)184 702 Q .425(The options are of)144 -718.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(parameters remain unchanged.)184 168 Q .425(The options are of)144 +184.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 (Using + rather than \255 causes these options)5.425 F .178 -(to be turned of)144 730.8 R 2.678(f. The)-.25 F .178 +(to be turned of)144 196.8 R 2.678(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) --.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(71)193.45 E 0 Cg EP -%%Page: 72 72 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .066 -(current set of options may be found in)144 84 R/F1 10/Times-Bold@0 SF -<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa) --.1 G .066(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F -(is encountered.)144 96 Q F1(shift)108 112.8 Q F0([)2.5 E/F2 10 -/Times-Italic@0 SF(n)A F0(])A .429(The positional parameters from)144 -124.8 R F2(n)2.929 E F0 .429(+1 ... are renamed to)B F1 .429($1 ....) -2.929 F F0 -.15(Pa)5.428 G .428(rameters represented by the num-).15 F -(bers)144 136.8 Q F1($#)2.582 E F0(do)2.582 E .082(wn to)-.25 F F1($#) -2.582 E F0A F2(n)A F0 .082(+1 are unset.)B F2(n)5.442 E F0 .082 -(must be a non-ne)2.822 F -.05(ga)-.15 G(ti).05 E .383 -.15(ve n)-.25 H -.083(umber less than or equal to).15 F F1($#)2.583 E F0 5.083(.I)C(f) --5.083 E F2(n)2.943 E F0 .06(is 0, no parameters are changed.)144 148.8 -R(If)5.06 E F2(n)2.92 E F0 .06(is not gi)2.8 F -.15(ve)-.25 G .06 -(n, it is assumed to be 1.).15 F(If)5.06 E F2(n)2.92 E F0 .06 -(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t)C(he)-2.56 E .143 -(positional parameters are not changed.)144 160.8 R .144 -(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 .144 -(is greater than)2.884 F F1($#)2.644 E F0 -(or less than zero; otherwise 0.)144 172.8 Q F1(shopt)108 189.6 Q F0([) +-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 +(current set of options may be found in)144 208.8 R F1<24ad>2.566 E F0 +5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 +(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F +(is encountered.)144 220.8 Q F1(shift)108 237.6 Q F0([)2.5 E F2(n)A F0 +(])A .429(The positional parameters from)144 249.6 R F2(n)2.929 E F0 +.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G +.428(rameters represented by the num-).15 F(bers)144 261.6 Q F1($#)2.582 +E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0A F2(n)A F0 .082 +(+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga) +-.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to) +.15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06 +(is 0, no parameters are changed.)144 273.6 R(If)5.06 E F2(n)2.92 E F0 +.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F +(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 +(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 285.6 R +.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 +.144(is greater than)2.884 F F1($#)2.644 E F0 +(or less than zero; otherwise 0.)144 297.6 Q F1(shopt)108 314.4 Q F0([) 2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 201.6 S .64(ggle the v).8 F .639 +-2.5 E F0(...])2.5 E -.8(To)144 326.4 S .64(ggle the v).8 F .639 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E 5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 -(listed belo)144 213.6 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +(listed belo)144 338.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H 2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 -(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 225.6 R .826 +(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 350.4 R .826 (ith no options, or with the)-.4 F F13.326 E F0 .825 (option, a list of all settable options is displayed, with an)3.326 F -.551(indication of whether or not each is set; if)144 237.6 R F2 +.551(indication of whether or not each is set; if)144 362.4 R F2 (optnames)3.052 E F0 .552 (are supplied, the output is restricted to those)3.052 F 2.55 -(options. The)144 249.6 R F12.55 E F0 .049(option causes output t\ +(options. The)144 374.4 R F12.55 E F0 .049(option causes output t\ o be displayed in a form that may be reused as input.)2.55 F(Other)5.049 -E(options ha)144 261.6 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 273.6 Q F0(Enable \(set\) each)180 -273.6 Q F2(optname)2.5 E F0(.)A F1144 285.6 Q F0 -(Disable \(unset\) each)180 285.6 Q F2(optname)2.5 E F0(.)A F1144 -297.6 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ -tus indicates whether the)180 297.6 R F2(optname)2.504 E F0(is)2.504 E -.256(set or unset.)180 309.6 R .256(If multiple)5.256 F F2(optname)2.756 +E(options ha)144 386.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 398.4 Q F0(Enable \(set\) each)180 +398.4 Q F2(optname)2.5 E F0(.)A F1144 410.4 Q F0 +(Disable \(unset\) each)180 410.4 Q F2(optname)2.5 E F0(.)A F1144 +422.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 422.4 R F2(optname)2.504 E F0(is)2.504 E +.256(set or unset.)180 434.4 R .256(If multiple)5.256 F F2(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G (ith)-2.756 E F12.756 E F0 2.755(,t)C .255 -(he return status is zero if)-2.755 F(all)180 321.6 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E F1144 333.6 Q F0 -(Restricts the v)180 333.6 Q(alues of)-.25 E F2(optname)2.5 E F0 +(he return status is zero if)-2.755 F(all)180 446.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 458.4 Q F0 +(Restricts the v)180 458.4 Q(alues of)-.25 E F2(optname)2.5 E F0 (to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 -E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 350.4 R F1 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 475.2 R F1 3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) 3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.234 -(set or unset, respecti)144 362.4 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +(set or unset, respecti)144 487.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U) -.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 -2.234(options are disabled \(unset\) by)4.734 F(def)144 374.4 Q(ault.) +2.234(options are disabled \(unset\) by)4.734 F(def)144 499.2 Q(ault.) -.1 E 1.544(The return status when listing options is zero if all)144 -391.2 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) +516 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) 4.045 F .696 (When setting or unsetting options, the return status is zero unless an) -144 403.2 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 -(alid shell)-.25 F(option.)144 415.2 Q(The list of)144 432 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(assoc_expand_once)144 450 Q F0 1.944 -(If set, the shell suppresses multiple e)184 462 R -.25(va)-.25 G 1.945 -(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 -(rray subscripts during).15 F .857(arithmetic e)184 474 R .857 +144 528 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell) +-.25 F(option.)144 540 Q(The list of)144 556.8 Q F1(shopt)2.5 E F0 +(options is:)2.5 E F1(assoc_expand_once)144 574.8 Q F0 1.944 +(If set, the shell suppresses multiple e)184 586.8 R -.25(va)-.25 G +1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 +(rray subscripts during).15 F .857(arithmetic e)184 598.8 R .857 (xpression e)-.15 F -.25(va)-.25 G .857(luation and while e).25 F -.15 (xe)-.15 G .857(cuting b).15 F .857(uiltins that can perform v)-.2 F -(ariable)-.25 E(assignments.)184 486 Q F1(autocd)144 498 Q F0 .199 -(If set, a command name that is the name of a directory is e)184 498 R +(ariable)-.25 E(assignments.)184 610.8 Q F1(autocd)144 622.8 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 622.8 R -.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 510 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(ment to the)184 634.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 522 Q(ars)-.1 E F0 .156(If set, an ar)184 534 R .156 +F1(cdable_v)144 646.8 Q(ars)-.1 E F0 .156(If set, an ar)184 658.8 R .156 (gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 546 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 558 Q F0 +(name of a v)184 670.8 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 682.8 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a)184 -558 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 -(corrected. The)184 570 R 1.488(errors check)3.988 F 1.487 +682.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 694.8 R 1.488(errors check)3.988 F 1.487 (ed for are transposed characters, a missing character)-.1 F 3.987(,a) --.4 G(nd)-3.987 E .77(one character too man)184 582 R 4.57 -.65(y. I) +-.4 G(nd)-3.987 E .77(one character too man)184 706.8 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 594 Q(This option is only used by interacti)5 -E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 606 Q F0 .737 -(If set,)184 618 R F1(bash)3.237 E F0 .736 +(the command proceeds.)184 718.8 Q +(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) +.15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(72)194.555 E 0 Cg EP +%%Page: 73 73 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(checkhash)144 84 Q F0 .737(If set,)184 96 R F1(bash)3.237 E F0 .736 (checks that a command found in the hash table e)3.237 F .736 -(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 630 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 108 Q(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 642 Q -F0 .448(If set,)184 654 R F1(bash)2.948 E F0 .448 +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 120 Q +F0 .448(If set,)184 132 R F1(bash)2.948 E F0 .448 (lists the status of an)2.948 F 2.949(ys)-.15 G .449 (topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.439(shell. If)184 666 R(an)3.439 E 3.439(yj)-.15 G +F -.15(ve)-.25 G 3.439(shell. If)184 144 R(an)3.439 E 3.439(yj)-.15 G .938(obs are running, this causes the e)-3.439 F .938 (xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 2.203 -(attempted without an interv)184 678 R 2.203(ening command \(see)-.15 F -/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 690 Q -.1(wa)-.1 +(attempted without an interv)184 156 R 2.203(ening command \(see)-.15 F +/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 168 Q -.1(wa)-.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F1(checkwinsize)144 702 Q F0 1.09(If set,)184 -714 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 +(obs are stopped.)-2.5 E F1(checkwinsize)144 180 Q F0 1.09(If set,)184 +192 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 (ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 -(uiltin\) command and, if)-.2 F(necessary)184 726 Q 2.5(,u)-.65 G -(pdates the v)-2.5 E(alues of)-.25 E F3(LINES)2.5 E F0(and)2.25 E F3 -(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F0(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(72)193.45 E 0 Cg EP -%%Page: 73 73 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(cmdhist)144 84 Q F0 1.202(If set,)184 84 R F1(bash)3.702 E F0 1.202 -(attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 +(uiltin\) command and, if)-.2 F(necessary)184 204 Q 2.5(,u)-.65 G +(pdates the v)-2.5 E(alues of)-.25 E F2(LINES)2.5 E F0(and)2.25 E F2 +(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF(.)A F1(cmdhist)144 216 Q F0 1.202 +(If set,)184 216 R F1(bash)3.702 E F0 1.202(attempts to sa)3.702 F 1.502 +-.15(ve a)-.2 H 1.202 (ll lines of a multiple-line command in the same history).15 F(entry)184 -96 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133 +228 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133 (ws easy re-editing of multi-line commands.)-.25 F 1.132 -(This option is enabled by)6.132 F(def)184 108 Q .613(ault, b)-.1 F .613 +(This option is enabled by)6.132 F(def)184 240 Q .613(ault, b)-.1 F .613 (ut only has an ef)-.2 F .614 (fect if command history is enabled, as described abo)-.25 F .914 -.15 -(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(HIST)184 120 Q(OR)-.162 E -(Y)-.315 E/F3 9/Times-Roman@0 SF(.)A F1(compat31)144 132 Q F0 .42 -(If set,)184 144 R F1(bash)2.92 E F0 .42(changes its beha)2.92 F .419 -(vior to that of v)-.2 F .419(ersion 3.1 with respect to quoted ar)-.15 -F(guments)-.18 E .461(to the)184 156 R F1([[)2.961 E F0 .462 -(conditional command')2.962 F(s)-.55 E F1(=~)2.962 E F0 .462 +(ve u)-.15 H(nder).15 E F2(HIST)184 252 Q(OR)-.162 E(Y)-.315 E F3(.)A F1 +(compat31)144 264 Q F0 .42(If set,)184 276 R F1(bash)2.92 E F0 .42 +(changes its beha)2.92 F .419(vior to that of v)-.2 F .419 +(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .461(to the) +184 288 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1 +(=~)2.962 E F0 .462 (operator and locale-speci\214c string comparison when)2.962 F .71 -(using the)184 168 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) +(using the)184 300 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) -.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) 3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82 -(use ASCII collation and)184 180 R/F4 10/Times-Italic@0 SF(str)3.321 E +(use ASCII collation and)184 312 R/F4 10/Times-Italic@0 SF(str)3.321 E (cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale') -.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 192 Q F4(str) -2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 204 Q F0 1.41(If set,) -184 216 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 +.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 324 Q F4(str) +2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 336 Q F0 1.41(If set,) +184 348 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 (vior to that of v)-.2 F 1.409 (ersion 3.2 with respect to locale-speci\214c)-.15 F .422 -(string comparison when using the)184 228 R F1([[)2.922 E F0 .422 +(string comparison when using the)184 360 R F1([[)2.922 E F0 .422 (conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) 2.923 E F0 .423(operators \(see pre-)2.923 F .481 -(vious item\) and the ef)184 240 R .481 +(vious item\) and the ef)184 372 R .481 (fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48 -(ersions 3.2 and earlier)-.15 F(continue with the ne)184 252 Q +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 384 Q (xt command in the list after one terminates due to an interrupt.)-.15 E -F1(compat40)144 264 Q F0 1.409(If set,)184 276 R F1(bash)3.909 E F0 +F1(compat40)144 396 Q F0 1.409(If set,)184 408 R F1(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 (ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 -(string comparison when using the)184 288 R F1([[)4.508 E F0 2.007 +(string comparison when using the)184 420 R F1([[)4.508 E F0 2.007 (conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>) -4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 300 R +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 432 R F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 (fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) -.15 E .087(4.0 and later interrupt the list as if the shell recei)184 -312 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 -(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 324 Q -(xt command in the list.)-.15 E F1(compat41)144 336 Q F0 1.483(If set,) -184 348 R F1(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F4(posix) -3.983 E F0 1.484 -(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 -(ex)184 360 S .959(pansion as a special character).15 F 5.959(.T)-.55 G -.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 -(nn).15 G .958(umber\) and)-3.458 F .59 -(the characters between the single quotes are considered quoted.)184 372 +444 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 456 Q +(xt command in the list.)-.15 E F1(compat41)144 468 Q F0 1.523(If set,) +184 480 R F1(bash)4.023 E F0 4.023(,w)C 1.523(hen in)-4.023 F F4 1.523 +(posix mode)4.023 F F0 4.024(,t)C 1.524 +(reats a single quote in a double-quoted parameter)-4.024 F -.15(ex)184 +492 S .959(pansion as a special character).15 F 5.959(.T)-.55 G .958 +(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458(nn).15 +G .958(umber\) and)-3.458 F .59 +(the characters between the single quotes are considered quoted.)184 504 R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 -(posix mode through v)184 384 R .589(ersion 4.1.)-.15 F .589(The def) +(posix mode through v)184 516 R .589(ersion 4.1.)-.15 F .589(The def) 5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 396 Q F1(compat42)144 408 Q -F0 1.796(If set,)184 420 R F1(bash)4.296 E F0 1.796 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 528 Q F1(compat42)144 540 Q +F0 1.796(If set,)184 552 R F1(bash)4.296 E F0 1.796 (does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 432 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(compat43)144 444 Q F0 .141(If set,)184 456 R F1 +4.296 F(ord)-.1 E -.15(ex)184 564 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F1(compat43)144 576 Q F0 .141(If set,)184 588 R F1 (bash)2.641 E F0 .141(does not print a w)2.641 F .14 (arning message if an attempt is made to use a quoted com-)-.1 F .912 -(pound array assignment as an ar)184 468 R .912(gument to)-.18 F F1 +(pound array assignment as an ar)184 600 R .912(gument to)-.18 F F1 (declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913 -(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 480 S .353 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 612 S .353 (tal errors that cause the current command to f).1 F .353(ail \(the def) -.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem) --2.852 E -.1(fa)184 492 S 1.057(tal errors that cause the shell to e).1 +-2.852 E -.1(fa)184 624 S 1.057(tal errors that cause the shell to e).1 F 1.058(xit\), and does not reset the loop state when a shell)-.15 F -.375(function is e)184 504 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +.375(function is e)184 636 R -.15(xe)-.15 G .375(cuted \(this allo).15 F (ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 .374(in a shell function to af)2.875 F .374(fect loops in)-.25 F -(the caller')184 516 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 -(compat44)144 528 Q F0 .441(If set,)184 540 R F1(bash)2.941 E F0(sa) +(the caller')184 648 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 +(compat44)144 660 Q F0 .441(If set,)184 672 R F1(bash)2.941 E F0(sa) 2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B) -2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184 -552 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G +684 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G (rdless of whether or not e).05 E(xtended deb)-.15 E -(ugging mode is enabled.)-.2 E F1(complete_fullquote)144 564 Q F0 .654 -(If set,)184 576 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\ +(ugging mode is enabled.)-.2 E F1(complete_fullquote)144 696 Q F0 .654 +(If set,)184 708 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\ ers in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524 -(forming completion.)184 588 R 1.524(If not set,)6.524 F F1(bash)4.024 E +(forming completion.)184 720 R 1.524(If not set,)6.524 F F1(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 -(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ -haracters that will be quoted in completed \214lenames when these)184 -600 R .028(metacharacters appear in shell v)184 612 R .028 +(etacharacters such as the dollar sign)-4.024 F(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(73)194.555 E 0 Cg EP +%%Page: 74 74 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.667(from the se\ +t of characters that will be quoted in completed \214lenames when these) +184 84 R .028(metacharacters appear in shell v)184 96 R .028 (ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 -(This means)5.029 F 1.073(that dollar signs in v)184 624 R 1.073 +(This means)5.029 F 1.073(that dollar signs in v)184 108 R 1.073 (ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 636 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ev e)184 120 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F 6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -648 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 660 Q +132 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 144 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F1(dir)144 672 Q(expand)-.18 E F0 .486 -(If set,)184 684 R F1(bash)2.986 E F0 .486 +(ersions through 4.2.)-.15 E/F1 10/Times-Bold@0 SF(dir)144 156 Q(expand) +-.18 E F0 .486(If set,)184 168 R F1(bash)2.986 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F .487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -696 R .179(This changes the contents of the readline editing b)5.18 F +180 R .179(This changes the contents of the readline editing b)5.18 F (uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) -184 708 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(73)193.45 E 0 Cg EP -%%Page: 74 74 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(dirspell)144 84 Q F0 .858(If set,)184 84 R F1(bash)3.358 E F0 .858 +184 192 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 204 Q F0 .858(If set,)184 +204 R F1(bash)3.358 E F0 .858 (attempts spelling correction on directory names during w)3.358 F .859 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 96 Q(xist.)-.15 E -F1(dotglob)144 108 Q F0 .165(If set,)184 108 R F1(bash)2.665 E F0 .165 +(the directory name initially supplied does not e)184 216 Q(xist.)-.15 E +F1(dotglob)144 228 Q F0 .165(If set,)184 228 R F1(bash)2.665 E F0 .165 (includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) -.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F -(xpansion.)-.15 E(The \214lenames)184 120 Q F1 -.63(``)2.5 G -.55(.').63 +(xpansion.)-.15 E(The \214lenames)184 240 Q F1 -.63(``)2.5 G -.55(.').63 G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 (must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 (,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0 -(is set.)2.5 E F1(execfail)144 132 Q F0 1.386(If set, a non-interacti) -184 132 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386 +(is set.)2.5 E F1(execfail)144 252 Q F0 1.386(If set, a non-interacti) +184 252 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386 (xit if it cannot e)-.15 F -.15(xe)-.15 G 1.387 -(cute the \214le speci\214ed as an).15 F(ar)184 144 Q(gument to the)-.18 +(cute the \214le speci\214ed as an).15 F(ar)184 264 Q(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0 --.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 156 Q F0 .717 -(If set, aliases are e)184 168 R .717(xpanded as described abo)-.15 F +-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 276 Q F0 .717 +(If set, aliases are e)184 288 R .717(xpanded as described abo)-.15 F 1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E /F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F -(by def)184 180 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 192 Q(ug)-.2 E F0 .671(If set at shell in)184 204 R +(by def)184 300 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 312 Q(ug)-.2 E F0 .671(If set at shell in)184 324 R -.2(vo)-.4 G .671(cation, arrange to e).2 F -.15(xe)-.15 G .671 (cute the deb).15 F .672(ugger pro\214le before the shell starts,)-.2 F -.221(identical to the)184 216 R F12.721 E(ugger)-.2 E F0 +.221(identical to the)184 336 R F12.721 E(ugger)-.2 E F0 2.721(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221 -(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 228 Q -(uggers is enabled:)-.2 E F1(1.)184 240 Q F0(The)220 240 Q F14.25 +(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 348 Q +(uggers is enabled:)-.2 E F1(1.)184 360 Q F0(The)220 360 Q F14.25 E F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu) 4.251 G 1.751(iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 252 Q -(gument.)-.18 E F1(2.)184 264 Q F0 1.667(If the command run by the)220 -264 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 276 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 288 Q F0 .84 -(If the command run by the)220 288 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(number corresponding to each function name supplied as an ar)220 372 Q +(gument.)-.18 E F1(2.)184 384 Q F0 1.667(If the command run by the)220 +384 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 396 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 408 Q F0 .84 +(If the command run by the)220 408 R F1(DEB)3.34 E(UG)-.1 E F0 .841 (trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 -(exe)220 300 S .488 +(exe)220 420 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 312 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 432 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 324 Q F2 -.27(BA)220 324 S(SH_ARGC).27 E F0 +(n)-.15 E F0(.)A F1(4.)184 444 Q F2 -.27(BA)220 444 S(SH_ARGC).27 E F0 (and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 336 Q --.15(ve)-.15 G(.).15 E F1(5.)184 348 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 348 R -(shells in)220 360 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(are updated as described in their descriptions)3.154 F(abo)220 456 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 468 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 468 R +(shells in)220 480 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 (\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 (inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 -(traps.)2.5 E F1(6.)184 372 Q F0 1.082(Error tracing is enabled: comman\ -d substitution, shell functions, and subshells)220 372 R(in)220 384 Q +(traps.)2.5 E F1(6.)184 492 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 492 R(in)220 504 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4(command) 2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 -(extglob)144 396 Q F0 .4(If set, the e)184 396 R .4 +(extglob)144 516 Q F0 .4(If set, the e)184 516 R .4 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 408 Q -F0(are enabled.)2.5 E F1(extquote)144 420 Q F0 2.473(If set,)184 432 R +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 528 Q +F0(are enabled.)2.5 E F1(extquote)144 540 Q F0 2.473(If set,)184 552 R F1($)4.973 E F0<08>A F4(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 E F0(")A F4(string)A F0 4.973("q)C 2.473(uoting is performed within) -4.973 F F1(${)4.973 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 444 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 456 Q F0 -1.425(If set, patterns which f)184 456 R 1.425 +(pansions).15 E(enclosed in double quotes.)184 564 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 576 Q F0 +1.425(If set, patterns which f)184 576 R 1.425 (ail to match \214lenames during pathname e)-.1 F 1.424 -(xpansion result in an)-.15 F -.15(ex)184 468 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 480 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 492 R<8c78>-.25 E .936(es speci\214ed by the) +(xpansion result in an)-.15 F -.15(ex)184 588 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 612 R<8c78>-.25 E .936(es speci\214ed by the) -.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) --.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 504 R .32 +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 624 R .32 (ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 (he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 -(pletions. See)184 516 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(pletions. See)184 636 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 (abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 (FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def) -184 528 Q(ault.)-.1 E F1(globasciiranges)144 540 Q F0 2.519 -(If set, range e)184 552 R 2.519 +184 648 Q(ault.)-.1 E F1(globasciiranges)144 660 Q F0 2.519 +(If set, range e)184 672 R 2.519 (xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 (xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E -(Matching)184 564 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +(Matching)184 684 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) -3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 (nt)-3.214 G .714(he traditional C locale when performing comparisons.) --3.214 F 1.02(That is, the current locale')184 576 R 3.52(sc)-.55 G 1.02 +-3.214 F 1.02(That is, the current locale')184 696 R 3.52(sc)-.55 G 1.02 (ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 588 R F1(A) +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 708 R F1(A) 3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957 -(-case ASCII characters will collate)-.2 F(together)184 600 Q(.)-.55 E -F1(globstar)144 612 Q F0 .519(If set, the pattern)184 612 R F1(**)3.019 -E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 -(xt will match all \214les and zero)-.15 F .431 -(or more directories and subdirectories.)184 624 R .431 -(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 -2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 -636 Q F1(gnu_errfmt)144 648 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 660 Q F1(histappend)144 -672 Q F0 .676 -(If set, the history list is appended to the \214le named by the v)184 -684 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G -(ri-).25 E(able when the shell e)184 696 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(74)193.45 E 0 Cg EP +(-case ASCII characters will collate)-.2 F(together)184 720 Q(.)-.55 E +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(74)194.555 E 0 Cg EP %%Page: 75 75 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(histr)144 84 Q(eedit)-.18 E F0 .575(If set, and)184 96 R F1 -.18(re) +SF(globstar)144 84 Q F0 .519(If set, the pattern)184 84 R F1(**)3.019 E +F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 +(xt will match all \214les and zero)-.15 F .431 +(or more directories and subdirectories.)184 96 R .431 +(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 +2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 +108 Q F1(gnu_errfmt)144 120 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 132 Q F1(histappend)144 +144 Q F0 .676 +(If set, the history list is appended to the \214le named by the v)184 +156 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0 +-.25(va)2.926 G(ri-).25 E(able when the shell e)184 168 Q +(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1 +(histr)144 180 Q(eedit)-.18 E F0 .575(If set, and)184 192 R F1 -.18(re) 3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F -.15 (ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075 F -.576(ailed his-)-.1 F(tory substitution.)184 108 Q F1(histv)144 120 Q -(erify)-.1 E F0 .403(If set, and)184 132 R F1 -.18(re)2.903 G(adline).18 +.576(ailed his-)-.1 F(tory substitution.)184 204 Q F1(histv)144 216 Q +(erify)-.1 E F0 .403(If set, and)184 228 R F1 -.18(re)2.903 G(adline).18 E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .661(passed to the shell parser)184 144 R 5.661(.I)-.55 G .662 +2.903 F .661(passed to the shell parser)184 240 R 5.661(.I)-.55 G .662 (nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 -G(adline).18 E F0(editing)3.162 E -.2(bu)184 156 S -.25(ff).2 G(er).25 E +G(adline).18 E F0(editing)3.162 E -.2(bu)184 252 S -.25(ff).2 G(er).25 E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 168 Q F0 1.182(If set, and)184 180 R F1 -.18(re)3.682 +(hostcomplete)144 264 Q F0 1.182(If set, and)184 276 R F1 -.18(re)3.682 G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 (will attempt to perform hostname completion)3.681 F 1.38(when a w)184 -192 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +288 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 (is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E -/F2 9/Times-Bold@0 SF(READLINE)3.881 E F0(abo)184 204 Q -.15(ve)-.15 G -2.5(\). This).15 F(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 -216 Q F0(If set,)184 228 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP) -2.5 E F0(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H -(ogin shell e).15 E(xits.)-.15 E F1(inherit_err)144 240 Q(exit)-.18 E F0 -.22(If set, command substitution inherits the v)184 252 R .219 -(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219 -(option, instead of unsetting)2.719 F(it in the subshell en)184 264 Q -2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10 -/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) -144 276 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 288 R 2.83 -(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0 -.33(to cause that w)2.83 F .33(ord and all remaining characters on)-.1 F -.967(that line to be ignored in an interacti)184 300 R 1.267 -.15(ve s) --.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve) --.15 G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 -312 Q(ault.)-.1 E F1(lastpipe)144 324 Q F0 .066 -(If set, and job control is not acti)184 324 R -.15(ve)-.25 G 2.566(,t) +F2(READLINE)3.881 E F0(abo)184 300 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 312 Q F0(If set,) +184 324 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 +(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) +.15 E(xits.)-.15 E F1(inherit_err)144 336 Q(exit)-.18 E F0 .22 +(If set, command substitution inherits the v)184 348 R .219(alue of the) +-.25 F F1(err)2.719 E(exit)-.18 E F0 .219(option, instead of unsetting) +2.719 F(it in the subshell en)184 360 Q 2.5(vironment. This)-.4 F +(option is enabled when)2.5 E/F3 10/Times-Italic@0 SF(posix mode)2.5 E +F0(is enabled.)2.5 E F1(interacti)144 372 Q -.1(ve)-.1 G(_comments).1 E +F0 .33(If set, allo)184 384 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 +(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 +(ord and all remaining characters on)-.1 F .967 +(that line to be ignored in an interacti)184 396 R 1.267 -.15(ve s)-.25 +H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 +G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 408 Q +(ault.)-.1 E F1(lastpipe)144 420 Q F0 .066 +(If set, and job control is not acti)184 420 R -.15(ve)-.25 G 2.566(,t) .15 G .066(he shell runs the last command of a pipeline not e)-2.566 F -.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) -184 336 Q(vironment.)-.4 E F1(lithist)144 348 Q F0 .655(If set, and the) -184 348 R F1(cmdhist)3.155 E F0 .654 +184 432 Q(vironment.)-.4 E F1(lithist)144 444 Q F0 .655(If set, and the) +184 444 R F1(cmdhist)3.155 E F0 .654 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F -(with embedded ne)184 360 Q +(with embedded ne)184 456 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(localv)144 372 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 384 R +(localv)144 468 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 480 R .422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 (utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 -396 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 +492 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 (yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173 -(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 408 Q -F1(login_shell)144 420 Q F0 .486 +(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 504 Q +F1(login_shell)144 516 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -432 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) --.15 G 2.987(\). The).15 F -.25(va)184 444 S(lue may not be changed.).25 -E F1(mailwar)144 456 Q(n)-.15 E F0 .815(If set, and a \214le that)184 -468 R F1(bash)3.315 E F0 .814 +528 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) +-.15 G 2.987(\). The).15 F -.25(va)184 540 S(lue may not be changed.).25 +E F1(mailwar)144 552 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +564 R F1(bash)3.315 E F0 .814 (is checking for mail has been accessed since the last time it)3.315 F --.1(wa)184 480 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +-.1(wa)184 576 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E (`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) --.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 492 -Q F0 .324(If set, and)184 504 R F1 -.18(re)2.824 G(adline).18 E F0 .324 +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 588 +Q F0 .324(If set, and)184 600 R F1 -.18(re)2.824 G(adline).18 E F0 .324 (is being used,)2.824 F F1(bash)2.824 E F0 .324 (will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH)-.189 E F0 .325(for possible)2.575 F -(completions when completion is attempted on an empty line.)184 516 Q F1 -(nocaseglob)144 528 Q F0 .437(If set,)184 540 R F1(bash)2.937 E F0 .436 +(completions when completion is attempted on an empty line.)184 612 Q F1 +(nocaseglob)144 624 Q F0 .437(If set,)184 636 R F1(bash)2.937 E F0 .436 (matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 -H .436(ashion when performing pathname).05 F -.15(ex)184 552 S +H .436(ashion when performing pathname).05 F -.15(ex)184 648 S (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1(nocasematch)144 564 Q F0 1.193(If set,)184 -576 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 660 Q F0 1.193(If set,)184 +672 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) 3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 -F .551(while e)184 588 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +F .551(while e)184 684 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 (or)3.051 E F1([[)3.051 E F0 .551 (conditional commands, when performing pattern substitution)3.051 F -.1 -(wo)184 600 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ -le completions as part of programmable com-)-.15 F(pletion.)184 612 Q F1 -(nullglob)144 624 Q F0 .855(If set,)184 636 R F1(bash)3.355 E F0(allo) -3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) -3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 -(\)t).15 G(o)-3.354 E -.15(ex)184 648 S -(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -660 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 -672 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 -(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E -(are enabled.)184 684 Q(This option is enabled by def)5 E(ault.)-.1 E F1 -(pr)144 696 Q(omptv)-.18 E(ars)-.1 E F0 1.448 -(If set, prompt strings under)184 708 R 1.448(go parameter e)-.18 F -1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 720 -S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 -(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.671 E -(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E(GNU Bash 5.0)72 -768 Q(2018 March 15)144.29 E(75)193.45 E 0 Cg EP +(wo)184 696 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 708 Q +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(75)194.555 E 0 Cg EP %%Page: 76 76 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(This option is enabled by def)184 84 Q(ault.)-.1 E/F1 10/Times-Bold@0 -SF -.18(re)144 96 S(stricted_shell).18 E F0 1.069 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(nullglob)144 84 Q F0 .855(If set,)184 96 R F1(bash)3.355 E F0(allo) +3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) +3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 +(\)t).15 G(o)-3.354 E -.15(ex)184 108 S +(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 +120 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +132 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E +(are enabled.)184 144 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 156 Q(omptv)-.18 E(ars)-.1 E F0 1.448 +(If set, prompt strings under)184 168 R 1.448(go parameter e)-.18 F +1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 180 +S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 +(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9 +/Times-Bold@0 SF(PR)2.671 E(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G +(.).15 E(This option is enabled by def)184 192 Q(ault.)-.1 E F1 -.18(re) +144 204 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 108 R/F2 9/Times-Bold@0 SF 1.069(RESTRICTED SHELL)3.569 F F0(belo) -184 120 Q 2.86(w\). The)-.25 F -.25(va)2.86 G .36 -(lue may not be changed.).25 F .36 +184 216 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 228 Q 2.86 +(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 132 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 240 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 144 Q(erbose)-.1 E F0 .502(If set, the)184 156 R F1 +F1(shift_v)144 252 Q(erbose)-.1 E F0 .502(If set, the)184 264 R F1 (shift)3.002 E F0 -.2(bu)3.002 G .501 (iltin prints an error message when the shift count e).2 F .501 -(xceeds the number)-.15 F(of positional parameters.)184 168 Q F1(sour) -144 180 Q(cepath)-.18 E F0 .77(If set, the)184 192 R F1(sour)3.27 E(ce) +(xceeds the number)-.15 F(of positional parameters.)184 276 Q F1(sour) +144 288 Q(cepath)-.18 E F0 .77(If set, the)184 300 R F1(sour)3.27 E(ce) -.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F .771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771 (to \214nd the directory containing the)3.021 F -(\214le supplied as an ar)184 204 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 216 Q F0 -(If set, the)184 228 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E +(\214le supplied as an ar)184 312 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 324 Q F0 +(If set, the)184 336 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E (xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend) -108 244.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 256.8 R +108 352.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 364.8 R -.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) -.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 -(login shell cannot be)3.501 F .022(suspended; the)144 268.8 R F1 +(login shell cannot be)3.501 F .022(suspended; the)144 376.8 R F1 2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 (rride this and force the suspension.).15 F .023(The return status is) -5.023 F 2.5(0u)144 280.8 S(nless the shell is a login shell and)-2.5 E +5.023 F 2.5(0u)144 388.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 297.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 309.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 -(Return a status of 0 \(true\) or 1 \(f)144 309.6 R .877 +E F1(test)108 405.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) +108 417.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 +(Return a status of 0 \(true\) or 1 \(f)144 417.6 R .877 (alse\) depending on the e)-.1 F -.25(va)-.25 G .877 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 321.6 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 429.6 S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 (gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 -(primaries described abo)144 333.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 +(primaries described abo)144 441.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 (CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.079(does not accept an)5.579 F(y)-.15 E -(options, nor does it accept and ignore an ar)144 345.6 Q(gument of)-.18 +(options, nor does it accept and ignore an ar)144 453.6 Q(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 E .785 -(Expressions may be combined using the follo)144 363.6 R .786 +(Expressions may be combined using the follo)144 471.6 R .786 (wing operators, listed in decreasing order of prece-)-.25 F 3.412 -(dence. The)144 375.6 R -.25(eva)3.412 G .912 +(dence. The)144 483.6 R -.25(eva)3.412 G .912 (luation depends on the number of ar).25 F .911(guments; see belo)-.18 F 4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F -(used when there are \214v)144 387.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 399.6 Q F3 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)180 399.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 -E(alse.)-.1 E F1(\()144 411.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)180 411.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 +(used when there are \214v)144 495.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 507.6 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 507.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 +E(alse.)-.1 E F1(\()144 519.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +.26(Returns the v)180 519.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 -(rride the normal precedence of opera-).15 F(tors.)180 423.6 Q F3 -.2 -(ex)144 435.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 447.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 -E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 459.6 S +(rride the normal precedence of opera-).15 F(tors.)180 531.6 Q F3 -.2 +(ex)144 543.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 555.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 +E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 567.6 S (pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -471.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 -(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 488.4 Q F0(and)2.5 E +579.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 +(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 596.4 Q F0(and)2.5 E F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E (xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E 2.5(0a)144 506.4 S -.18(rg)-2.5 G(uments).18 E(The e) -180 518.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 530.4 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 542.4 Q +(guments.)-.18 E 2.5(0a)144 614.4 S -.18(rg)-2.5 G(uments).18 E(The e) +180 626.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 638.4 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 650.4 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 554.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 566.4 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +E 2.5(2a)144 662.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 674.4 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 F .37 -(gument is null.)-.18 F .379(If the \214rst ar)180 578.4 R .38 +(gument is null.)-.18 F .379(If the \214rst ar)180 686.4 R .38 (gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 590.4 Q .553 +-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 698.4 Q .553 (AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552 (xpression is true if the unary test is true.)-.15 F .552 -(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 602.4 Q +(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 710.4 Q (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 614.4 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 626.4 R .236 -(wing conditions are applied in the order listed.)-.25 F .236 -(If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 638.4 R 1.155 -.15 -(ve u)-.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.104 E .578(result of the e)180 650.4 R .578(xpression i\ -s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.333(as operands.)180 662.4 R(The)6.333 E F13.833 -E F0(and)3.833 E F13.832 E F0 1.332 -(operators are considered binary operators when there are)3.832 F .558 -(three ar)180 674.4 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 -F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F -.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F -(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 -686.4 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 -(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02 -F(ar)180 698.4 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 -2.985(,t)C .485(he result is the one-ar)-2.985 F .485 -(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E -(wise, the e)180 710.4 Q(xpression is f)-.15 E(alse.)-.1 E(GNU Bash 5.0) -72 768 Q(2018 March 15)144.29 E(76)193.45 E 0 Cg EP +(xpression is f)-.15 E(alse.)-.1 E(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(76)194.555 E 0 Cg EP %%Page: 77 77 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(4a)144 84 S --.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 96 R .385 -(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.885 E F0 2.885(,t)C .385 -(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) -.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647 -(posed of the remaining ar)180 108 R 4.147(guments. Otherwise,)-.18 F -1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 -G(luated).25 E(according to precedence using the rules listed abo)180 -120 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 132 S 2.5(rm)-2.5 G(ore ar)-2.5 -E(guments)-.18 E 1.635(The e)180 144 R 1.635(xpression is parsed and e) --.15 F -.25(va)-.25 G 1.635 -(luated according to precedence using the rules listed).25 F(abo)180 156 -Q -.15(ve)-.15 G(.).15 E(When used with)144 174 Q F1(test)2.5 E F0(or) -2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1(>)2.5 -E F0(operators sort le)2.5 E(xicographically using ASCII ordering.)-.15 -E F1(times)108 190.8 Q F0 1.229(Print the accumulated user and system t\ -imes for the shell and for processes run from the shell.)144 190.8 R -(The return status is 0.)144 202.8 Q F1(trap)108 219.6 Q F0([)2.5 E F1 -(\255lp)A F0 2.5(][)C([)-2.5 E/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0 -(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command)144 231.6 R F2(ar) -3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F -.15(xe)-.15 G .702 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(3a)144 84 S +-.18(rg)-2.5 G(uments).18 E .236(The follo)180 96 R .236 +(wing conditions are applied in the order listed.)-.25 F .236 +(If the second ar)5.236 F .236(gument is one of)-.18 F .855 +(the binary conditional operators listed abo)180 108 R 1.155 -.15(ve u) +-.15 H(nder).15 E/F1 9/Times-Bold@0 SF(CONDITION)3.355 E .855 +(AL EXPRESSIONS)-.18 F/F2 9/Times-Roman@0 SF(,)A F0(the)3.104 E .578 +(result of the e)180 120 R .578(xpression is the result of the binary t\ +est using the \214rst and third ar)-.15 F(guments)-.18 E 1.333 +(as operands.)180 132 R(The)6.333 E/F3 10/Times-Bold@0 SF3.833 E +F0(and)3.833 E F33.832 E F0 1.332 +(operators are considered binary operators when there are)3.832 F .558 +(three ar)180 144 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F +.558(gument is)-.18 F F3(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558 +(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1 +E(gument)-.18 E .521(test using the second and third ar)180 156 R 3.021 +(guments. If)-.18 F .521(the \214rst ar)3.021 F .52(gument is e)-.18 F +(xactly)-.15 E F3(\()3.02 E F0 .52(and the third)3.02 F(ar)180 168 Q +.485(gument is e)-.18 F(xactly)-.15 E F3(\))2.985 E F0 2.985(,t)C .485 +(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 +F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 180 Q +(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 192 S -.18(rg)-2.5 G +(uments).18 E .385(If the \214rst ar)180 204 R .385(gument is)-.18 F F3 +(!)2.885 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 +G .384(tion of the three-ar).05 F .384(gument e)-.18 F .384 +(xpression com-)-.15 F 1.647(posed of the remaining ar)180 216 R 4.147 +(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.648 +(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E +(according to precedence using the rules listed abo)180 228 Q -.15(ve) +-.15 G(.).15 E 2.5(5o)144 240 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 +E 1.635(The e)180 252 R 1.635(xpression is parsed and e)-.15 F -.25(va) +-.25 G 1.635(luated according to precedence using the rules listed).25 F +(abo)180 264 Q -.15(ve)-.15 G(.).15 E(When used with)144 282 Q F3(test) +2.5 E F0(or)2.5 E F3([)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E F0(and)2.5 +E F3(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F3(times)108 298.8 Q F0 +1.229(Print the accumulated user and system times for the shell and for\ + processes run from the shell.)144 298.8 R(The return status is 0.)144 +310.8 Q F3(trap)108 327.6 Q F0([)2.5 E F3(\255lp)A F0 2.5(][)C([)-2.5 E +/F4 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...]) +2.5 E .703(The command)144 339.6 R F4(ar)3.533 E(g)-.37 E F0 .703 +(is to be read and e)3.423 F -.15(xe)-.15 G .702 (cuted when the shell recei).15 F -.15(ve)-.25 G 3.202(ss).15 G -(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F2 +(ignal\(s\))-3.202 E F4(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F4 (ar)3.532 E(g)-.37 E F0(is)3.422 E .608(absent \(and there is a single) -144 243.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E +144 351.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F33.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 255.6 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 267.6 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 279.6 R -F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 291.6 R F13.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 +.659(\(the v)144 363.6 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) +144.34 375.6 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F4(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F33.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 387.6 R +F4(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 399.6 R F33.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F3(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 303.6 R F12.83 E F0 .33(option causes the shell \ +(signal. The)144 411.6 R F32.83 E F0 .33(option causes the shell \ to print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 315.6 R F2(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 +(bers. Each)144 423.6 R F4(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F4(signal.h)A F0 1.811 (>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E -(names are case insensiti)144 327.6 Q .3 -.15(ve a)-.25 H(nd the).15 E -/F3 9/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649 -(If a)144 345.6 R F2(sigspec)4.489 E F0(is)4.459 E F3(EXIT)4.149 E F0 -1.649(\(0\) the command)3.899 F F2(ar)4.479 E(g)-.37 E F0 1.649(is e) -4.369 F -.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.) --.15 F 1.648(If a)6.648 F F2(sigspec)4.488 E F0(is)4.458 E F3(DEB)144 -357.6 Q(UG)-.09 E/F4 9/Times-Roman@0 SF(,)A F0 1.167(the command)3.417 F -F2(ar)3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167 -(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F2 1.168(simple command) -3.667 F F0(,)A F2(for)3.668 E F0(command,)3.668 E F2(case)3.668 E F0 -(com-)3.668 E(mand,)144 369.6 Q F2(select)2.647 E F0 .147(command, e) -2.647 F -.15(ve)-.25 G .147(ry arithmetic).15 F F2(for)2.647 E F0 .146 +(names are case insensiti)144 435.6 Q .3 -.15(ve a)-.25 H(nd the).15 E +F1(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)144 453.6 R F4 +(sigspec)4.489 E F0(is)4.459 E F1(EXIT)4.149 E F0 1.649 +(\(0\) the command)3.899 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F +-.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.)-.15 F +1.648(If a)6.648 F F4(sigspec)4.488 E F0(is)4.458 E F1(DEB)144 465.6 Q +(UG)-.09 E F2(,)A F0 1.167(the command)3.417 F F4(ar)3.997 E(g)-.37 E F0 +1.167(is e)3.887 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) +-.25 G(ry).15 E F4 1.168(simple command)3.667 F F0(,)A F4(for)3.668 E F0 +(command,)3.668 E F4(case)3.668 E F0(com-)3.668 E(mand,)144 477.6 Q F4 +(select)2.647 E F0 .147(command, e)2.647 F -.15(ve)-.25 G .147 +(ry arithmetic).15 F F4(for)2.647 E F0 .146 (command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 -(cutes in a).15 F .145(shell function \(see)144 381.6 R F3 .145 +(cutes in a).15 F .145(shell function \(see)144 489.6 R F1 .145 (SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F1(extdeb)2.646 E(ug)-.2 E F0 -.146(option to)2.646 F(the)144 393.6 Q F1(shopt)3.201 E F0 -.2(bu)3.201 -G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E -(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F2(sigspec)3.54 E F0(is)3.51 E -F3(RETURN)3.2 E F4(,)A F0 .7(the com-)2.95 F(mand)144 405.6 Q F2(ar) +F .146(to the description of the)2.646 F F3(extdeb)2.646 E(ug)-.2 E F0 +.146(option to)2.646 F(the)144 501.6 Q F3(shopt)3.201 E F0 -.2(bu)3.201 +G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F F3(DEB)3.2 E +(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F4(sigspec)3.54 E F0(is)3.51 E +F1(RETURN)3.2 E F2(,)A F0 .7(the com-)2.95 F(mand)144 513.6 Q F4(ar) 3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G .643 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.644(cuted with the).15 F F1(.)3.144 E F0(or)3.144 E F1(sour)3.144 E(ce) --.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 417.6 Q -.15(xe) --.15 G(cuting.).15 E .961(If a)144 435.6 R F2(sigspec)3.801 E F0(is) -3.771 E F3(ERR)3.461 E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E +.644(cuted with the).15 F F3(.)3.144 E F0(or)3.144 E F3(sour)3.144 E(ce) +-.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 525.6 Q -.15(xe) +-.15 G(cuting.).15 E .961(If a)144 543.6 R F4(sigspec)3.801 E F0(is) +3.771 E F1(ERR)3.461 E F2(,)A F0 .961(the command)3.211 F F4(ar)3.791 E (g)-.37 E F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461(ra).15 G .96(pipeline \(which may consist of a) -.001 F .185(single simple command\), a list, or a compound command ret\ -urns a non\255zero e)144 447.6 R .185(xit status, subject to)-.15 F .452 -(the follo)144 459.6 R .452(wing conditions.)-.25 F(The)5.452 E F3(ERR) +urns a non\255zero e)144 555.6 R .185(xit status, subject to)-.15 F .452 +(the follo)144 567.6 R .452(wing conditions.)-.25 F(The)5.452 E F1(ERR) 2.952 E F0 .451(trap is not e)2.701 F -.15(xe)-.15 G .451 (cuted if the f).15 F .451(ailed command is part of the com-)-.1 F .387 -(mand list immediately follo)144 471.6 R .387(wing a)-.25 F F1(while) -2.887 E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 -(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388 -(statement, part)4.848 F .778(of a command e)144 483.6 R -.15(xe)-.15 G -.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778 +(mand list immediately follo)144 579.6 R .387(wing a)-.25 F F3(while) +2.887 E F0(or)2.887 E F3(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F4(if)2.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 591.6 R -.15(xe)-.15 G +.778(cuted in a).15 F F3(&&)3.278 E F0(or)3.278 E F3(||)3.278 E F0 .778 (list e)3.278 F .778(xcept the command follo)-.15 F .778 -(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0 -3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 495.6 R +(wing the \214nal)-.25 F F3(&&)3.278 E F0(or)3.278 E F3(||)3.277 E F0 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 603.6 R 1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v) -3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F -F1(!)3.78 E F0(.)A(These are the same conditions obe)144 507.6 Q -(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5 +F3(!)3.78 E F0(.)A(These are the same conditions obe)144 615.6 Q +(yed by the)-.15 E F3(err)2.5 E(exit)-.18 E F0(\()2.5 E F3A F0 2.5 (\)o)C(ption.)-2.5 E 1.095 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 -525.6 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 -(being ignored are reset to their original v)144 537.6 R .662 +633.6 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 645.6 R .662 (alues in a subshell or subshell en)-.25 F .662(vironment when one is) --.4 F 2.5(created. The)144 549.6 R(return status is f)2.5 E(alse if an) --.1 E(y)-.15 E F2(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G -(lid; otherwise).25 E F1(trap)2.5 E F0(returns true.)2.5 E F1(type)108 -566.4 Q F0([)2.5 E F1(\255aftpP)A F0(])A F2(name)2.5 E F0([)2.5 E F2 -(name)A F0(...])2.5 E -.4(Wi)144 578.4 S .174 -(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2(name) +-.4 F 2.5(created. The)144 657.6 R(return status is f)2.5 E(alse if an) +-.1 E(y)-.15 E F4(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G +(lid; otherwise).25 E F3(trap)2.5 E F0(returns true.)2.5 E F3(type)108 +674.4 Q F0([)2.5 E F3(\255aftpP)A F0(])A F4(name)2.5 E F0([)2.5 E F4 +(name)A F0(...])2.5 E -.4(Wi)144 686.4 S .174 +(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F4(name) 3.034 E F0 -.1(wo)2.854 G .173 (uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F1144 590.4 Q F0 .842(option is used,)3.342 F F1(type)3.342 E F0 -.843(prints a string which is one of)3.343 F F2(alias)3.343 E F0(,).27 E -F2 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)3.343 E F0 -(,).24 E F2 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F2 -(\214le)5.253 E F0(if)3.523 E F2(name)144.36 602.4 Q F0 .087 +F3144 698.4 Q F0 .842(option is used,)3.342 F F3(type)3.342 E F0 +.843(prints a string which is one of)3.343 F F4(alias)3.343 E F0(,).27 E +F4 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F4(function)3.343 E F0 +(,).24 E F4 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F4 +(\214le)5.253 E F0(if)3.523 E F4(name)144.36 710.4 Q F0 .087 (is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 (ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F2 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F4 (name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 614.4 R .118 +(found, then nothing is printed, and an e)144 722.4 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F12.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 626.4 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0 -.855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 -638.4 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 -(uld not return).1 F F2(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F1 -3.141 E F0 .641(option forces a)3.141 F F3 -.666(PA)3.141 G(TH) --.189 E F0 .113(search for each)144 650.4 R F2(name)2.613 E F0 2.613(,e) -C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 -F F0 -.1(wo)2.613 G .113(uld not return).1 F F2(\214le)2.613 E F0 5.113 -(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F1 -2.612 E F0(and)144 662.4 Q F13.23 E F0 .73(print the hashed v)3.23 -F .731 -(alue, which is not necessarily the \214le that appears \214rst in)-.25 -F F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1 -144 674.4 Q F0 1.749(option is used,)4.249 F F1(type)4.248 E F0 1.748 -(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G 1.748 -(cutable named).15 F F2(name)4.248 E F0 6.748(.T).18 G(his)-6.748 E .744 -(includes aliases and functions, if and only if the)144 686.4 R F1 -3.244 E F0 .744(option is not also used.)3.244 F .744 -(The table of hashed)5.744 F 1.223(commands is not consulted when using) -144 698.4 R F13.723 E F0 6.223(.T)C(he)-6.223 E F13.723 E F0 -1.223(option suppresses shell function lookup, as)3.723 F .325(with the) -144 710.4 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(type) -5.325 E F0 .325(returns true if all of the ar)2.825 F .326 -(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 -(re not)-2.826 F(found.)144 722.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(77)193.45 E 0 Cg EP +F32.619 E F0 .119(option is used,)2.619 F F3(type)2.619 E F0 +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(77)194.555 E 0 Cg EP %%Page: 78 78 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(ulimit)108 84 Q F0([)2.5 E F1(\255HSabcde\214klmnpqrstuvxPT)A F0([) -2.5 E/F2 10/Times-Italic@0 SF(limit)A F0(]])A(Pro)144 96 Q .244 -(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .855 +(either returns the name of the disk \214le that w)144 84 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F/F1 10/Times-Italic@0 +SF(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .64 +(mand name, or nothing if)144 96 R/F2 10/Courier@0 SF .64(type -t name) +3.14 F F0 -.1(wo)3.14 G .641(uld not return).1 F F1(\214le)3.141 E F0 +5.641(.T).18 G(he)-5.641 E/F3 10/Times-Bold@0 SF3.141 E F0 .641 +(option forces a)3.141 F/F4 9/Times-Bold@0 SF -.666(PA)3.141 G(TH)-.189 +E F0 .113(search for each)144 108 R F1(name)2.613 E F0 2.613(,e)C -.15 +(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F2 .113(type -t name)2.613 F F0 +-.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113(.I) +.18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F32.612 E +F0(and)144 120 Q F33.23 E F0 .73(print the hashed v)3.23 F .731 +(alue, which is not necessarily the \214le that appears \214rst in)-.25 +F F4 -.666(PA)3.231 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .731 +(If the)5.231 F F3144 132 Q F0 1.749(option is used,)4.249 F F3 +(type)4.248 E F0 1.748(prints all of the places that contain an e)4.248 +F -.15(xe)-.15 G 1.748(cutable named).15 F F1(name)4.248 E F0 6.748(.T) +.18 G(his)-6.748 E .744 +(includes aliases and functions, if and only if the)144 144 R F3 +3.244 E F0 .744(option is not also used.)3.244 F .744 +(The table of hashed)5.744 F 1.223(commands is not consulted when using) +144 156 R F33.723 E F0 6.223(.T)C(he)-6.223 E F33.723 E F0 +1.223(option suppresses shell function lookup, as)3.723 F .325(with the) +144 168 R F3(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F3(type)5.325 +E F0 .325(returns true if all of the ar)2.825 F .326 +(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 +(re not)-2.826 F(found.)144 180 Q F3(ulimit)108 196.8 Q F0([)2.5 E F3 +(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 +208.8 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 (he resources a)-2.744 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 108 R 3.443(ws)-.25 G .943(uch control.)-3.443 F(The) -5.943 E F13.443 E F0(and)3.443 E F13.444 E F0 .944 +.943(that allo)144 220.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +(The)5.943 E F33.443 E F0(and)3.443 E F33.444 E F0 .944 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 120 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208(\ -hard limit cannot be increased by a non-root user once it is set; a sof\ -t limit may)2.709 F .425(be increased up to the v)144 132 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F12.926 E -F0(nor)2.926 E F12.926 E F0 .426 +144 232.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +(hard limit cannot be increased by a non-root user once it is set; a so\ +ft limit may)2.709 F .425(be increased up to the v)144 244.8 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F32.926 E +F0(nor)2.926 E F32.926 E F0 .426 (is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -144 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 +256.8 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.741(of the special v)144 156 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) +.741(of the special v)144 268.8 R(alues)-.25 E F3(hard)3.241 E F0(,)A F3 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F3(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 168 R -.15(ve)-.25 G(ly).15 E -5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78 +(soft limit, and no limit, respecti)144 280.8 R -.15(ve)-.25 G(ly).15 E +5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 -F .498(resource is printed, unless the)144 180 R F12.999 E F0 .499 -(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 +F .498(resource is printed, unless the)144 292.8 R F32.999 E F0 +.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 192 Q 2.5(alue. Other) --.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1144 204 -Q F0(All current limits are reported)180 204 Q F1144 216 Q F0 -(The maximum sock)180 216 Q(et b)-.1 E(uf)-.2 E(fer size)-.25 E F1 -144 228 Q F0(The maximum size of core \214les created)180 228 Q F1 -144 240 Q F0(The maximum size of a process')180 240 Q 2.5(sd)-.55 G -(ata se)-2.5 E(gment)-.15 E F1144 252 Q F0 -(The maximum scheduling priority \("nice"\))180 252 Q F1144 264 Q -F0(The maximum size of \214les written by the shell and its children)180 -264 Q F1144 276 Q F0(The maximum number of pending signals)180 276 -Q F1144 288 Q F0 -(The maximum number of kqueues that may be allocated)180 288 Q F1 -144 300 Q F0(The maximum size that may be lock)180 300 Q(ed into memory) --.1 E F1144 312 Q F0(The maximum resident set size \(man)180 312 Q -2.5(ys)-.15 G(ystems do not honor this limit\))-2.5 E F1144 324 Q -F0 .791(The maximum number of open \214le descriptors \(most systems do\ - not allo)180 324 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F -(be set\))180 336 Q F1144 348 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 348 Q F1 -144 360 Q F0(The maximum number of bytes in POSIX message queues) -180 360 Q F1144 372 Q F0 -(The maximum real-time scheduling priority)180 372 Q F1144 384 Q -F0(The maximum stack size)180 384 Q F1144 396 Q F0 -(The maximum amount of cpu time in seconds)180 396 Q F1144 408 Q -F0(The maximum number of processes a)180 408 Q -.25(va)-.2 G -(ilable to a single user).25 E F1144 420 Q F0 .47 -(The maximum amount of virtual memory a)180 420 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 432 -Q F1144 444 Q F0(The maximum number of \214le locks)180 444 Q F1 -144 456 Q F0(The maximum number of pseudoterminals)180 456 Q F1 -144 468 Q F0(The maximum number of threads)180 468 Q(If)144 484.8 -Q F2(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G .468(n, and the) -.15 F F12.968 E F0 .468(option is not used,)2.968 F F2(limit)2.968 -E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 +(limit name and unit are printed before the v)144 304.8 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F3 +144 316.8 Q F0(All current limits are reported)180 316.8 Q F3 +144 328.8 Q F0(The maximum sock)180 328.8 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F3144 340.8 Q F0 +(The maximum size of core \214les created)180 340.8 Q F3144 352.8 +Q F0(The maximum size of a process')180 352.8 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F3144 364.8 Q F0 +(The maximum scheduling priority \("nice"\))180 364.8 Q F3144 +376.8 Q F0 +(The maximum size of \214les written by the shell and its children)180 +376.8 Q F3144 388.8 Q F0(The maximum number of pending signals)180 +388.8 Q F3144 400.8 Q F0 +(The maximum number of kqueues that may be allocated)180 400.8 Q F3 +144 412.8 Q F0(The maximum size that may be lock)180 412.8 Q +(ed into memory)-.1 E F3144 424.8 Q F0 +(The maximum resident set size \(man)180 424.8 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F3144 436.8 Q F0 .791(Th\ +e maximum number of open \214le descriptors \(most systems do not allo) +180 436.8 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 448.8 Q F3144 460.8 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 460.8 Q F3 +144 472.8 Q F0 +(The maximum number of bytes in POSIX message queues)180 472.8 Q F3 +144 484.8 Q F0(The maximum real-time scheduling priority)180 484.8 +Q F3144 496.8 Q F0(The maximum stack size)180 496.8 Q F3144 +508.8 Q F0(The maximum amount of cpu time in seconds)180 508.8 Q F3 +144 520.8 Q F0(The maximum number of processes a)180 520.8 Q -.25 +(va)-.2 G(ilable to a single user).25 E F3144 532.8 Q F0 .47 +(The maximum amount of virtual memory a)180 532.8 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 +544.8 Q F3144 556.8 Q F0(The maximum number of \214le locks)180 +556.8 Q F3144 568.8 Q F0(The maximum number of pseudoterminals)180 +568.8 Q F3144 580.8 Q F0(The maximum number of threads)180 580.8 Q +(If)144 597.6 Q F1(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G +.468(n, and the).15 F F32.968 E F0 .468(option is not used,)2.968 +F F1(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 (alue of the speci\214ed resource.)-3.218 F(If)5.468 E .044 -(no option is gi)144 496.8 R -.15(ve)-.25 G .044(n, then).15 F F1 +(no option is gi)144 609.6 R -.15(ve)-.25 G .044(n, then).15 F F3 2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 -(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 +(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F3 2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144 -508.8 R F14.089 E F0 4.089(,w)C 1.589 -(hich is in units of 512-byte blocks;)-4.089 F F14.089 E F0(,)A F1 -4.089 E F0(,)A F14.089 E F0(,)A F14.089 E F0(,)A F1 -4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.088(,w)C -1.588(hich are)-4.088 F 1.438(unscaled v)144 520.8 R 1.438 -(alues; and, when in Posix mode,)-.25 F F13.939 E F0(and)3.939 E -F13.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.) --3.939 F(The)6.439 E .404(return status is 0 unless an in)144 532.8 R +621.6 R F34.089 E F0 4.089(,w)C 1.589 +(hich is in units of 512-byte blocks;)-4.089 F F34.089 E F0(,)A F3 +4.089 E F0(,)A F34.089 E F0(,)A F34.089 E F0(,)A F3 +4.089 E F0 4.089(,a)C(nd)-4.089 E F34.089 E F0 4.088(,w)C +1.588(hich are)-4.088 F 1.476(unscaled v)144 633.6 R 1.476 +(alues; and, when in posix mode,)-.25 F F33.976 E F0(and)3.976 E +F33.976 E F0 3.976(,w)C 1.476(hich are in 512-byte increments.) +-3.976 F(The)6.476 E .404(return status is 0 unless an in)144 645.6 R -.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 -544.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 561.6 Q F0([)2.5 E -F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A -.2(The user \214le-creation mask is set to)144 573.6 R F2(mode)2.7 E F0 -5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 +657.6 S .5 -.25(ew l)-2.5 H(imit.).25 E F3(umask)108 674.4 Q F0([)2.5 E +F3A F0 2.5(][)C F3-2.5 E F0 2.5(][)C F1(mode)-2.5 E F0(])A +.2(The user \214le-creation mask is set to)144 686.4 R F1(mode)2.7 E F0 +5.2(.I).18 G(f)-5.2 E F1(mode)3.08 E F0(be)2.88 E .2 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ therwise it is interpreted as a symbolic mode mask similar to that acce\ -pted by)144 585.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -597.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 -(alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 +pted by)144 698.4 R F1 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +710.4 Q F1(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 +(alue of the mask is printed.)-.25 F(The)5.382 E F32.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 609.6 R .547 +(printed in symbolic form; the def)144 722.4 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G -(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 621.6 Q F0 .551 +(he)-3.047 E F33.047 E F0 .547(option is supplied, and)3.047 F +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(78)194.555 E 0 Cg EP +%%Page: 79 79 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(mode)144.38 84 Q F0 .551 (is omitted, the output is in a form that may be reused as input.)3.231 -F .552(The return status is 0 if the)5.552 F(mode w)144 633.6 Q -(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E -(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 -(unalias)108 650.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 662.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) -4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E -F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 -F(remo)144 674.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E -(alue is true unless a supplied)-.25 E F2(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F1(unset)108 691.2 Q F0<5bad>2.5 E F1 -(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 703.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 +F .552(The return status is 0 if the)5.552 F(mode w)144 96 Q +(as successfully changed or if no)-.1 E F1(mode)2.5 E F0(ar)2.5 E +(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E/F2 10 +/Times-Bold@0 SF(unalias)108 112.8 Q F0<5bad>2.5 E F2(a)A F0 2.5(][)C F1 +(name)-2.5 E F0(...])2.5 E(Remo)144 124.8 Q 1.955 -.15(ve e)-.15 H(ach) +.15 E F1(name)4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 +F(If)6.655 E F24.155 E F0 1.655 +(is supplied, all alias de\214nitions are)4.155 F(remo)144 136.8 Q -.15 +(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +(alue is true unless a supplied)-.25 E F1(name)2.86 E F0 +(is not a de\214ned alias.)2.68 E F2(unset)108 153.6 Q F0<5bad>2.5 E F2 +(fv)A F0 2.5(][)C-2.5 E F2(n)A F0 2.5(][)C F1(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 165.6 S 3.827(re).15 G(ach)-3.827 E F1(name)3.827 E F0 3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 -(If the)6.327 F F13.828 E F0 1.328(option is gi)3.828 F -.15(ve) --.25 G 1.328(n, each).15 F F2(name)144.36 715.2 Q F0 1.551 +(If the)6.327 F F23.828 E F0 1.328(option is gi)3.828 F -.15(ve) +-.25 G 1.328(n, each).15 F F1(name)144.36 177.6 Q F0 1.551 (refers to a shell v)4.231 F 1.551(ariable, and that v)-.25 F 1.551 (ariable is remo)-.25 F -.15(ve)-.15 G 4.05(d. Read-only).15 F -.25(va) -4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 727.2 R F1 -4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 189.6 R F2 +4.641 E F0 2.141(is speci\214ed, each)4.641 F F1(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(78)193.45 E 0 Cg EP -%%Page: 79 79 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(remo)144 84 Q -.15 -(ve)-.15 G 2.538(d. If).15 F(the)2.537 E/F1 10/Times-Bold@0 SF -2.537 E F0 .037(option is supplied, and)2.537 F/F2 10/Times-Italic@0 SF -(name)2.537 E F0 .037(is a v)2.537 F .037(ariable with the)-.25 F F2 -(namer)2.537 E(ef)-.37 E F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0 -(will)2.537 E .492(be unset rather than the v)144 96 R .492 -(ariable it references.)-.25 F F15.492 E F0 .492(has no ef)2.992 F -.492(fect if the)-.25 F F12.992 E F0 .492(option is supplied.) -2.992 F .493(If no)5.493 F .221(options are supplied, each)144 108 R F2 -(name)2.721 E F0 .221(refers to a v)2.721 F .22 -(ariable; if there is no v)-.25 F .22(ariable by that name, an)-.25 F -2.72(yf)-.15 G(unc-)-2.72 E 1.188(tion with that name is unset.)144 120 -R 1.189(Each unset v)6.189 F 1.189(ariable or function is remo)-.25 F --.15(ve)-.15 G 3.689(df).15 G 1.189(rom the en)-3.689 F(vironment)-.4 E -3.206(passed to subsequent commands.)144 132 R 3.206(If an)8.206 F 5.706 +F(remo)144 201.6 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F2 +2.537 E F0 .037(option is supplied, and)2.537 F F1(name)2.537 E F0 .037 +(is a v)2.537 F .037(ariable with the)-.25 F F1(namer)2.537 E(ef)-.37 E +F0(attrib)2.537 E(ute,)-.2 E F1(name)2.537 E F0(will)2.537 E .492 +(be unset rather than the v)144 213.6 R .492(ariable it references.)-.25 +F F25.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F2 +2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F +.221(options are supplied, each)144 225.6 R F1(name)2.721 E F0 .221 +(refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 +(ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 +(tion with that name is unset.)144 237.6 R 1.189(Each unset v)6.189 F +1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G +1.189(rom the en)-3.689 F(vironment)-.4 E 3.206 +(passed to subsequent commands.)144 249.6 R 3.206(If an)8.206 F 5.706 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E -F4(,)A F3(LINENO)144 144 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +F4(,)A F3(LINENO)144 261.6 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) 4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 -F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 156 -Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 G -(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 172.8 Q -F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144 -184.8 S .659(it for each speci\214ed child process and return its termi\ -nation status.).8 F(Each)5.659 E F2(id)3.169 E F0 .658(may be a process) -3.928 F .008(ID or a job speci\214cation; if a job spec is gi)144 196.8 +F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 +273.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) +-.15 E F1(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F2(wait)108 290.4 Q +F0([)2.5 E F2(\255fn)A F0 2.5(][)C F1(id ...)-2.5 E F0(])A -.8(Wa)144 +302.4 S .659(it for each speci\214ed child process and return its termi\ +nation status.).8 F(Each)5.659 E F1(id)3.169 E F0 .658(may be a process) +3.928 F .008(ID or a job speci\214cation; if a job spec is gi)144 314.4 R -.15(ve)-.25 G .009(n, all processes in that job').15 F 2.509(sp)-.55 G .009(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f) --5.009 E F2(id)144.01 208.8 Q F0 .522(is not gi)3.792 F -.15(ve)-.25 G +-5.009 E F1(id)144.01 326.4 Q F0 .522(is not gi)3.792 F -.15(ve)-.25 G .521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521 (hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521 -(nd the return status is zero.)-3.021 F(If)5.521 E(the)144 220.8 Q F1 -3.056 E F0 .556(option is supplied,)3.056 F F1(wait)3.057 E F0 -.1 +(nd the return status is zero.)-3.021 F(If)5.521 E(the)144 338.4 Q F2 +3.056 E F0 .556(option is supplied,)3.056 F F2(wait)3.057 E F0 -.1 (wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557 (ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .557 -(If the)5.557 F F13.057 E F0 .587 -(option is supplied, and job control is enabled,)144 232.8 R F1(wait) -3.086 E F0(forces)3.086 E F2(id)3.086 E F0 .586 +(If the)5.557 F F23.057 E F0 .587 +(option is supplied, and job control is enabled,)144 350.4 R F2(wait) +3.086 E F0(forces)3.086 E F1(id)3.086 E F0 .586 (to terminate before returning its sta-)3.086 F .755 -(tus, instead of returning when it changes status.)144 244.8 R(If)5.756 -E F2(id)3.266 E F0 .756(speci\214es a non-e)4.026 F .756 -(xistent process or job, the)-.15 F .365(return status is 127.)144 256.8 +(tus, instead of returning when it changes status.)144 362.4 R(If)5.756 +E F1(id)3.266 E F0 .756(speci\214es a non-e)4.026 F .756 +(xistent process or job, the)-.15 F .365(return status is 127.)144 374.4 R .365(Otherwise, the return status is the e)5.365 F .365 (xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 -268.8 Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 285.6 Q F0 -(If)108 297.6 Q F1(bash)4.396 E F0 1.896(is started with the name)4.396 -F F1(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F1 +386.4 Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 403.2 Q F0 +(If)108 415.2 Q F2(bash)4.396 E F0 1.896(is started with the name)4.396 +F F2(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F2 4.397 E F0 1.897(option is supplied at in)4.397 F -.2(vo)-.4 G 1.897 -(cation, the shell becomes).2 F 3.446(restricted. A)108 309.6 R .945 +(cation, the shell becomes).2 F 3.446(restricted. A)108 427.2 R .945 (restricted shell is used to set up an en)3.446 F .945 (vironment more controlled than the standard shell.)-.4 F(It)5.945 E -(beha)108 321.6 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 +(beha)108 439.2 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F2 (bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 338.4 Q -(changing directories with)144 338.4 Q F1(cd)2.5 E F0<83>108 355.2 Q -(setting or unsetting the v)144 355.2 Q(alues of)-.25 E F3(SHELL)2.5 E +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 456 Q +(changing directories with)144 456 Q F2(cd)2.5 E F0<83>108 472.8 Q +(setting or unsetting the v)144 472.8 Q(alues of)-.25 E F3(SHELL)2.5 E F4(,)A F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or) -2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 372 Q -(specifying command names containing)144 372 Q F1(/)2.5 E F0<83>108 -388.8 Q(specifying a \214lename containing a)144 388.8 Q F1(/)2.5 E F0 -(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F0 -.2(bu)5 G -(iltin command).2 E<83>108 405.6 Q .449 -(specifying a \214lename containing a slash as an ar)144 405.6 R .449 -(gument to the)-.18 F F12.95 E F0 .45(option to the)2.95 F F1 -(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 417.6 Q<83> -108 434.4 Q(importing function de\214nitions from the shell en)144 434.4 -Q(vironment at startup)-.4 E<83>108 451.2 Q(parsing the v)144 451.2 Q +2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 489.6 Q +(specifying command names containing)144 489.6 Q F2(/)2.5 E F0<83>108 +506.4 Q(specifying a \214lename containing a)144 506.4 Q F2(/)2.5 E F0 +(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E F0 -.2(bu)5 G +(iltin command).2 E<83>108 523.2 Q .449 +(specifying a \214lename containing a slash as an ar)144 523.2 R .449 +(gument to the)-.18 F F22.95 E F0 .45(option to the)2.95 F F2 +(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 535.2 Q<83> +108 552 Q(importing function de\214nitions from the shell en)144 552 Q +(vironment at startup)-.4 E<83>108 568.8 Q(parsing the v)144 568.8 Q (alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E -(vironment at startup)-.4 E<83>108 468 Q(redirecting output using the >\ -, >|, <>, >&, &>, and >> redirection operators)144 468 Q<83>108 484.8 Q -(using the)144 484.8 Q F1(exec)2.5 E F0 -.2(bu)2.5 G +(vironment at startup)-.4 E<83>108 585.6 Q(redirecting output using the\ + >, >|, <>, >&, &>, and >> redirection operators)144 585.6 Q<83>108 +602.4 Q(using the)144 602.4 Q F2(exec)2.5 E F0 -.2(bu)2.5 G (iltin command to replace the shell with another command).2 E<83>108 -501.6 Q(adding or deleting b)144 501.6 Q(uiltin commands with the)-.2 E -F12.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 518.4 Q -(using the)144 518.4 Q F1(enable)2.5 E F0 -.2(bu)2.5 G +619.2 Q(adding or deleting b)144 619.2 Q(uiltin commands with the)-.2 E +F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 636 Q(using the) +144 636 Q F2(enable)2.5 E F0 -.2(bu)2.5 G (iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 -535.2 Q(specifying the)144 535.2 Q F12.5 E F0(option to the)2.5 E -F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 552 Q -(turning of)144 552 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F1 -(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5 E(estricted)-.18 E F0(.)A -(These restrictions are enforced after an)108 568.8 Q 2.5(ys)-.15 G +652.8 Q(specifying the)144 652.8 Q F22.5 E F0(option to the)2.5 E +F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 669.6 Q +(turning of)144 669.6 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F2 +(set +r)2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A +(These restrictions are enforced after an)108 686.4 Q 2.5(ys)-.15 G (tartup \214les are read.)-2.5 E 1.566 -(When a command that is found to be a shell script is e)108 585.6 R -.15 +(When a command that is found to be a shell script is e)108 703.2 R -.15 (xe)-.15 G 1.566(cuted \(see).15 F F3 1.566(COMMAND EXECUTION)4.066 F F0 -(abo)3.816 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 597.6 Q F0(turns of) +(abo)3.816 E -.15(ve)-.15 G(\),).15 E F2(rbash)108 715.2 Q F0(turns of) 2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 -E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F5(SEE ALSO)72 -614.4 Q F2(Bash Refer)108 626.4 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F) --2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu Readline Libr)108 -638.4 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y) --.15 E F2(The Gnu History Libr)108 650.4 Q(ary)-.15 E F0 2.5(,B)C -(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2 -.8(Po)108 662.4 S -(rtable Oper).8 E(ating System Interface \(POSIX\) P)-.15 E -(art 2: Shell and Utilities)-.8 E F0 2.5(,I)C(EEE --)-2.5 E -(http://pubs.opengroup.or)144 674.4 Q(g/onlinepubs/9699919799/)-.18 E -(http://tiswww)108 686.4 Q -(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F2(sh) -108 698.4 Q F0(\(1\),)A F2(ksh)2.5 E F0(\(1\),)A F2(csh)2.5 E F0(\(1\))A -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(79)193.45 E 0 Cg EP +E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E(GNU Bash 5.0)72 +768 Q(2018 August 7)145.395 E(79)194.555 E 0 Cg EP %%Page: 80 80 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 -/Times-Italic@0 SF(emacs)108 84 Q F0(\(1\),)A F1(vi)2.5 E F0(\(1\))A F1 --.37(re)108 96 S(adline).37 E F0(\(3\))A/F2 10.95/Times-Bold@0 SF(FILES) -72 112.8 Q F1(/bin/bash)109.666 124.8 Q F0(The)144 136.8 Q/F3 10 -/Times-Bold@0 SF(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F1(/etc/pr) -109.666 148.8 Q(o\214le)-.45 E F0 -(The systemwide initialization \214le, e)144 160.8 Q -.15(xe)-.15 G -(cuted for login shells).15 E F1(~/.bash_pr)109.666 172.8 Q(o\214le)-.45 -E F0(The personal initialization \214le, e)144 184.8 Q -.15(xe)-.15 G -(cuted for login shells).15 E F1(~/.bashr)109.666 196.8 Q(c)-.37 E F0 -(The indi)144 208.8 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G -(-shell startup \214le).15 E F1(~/.bash_lo)109.666 220.8 Q(gout)-.1 E F0 -(The indi)144 232.8 Q(vidual login shell cleanup \214le, e)-.25 E -.15 -(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F1(~/.inputr) -109.666 244.8 Q(c)-.37 E F0(Indi)144 256.8 Q(vidual)-.25 E F1 -.37(re) -2.5 G(adline).37 E F0(initialization \214le)2.5 E F2 -.548(AU)72 273.6 S -(THORS).548 E F0(Brian F)108 285.6 Q(ox, Free Softw)-.15 E(are F)-.1 E -(oundation)-.15 E(bfox@gnu.or)108 297.6 Q(g)-.18 E(Chet Rame)108 314.4 Q +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF(SEE ALSO)72 84 Q/F2 10/Times-Italic@0 SF(Bash Refer)108 +96 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 +E(y)-.15 E F2(The Gnu Readline Libr)108 108 Q(ary)-.15 E F0 2.5(,B)C +(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu History Libr) +108 120 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E +(y)-.15 E F2 -.8(Po)108 132 S(rtable Oper).8 E +(ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) +-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 144 Q +(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 156 Q +(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F2(sh) +108 168 Q F0(\(1\),)A F2(ksh)2.5 E F0(\(1\),)A F2(csh)2.5 E F0(\(1\))A +F2(emacs)108 180 Q F0(\(1\),)A F2(vi)2.5 E F0(\(1\))A F2 -.37(re)108 192 +S(adline).37 E F0(\(3\))A F1(FILES)72 208.8 Q F2(/bin/bash)109.666 220.8 +Q F0(The)144 232.8 Q/F3 10/Times-Bold@0 SF(bash)2.5 E F0 -.15(exe)2.5 G +(cutable).15 E F2(/etc/pr)109.666 244.8 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 256.8 Q -.15(xe)-.15 G +(cuted for login shells).15 E F2(~/.bash_pr)109.666 268.8 Q(o\214le)-.45 +E F0(The personal initialization \214le, e)144 280.8 Q -.15(xe)-.15 G +(cuted for login shells).15 E F2(~/.bashr)109.666 292.8 Q(c)-.37 E F0 +(The indi)144 304.8 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F2(~/.bash_lo)109.666 316.8 Q(gout)-.1 E F0 +(The indi)144 328.8 Q(vidual login shell cleanup \214le, e)-.25 E -.15 +(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F2(~/.inputr) +109.666 340.8 Q(c)-.37 E F0(Indi)144 352.8 Q(vidual)-.25 E F2 -.37(re) +2.5 G(adline).37 E F0(initialization \214le)2.5 E F1 -.548(AU)72 369.6 S +(THORS).548 E F0(Brian F)108 381.6 Q(ox, Free Softw)-.15 E(are F)-.1 E +(oundation)-.15 E(bfox@gnu.or)108 393.6 Q(g)-.18 E(Chet Rame)108 410.4 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni) --2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 326.4 Q(y@case.edu)-.15 -E F2 -.11(BU)72 343.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 -(If you \214nd a b)108 355.2 R .568(ug in)-.2 F F3(bash,)3.068 E F0 .568 +-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 422.4 Q(y@case.edu)-.15 +E F1 -.11(BU)72 439.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 +(If you \214nd a b)108 451.2 R .568(ug in)-.2 F F3(bash,)3.068 E F0 .568 (you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F 3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .568(ug, and)-.2 -F 5.626(that it appears in the latest v)108 367.2 R 5.625(ersion of)-.15 +F 5.626(that it appears in the latest v)108 463.2 R 5.625(ersion of)-.15 F F3(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.625 (ersion is al)-.15 F -.1(wa)-.1 G 5.625(ys a).1 F -.25(va)-.2 G 5.625 -(ilable from).25 F F1(ftp://ftp.gnu.or)108 379.2 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .41(Once you ha)108 396 R .71 -.15(ve d)-.2 H .41 +(ilable from).25 F F2(ftp://ftp.gnu.or)108 475.2 Q(g/pub/gnu/bash/)-.37 +E F0(.)A .41(Once you ha)108 492 R .71 -.15(ve d)-.2 H .41 (etermined that a b).15 F .41(ug actually e)-.2 F .411(xists, use the) --.15 F F1(bashb)3.181 E(ug)-.2 E F0 .411(command to submit a b)3.131 F -.411(ug report.)-.2 F(If)5.411 E .595(you ha)108 408 R .895 -.15 +-.15 F F2(bashb)3.181 E(ug)-.2 E F0 .411(command to submit a b)3.131 F +.411(ug report.)-.2 F(If)5.411 E .595(you ha)108 504 R .895 -.15 (ve a \214)-.2 H .595(x, you are encouraged to mail that as well!).15 F .594(Suggestions and `philosophical' b)5.595 F .594(ug reports may)-.2 F -(be mailed to)108 420 Q F1 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(be mailed to)108 516 Q F2 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 (or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3(gnu.bash.b)2.5 E(ug) --.2 E F0(.)A(ALL b)108 436.8 Q(ug reports should include:)-.2 E(The v) -108 453.6 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 465.6 -Q(are and operating system)-.1 E(The compiler used to compile)108 477.6 -Q 2.5(Ad)108 489.6 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 -E 2.5(As)108 501.6 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 -G(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 518.4 Q(ug)-.2 E F0 +-.2 E F0(.)A(ALL b)108 532.8 Q(ug reports should include:)-.2 E(The v) +108 549.6 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 561.6 +Q(are and operating system)-.1 E(The compiler used to compile)108 573.6 +Q 2.5(Ad)108 585.6 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 +E 2.5(As)108 597.6 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 +G(rcises the b).15 E(ug)-.2 E F2(bashb)108.27 614.4 Q(ug)-.2 E F0 (inserts the \214rst three items automatically into the template it pro) 2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108 -535.2 Q(ug reports concerning this manual page should be directed to)-.2 -E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E F2 -.11(BU)72 552 S(GS).11 E F0(It')108 564 Q 2.5(st)-.55 G +631.2 Q(ug reports concerning this manual page should be directed to)-.2 +E F2 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) +.25 E F1 -.11(BU)72 648 S(GS).11 E F0(It')108 660 Q 2.5(st)-.55 G (oo big and too slo)-2.5 E -.65(w.)-.25 G 1.868 -(There are some subtle dif)108 580.8 R 1.868(ferences between)-.25 F F3 +(There are some subtle dif)108 676.8 R 1.868(ferences between)-.25 F F3 (bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F F3(sh)4.369 E F0 4.369(,m)C 1.869(ostly because of the)-4.369 F/F4 9 -/Times-Bold@0 SF(POSIX)108 592.8 Q F0(speci\214cation.)2.25 E -(Aliases are confusing in some uses.)108 609.6 Q(Shell b)108 626.4 Q +/Times-Bold@0 SF(POSIX)108 688.8 Q F0(speci\214cation.)2.25 E +(Aliases are confusing in some uses.)108 705.6 Q(Shell b)108 722.4 Q (uiltin commands and functions are not stoppable/restartable.)-.2 E -1.315(Compound commands and command sequences of the form `a ; b ; c' a\ -re not handled gracefully when)108 643.2 R .389 -(process suspension is attempted.)108 655.2 R .389 -(When a process is stopped, the shell immediately e)5.389 F -.15(xe)-.15 -G .39(cutes the ne).15 F .39(xt com-)-.15 F .193(mand in the sequence.) -108 667.2 R .192(It suf)5.193 F .192(\214ces to place the sequence of c\ -ommands between parentheses to force it into a)-.25 F -(subshell, which may be stopped as a unit.)108 679.2 Q(Array v)108 696 Q -(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E -(There may be only one acti)108 712.8 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(80)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(80)194.555 E 0 Cg EP +%%Page: 81 81 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.315(Compound co\ +mmands and command sequences of the form `a ; b ; c' are not handled gr\ +acefully when)108 84 R .389(process suspension is attempted.)108 96 R +.389(When a process is stopped, the shell immediately e)5.389 F -.15(xe) +-.15 G .39(cutes the ne).15 F .39(xt com-)-.15 F .193 +(mand in the sequence.)108 108 R .192(It suf)5.193 F .192(\214ces to pl\ +ace the sequence of commands between parentheses to force it into a)-.25 +F(subshell, which may be stopped as a unit.)108 120 Q(Array v)108 136.8 +Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 153.6 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E +(81)194.555 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.dvi b/doc/bashref.dvi index f79cc8ed5..a270d0826 100644 Binary files a/doc/bashref.dvi and b/doc/bashref.dvi differ diff --git a/doc/bashref.html b/doc/bashref.html index f494f344e..13d9294c1 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,9 +1,9 @@