diff options
author | Chet Ramey <chet.ramey@case.edu> | 2011-12-12 22:09:11 -0500 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2011-12-12 22:09:11 -0500 |
commit | e05be32def741aff2237e1bb5ba5494ceca12654 (patch) | |
tree | eac8a7b29b833b57355cd1ac2a48cc010cf64ba3 | |
parent | bf19c529dd3f03b0dfc500900484c2d9fa221e23 (diff) | |
download | bash-e05be32def741aff2237e1bb5ba5494ceca12654.tar.gz |
commit bash-20101025 snapshot
90 files changed, 29014 insertions, 6198 deletions
@@ -1,3 +1,292 @@ +This document details the changes between this version, bash-4.2-alpha, +and the previous version, bash-4.1-release. + +1. Changes to Bash + +a. Fixed a bug in the parser when processing alias expansions containing + quoted newlines. + +b. Fixed a memory leak in associative array expansion. + +c. Fixed a bug that caused quoted here-strings to be requoted when printed. + +d. Fixed a bug in arithmetic expansion that caused the index in an array + expansion to be evaluated twice under certain circumstances. + +e. Fixed several bugs with the expansion and display of variables that have + been given attributes but not values and are technically unset. + +f. Fixed a bug that caused core dumps when using filename completion that + expands to a filename containing a globbing character. + +g. Fixed a bug that caused assignment statements preceding a special builtin + when running in Posix mode to not persist after the builtin completed + when the special builtin was executed in a shell function without any + local variables. + +h. Fixed a bug that caused a command to remain in the hash table even after + `hash command' did not find anything if there was already an existing + hashed pathname. + +i. Fixed several bugs caused by executing unsafe functions from a signal + handler in the cases where a signal handler is executed immediately + rather than setting a flag for later execution. + +j. Fixed a bug that caused some internal flag variables to be set + incorrectly if `read -t' timed out. + +k. Fixed a Posix compatibility issue by making sure that a backslash escaping + a `}' within a double-quoted ${...} parameter expansion is removed as part + of the parameter expansion. + +l. Fixed a bug that caused execution of a trap to overwrite PIPESTATUS. + +m. Fixed a bug that caused here documents to not be displayed correctly + when attached to commands inside compound commands. + +n. Fixed a bug that caused the printf builtin to use the wrong precision + when using the `*' modifier. + +o. Fixed a bug that caused an arriving SIGCHLD to interrupt output functions + like those invoked by echo or printf. + +p. Changed to use a more robust mechanism than eaccess(2) when test is + checking filenames for execution permission. + +q. Fixed a bug that caused spurious semicolons to be added into the command + history in certain cases. + +r. Fixed a bug that caused the shell to free non-allocated memory when + unsetting element 0 of an associative array after it was assigned + implicitly. + +s. Fixed a bug that could cause the shell to dump core if using the `v' + vi editing command on a multi-line command. + +t. Fixed a bug that left FIFOs opened by process substitutions open long + enough to potentially cause file descriptor exhaustion when running a + shell function or shell builtin. + +u. Fixed a bug that caused the history expansion functions to not recognize + process substitution or extended glob patterns as single words. + +v. Fixed a bug that caused restricted shells to set a restricted command's + exit status incorrectly. + +w. Fixed a bug that caused bash to ignore the wrong set of filenames when + completing a command using the `complete-filename' readline command. + +x. Fixed a bug that caused a -PID argument following a -s sig or -n sig to + not be interpreted as a signal specification. + +y. Changed posix-mode behavior of a parse error in a `.' script or `eval' + command to exit the shell under Posix-specified conditions. Previous + versions printed a warning. + +z. Fixed a bug in \W prompt expansion that resulted in incorrect expansion + in the event of overlapping strings. + +aa. Fixed a bug that caused the := parameter expansion operator to return the + wrong value as the result of the expansion. + +bb. When in Posix mode, a single quote is not treated specially in a + double-quoted ${...} expansion, unless the expansion operator is + # or % or the non-Posix `//', `^', and `,'. In particular, it does + not define a new quoting context. This is from Posix interpretation 221. + +cc. Fixed a bug that inadvertently allowed program names containing slashes + to be entered into the command hash table. + +dd. Fixed a bug that caused the select builtin to incorrectly compute the + display width of the arguments in the presence of multibyte characters. + +ee. Fixed a bug that caused bash to not change the xtrace file descriptor if + BASH_XTRACEFD was found in the shell environment at startup. + +ff. Fixed a memory leak in the pattern removal parameter expansion. + +gg. Fixed a bug that caused SIGINT to fail to interrupt a nested loop if the + loop was in a pipeline. + +hh. Fixed a problem in $(...) parsing that caused the parser to add an extra + space to a here-document delimiter if the first word contained a `/'. + +ii. Fixed a bug that caused functions defined with the `function' reserved + word to require braces around the function body. + +jj. Fixed a bug that caused bash to dump core when a variable expansion being + used as an array subscript failed. + +kk. Fixed a bug that caused bash to dump core if the case-modification + expansions were used on a variable with a null value. + +ll. Fixed a bug that caused partially-quoted strings to be split incorrectly + if a variable with a null value was expanded within double quotes. + +mm. The pattern substitution word expansion has been sped up dramatically + when running in a locale with multibyte characters. + +nn. Fixed a bug that caused history -a to not write the correct lines to + the history file if all the new lines in the history list were added + since the last time the history file was read or written. + +oo. Fixed a bug that caused completion of a word with an unclosed `` command + substitution to set the prompt incorrectly. + +pp. Fixed a bug that caused extended globbing patterns in $HISTIGNORE or + $GLOBIGNORE to be incorrectly scanned. + +qq. Fixed a bug caused by closing file descriptors 3-20 on shell startup. The + shell now sets them to close-on-exec. + +rr. Fixed a bug that caused the exit status of `exec file' to be set incorrectly + if `file' was a directory. + +ss. Fixed a bug in the `.' builtin to make a non-interactive posix-mode shell + exit if the file argument to `.' is not found. Prefixing exec with + `command' makes the shell not exit. Posix requires this behavior. + +tt. Fixed a bug that caused `sh -c 'command exec; exit 1' to hang. + +uu. Fixed a bug in $(...) command substitution parsing that caused the shell + to treat backslash-newline incorrectly when parsing a comment. + +vv. Fixed bug that caused brace expansion sequence generation to misbehave + when supplied integers greater than 2**31 - 1. + +ww. Fixed a bug that caused failure to save file descriptors for redirections + to corrupt shell file descriptors. + +xx. Fixed a bug that caused bash-forward-shellword to not correctly handle + quoted strings. + +2. Changes to Readline + +a. Fixed a bug that caused the unconverted filename to be added to the list of + completions when the application specified filename conversion functions. + +b. Fixed a bug that caused the wrong filename to be passed to opendir when the + application has specified a filename dequoting function. + +c. Fixed a bug when repeating a character search in vi mode in the case where + there was no search to repeat. + +d. When show-all-if-ambiguous is set, the completion routines no longer insert + a common match prefix that is shorter than the text being completed. + +e. The full set of vi editing commands may now be used in callback mode. + +f. Fixed a bug that caused readline to not update its idea of the terminal + dimensions while running in `no-echo' mode. + +h. Fixed a bug that caused readline to dump core if an application called + rl_prep_terminal without setting rl_instream. + +i. Fixed a bug that caused meta-prefixed characters bound to incremental + search forward or backward to not be recognized if they were typed + subsequently. + +j. The incremental search code treats key sequences that map to the same + functions as (default) ^G, ^W, and ^Y as equivalent to those characters. + +k. Fixed a bug in menu-complete that caused it to misbehave with large + negative argument. + +l. Fixed a bug that caused vi-mode yank-last-arg to ring the bell when invoked + at the end of the line. + +3. New Features in Bash + +a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a + leading #!. + +b. Subshells begun to execute command substitutions or run shell functions or + builtins in subshells do not reset trap strings until a new trap is + specified. This allows $(trap) to display the caller's traps and the + trap strings to persist until a new trap is set. + +c. `trap -p' will now show signals ignored at shell startup, though their + disposition still cannot be modified. + +d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences. + +e. declare/typeset has a new `-g' option, which creates variables in the + global scope even when run in a shell function. + +f. test/[/[[ have a new -v variable unary operator, which returns success if + `variable' has been set. + +g. Posix parsing changes to allow `! time command' and multiple consecutive + instances of `!' (which toggle) and `time' (which have no cumulative + effect). + +h. Posix change to allow `time' as a command by itself to print the elapsed + user, system, and real times for the shell and its children. + +j. $((...)) is always parsed as an arithmetic expansion first, instead of as + a potential nested command substitution, as Posix requires. + +k. A new FUNCNEST variable to allow the user to control the maximum shell + function nesting (recursive execution) level. + +l. The mapfile builtin now supplies a third argument to the callback command: + the line about to be assigned to the supplied array index. + +m. The printf builtin has as new %(fmt)T specifier, which allows time values + to use strftime-like formatting. + +n. There is a new `compat41' shell option. + +o. The cd builtin has a new Posix-mandated `-e' option. + +p. Negative subscripts to indexed arrays, previously errors, now are treated + as offsets from the maximum assigned index + 1. + +q. Negative length specifications in the ${var:offset:length} expansion, + previously errors, are now treated as offsets from the end of the variable. + +r. Parsing change to allow `time -p --'. + +s. Posix-mode parsing change to not recognize `time' as a keyword if the + following token begins with a `-'. This means no more Posix-mode + `time -p'. Posix interpretation 267. + +t. There is a new `lastpipe' shell option that runs the last command of a + pipeline in the current shell context. The lastpipe option has no + effect if job control is enabled. + +u. History expansion no longer expands the `$!' variable expansion. + +v. Posix mode shells no longer exit if a variable assignment error occurs + with an assignment preceding a command that is not a special builtin. + +w. Non-interactive mode shells exit if -u is enabled an an attempt is made + to use an unset variable with the % or # expansions, the `//', `^', or + `,' expansions, or the parameter length expansion. + +x. Posix-mode shells use the argument passed to `.' as-is if a $PATH search + fails, effectively searching the current directory. Posix-2008 change. + +4. New Features in Readline + +a. The history library does not try to write the history filename in the + current directory if $HOME is unset. This closes a potential security + problem if the application does not specify a history filename. + +b. New bindable variable `completion-display-width' to set the number of + columns used when displaying completions. + +c. New bindable variable `completion-case-map' to cause case-insensitive + completion to treat `-' and `_' as identical. + +d. There are new bindable vi-mode command names to avoid readline's case- + insensitive matching not allowing them to be bound separately. + +e. New bindable variable `menu-complete-display-prefix' causes the menu + completion code to display the common prefix of the possible completions + before cycling through the list, instead of after. + +------------------------------------------------------------------------------ This document details the changes between this version, bash-4.1-rc, and the previous version, bash-4.1-beta. diff --git a/CHANGES~ b/CHANGES~ new file mode 100644 index 00000000..5809c6b2 --- /dev/null +++ b/CHANGES~ @@ -0,0 +1,6723 @@ +This document details the changes between this version, bash-4.2-alpha, +and the previous version, bash-4.1-release. + +1. Changes to Bash + +a. Fixed a bug in the parser when processing alias expansions containing + quoted newlines. + +b. Fixed a memory leak in associative array expansion. + +c. Fixed a bug that caused quoted here-strings to be requoted when printed. + +d. Fixed a bug in arithmetic expansion that caused the index in an array + expansion to be evaluated twice under certain circumstances. + +e. Fixed several bugs with the expansion and display of variables that have + been given attributes but not values and are technically unset. + +f. Fixed a bug that caused core dumps when using filename completion that + expands to a filename containing a globbing character. + +g. Fixed a bug that caused assignment statements preceding a special builtin + when running in Posix mode to not persist after the builtin completed + when the special builtin was executed in a shell function without any + local variables. + +h. Fixed a bug that caused a command to remain in the hash table even after + `hash command' did not find anything if there was already an existing + hashed pathname. + +i. Fixed several bugs caused by executing unsafe functions from a signal + handler in the cases where a signal handler is executed immediately + rather than setting a flag for later execution. + +j. Fixed a bug that caused some internal flag variables to be set + incorrectly if `read -t' timed out. + +k. Fixed a Posix compatibility issue by making sure that a backslash escaping + a `}' within a double-quoted string is removed as part of ${...} + parameter expansion. + +l. Fixed a bug that caused execution of a trap to overwrite PIPESTATUS. + +m. Fixed a bug that caused here documents to not be displayed correctly + when attached to commands inside compound commands. + +n. Fixed a bug that caused the printf builtin to use the wrong precision + when using the `*' modifier. + +o. Fixed a bug that caused an arriving SIGCHLD to interrupt output functions + like those invoked by echo or printf. + +p. Changed to use a more robust mechanism than eaccess(2) when test is + checking filenames for execution permission. + +q. Fixed a bug that caused spurious semicolons to be added into the command + history in certain cases. + +r. Fixed a bug that caused the shell to free non-allocated memory when + unsetting element 0 of an associative array after it was assigned + implicitly. + +s. Fixed a bug that could cause the shell to dump core if using the `v' + vi editing command on a multi-line command. + +t. Fixed a bug that left FIFOs opened by process substitutions open long + enough to potentially cause file descriptor exhaustion when running a + shell function or shell builtin. + +u. Fixed a bug that caused the history expansion functions to not recognize + process substitution or extended glob patterns as single words. + +v. Fixed a bug that caused restricted shells to set a restricted command's + exit status incorrectly. + +w. Fixed a bug that caused bash to ignore the wrong set of filenames when + completing a command using the `complete-filename' readline command. + +x. Fixed a bug that caused a -PID argument following a -s sig or -n sig to + not be interpreted as a signal specification. + +2. Changes to Readline + +a. Fixed a bug that caused the unconverted filename to be added to the list of + completions when the application specified filename conversion functions. + +b. Fixed a bug that caused the wrong filename to be passed to opendir when the + application has specified a filename dequoting function. + +c. Fixed a bug when repeating a character search in vi mode in the case where + there was no search to repeat. + +d. When show-all-if-ambiguous is set, the completion routines no longer insert + a common match prefix that is shorter than the text being completed. + +3. New Features in Bash + +a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a + leading #!. + +b. Subshells begun to execute command substitutions or run shell functions or + builtins in subshells do not reset trap strings until a new trap is + specified. This allows $(trap) to display the caller's traps and the + trap strings to persist until a new trap is set. + +c. `trap -p' will now show signals ignored at shell startup, though their + disposition still cannot be modified. + +d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences. + +e. declare/typeset has a new `-g' option, which creates variables in the + global scope even when run in a shell function. + +f. test/[/[[ have a new -v variable unary operator, which returns success if + `variable' has been set. + +4. New Features in Readline + +a. The history library does not try to write the history filename in the + current directory if $HOME is unset. This closes a potential security + problem if the application does not specify a history filename. + +b. New bindable variable `completion-display-width' to set the number of + columns used when displaying completions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.1-rc, +and the previous version, bash-4.1-beta. + +1. Changes to Bash + +a. Fixed a bug that caused printf to not return a partial value when it + encountered an error while converting an integer argument. + +b. Fixed a bug that caused setting one of the compatNN options to not + turn off the others. + +c. The (undocumented) --wordexp option is no longer included by default. + +d. Fixed a bug in conditional command execution that caused it to not + correctly ignore the exit status under certain circumstances. + +e. Added a configure-time check for correctly-working asprintf/snprintf. + +f. Fixed some problems with line number calculation and display when sourcing + a file in an interactive shell. + +g. Fixed a bug that caused the shell to crash when using `declare -A foo=bar'. + +h. Fixed a bug that caused an off-by-one error when calculating the directories + to display with the PROMPT_DIRTRIM option. + +2. Changes to Readline + +a. Fixed a bug that caused applications using the callback interface to not + react to SIGINT (or other signals) until another character arrived. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.1-beta, +and the previous version, bash-4.1-alpha. + +1. Changes to Bash + +a. Fixed a bug in mapfile that caused the shell to crash if it was passed the + name of an associative array. + +b. Fixed a bug that caused the shell to incorrectly split case patterns if + they contained characters in $IFS. + +c. Fixed a bug that caused the shell to set $? to the wrong value when using + a construct ending with a variable assignment with set -x enabled and PS4 + containing a command substitution. + +d. Fixed a bug that caused the shell to read commands incorrectly if an + expansion error occurred under certain conditions in a user-specified + subshell. + +e. Fixed a bug that caused the shell to set $? incorrectly if a parse error + occurred in an evaluation context ("eval", trap command, dot script, etc.) + +f. Fixed a bug that caused the shell to attempt command substitution + completion within a single-quoted string. + +g. Fixed a bug that caused the shell to insert an extra single quote during + word completion. + +h. Fixed a bug that caused the shell to crash if invoked with the environment + variable EMACS having a null value. + +i. Fixed a bug that caused bash to incorrectly report the presence of new + mail in a `maildir' environment. + +j. Fixed a bug that caused the shell to not recognize a here-document ending + delimiter inside a command substitution. + +k. Fixed a bug that caused the shell to crash when a a dynamic array variable + was assigned a scalar value. + +2. Changes to Readline + +3. New Features in Bash + +a. The mapfile/readarray builtin no longer stores the commands it invokes via + callbacks in the history list. + +b. There is a new `compat40' shopt option. + +c. The < and > operators to [[ do string comparisons using the current locale + only if the compatibility level is greater than 40 (set to 41 by default). + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.1-alpha, +and the previous version, bash-4.0-release. + +1. Changes to Bash + +a. Fixed bugs in the parser involving new parsing of the commands contained + in command substitution when the substitution is read. + +b. Fixed a bug that caused the shell to dump core when performing programmable + completion using a shell function. + +c. Fixed a bug in `mapfile' that caused it to invoke callbacks at the wrong + time. + +d. Fixed a bug that caused the shell to dump core when listing jobs in the + `exit' builtin. + +e. Fixed several bugs encountered when reading subscripts in associative + array assignments and expansions. + +f. Fixed a bug that under some circumstances caused an associative array to + be converted to an indexed array. + +g. Fixed a bug that caused syntax errors and SIGINT interrupts to not set + $? to a value > 128. + +h. Fixed a bug that caused the shell to remove FIFOs associated with process + substitution inside shell functions. + +i. Fixed a bug that caused terminal attributes to not be reset when the + `read' builtin timed out. + +j. Fixed a bug in brace expansion that caused unwanted zero padding of the + expanded terms. + +k. Fixed a bug that prevented the |& construct from working as intended when + used with a simple command with additional redirections. + +l. Fixed a bug with the case statment ;& terminator that caused the shell to + dereference a NULL pointer. + +m. Fixed a bug that caused assignment statements or redirections preceding + a simple command name to inhibit alias expansion. + +n. Fixed the behavior of `set -u' to conform to the latest Posix interpretation: + every expansion of an unset variable except $@ and $* will cause the + shell to exit. + +o. Fixed a bug that caused double-quoted expansions of $* inside word + expansions like ${x#$*} to not expand properly when $IFS is empty. + +p. Fixed a bug that caused traps to set $LINENO to the wrong value when they + execute. + +q. Fixed a bug that caused off-by-one errors when computing history lines in + the `fc' builtin. + +r. Fixed a bug that caused some terminating signals to not exit the shell + quickly enough, forcing the kernel to send the signal (e.g., SIGSEGV) + multiple times. + +s. Fixed a bug that caused the shell to attempt to add empty lines to the + history list when reading here documents. + +t. Made some internal changes that dramatically speeds up sequential indexed + array access. + +u. Fixed a bug that caused the shell to write past the end of a string when + completing a double-quoted string ending in a backslash. + +v. Fixed a bug that caused the shell to replace too many characters when a + pattern match was null in a ${foo//bar} expansion. + +w. Fixed bugs in the expansion of ** that caused duplicate directory names + and the contents of the current directory to be omitted. + +x. Fixed a bug that caused $? to not be set correctly when referencing an + unset variable with set -u and set -e enabled. + +y. Fixed a bug caused by executing an external program from the DEBUG trap + while a pipeline was running. The effect was to disturb the pipeline + state, occasionally causing it to hang. + +z. Fixed a bug that caused the ** glob expansion to dump core if it + encountered an unsearchable directory. + +aa. Fixed a bug that caused `command -v' and `command -V' to not honor the + path set by the -p option. + +bb. Fixed a bug that caused brace expansion to take place too soon in some + compound array assignments. + +cc. Fixed a bug that caused programmable completion functions' changes to + READLINE_POINT to not be reflected back to readline. + +dd. Fixed a bug that caused the shell to dump core if a trap was executed + during a shell assignment statement. + +ee. Fixed an off-by-one error when computing the number of positional + parameters for the ${@:0:n} expansion. + +ff. Fixed a problem with setting COMP_CWORD for programmable completion + functions that could leave it set to -1. + +gg. Fixed a bug that caused the ERR trap to be triggered in some cases where + `set -e' would not have caused the shell to exit. + +hh. Fixed a bug that caused changes made by `compopt' to not persist past the + completion function in which compopt was executed. + +ii. Fixed a bug that caused the list of hostname completions to not be cleared + when HOSTNAME was unset. + +jj. Fixed a bug that caused variable expansion in here documents to look in + any temporary environment. + +kk. Bash and readline can now convert file names between precomposed and + decomposed Unicode on Mac OS X ("keyboard" and file system forms, + respectively). This affects filename completion (using new + rl_filename_rewrite_hook), globbing, and readline redisplay. + +ll. The ERR and EXIT traps now see a non-zero value for $? when a parser + error after set -e has been enabled causes the shell to exit. + +mm. Fixed a bug that in brace expansion that caused zero-prefixed terms to + not contain the correct number of digits. + +nn. Fixed a bug that caused the shell to free non-allocated memory when + unsetting an associative array which had had a value implicitly assigned + to index "0". + +oo. Fixed a memory leak in the ${!prefix@} expansion. + +pp. Fixed a bug that caused printf to not correctly report all write errors. + +qq. Fixed a bug that caused single and double quotes to act as delimiters + when splitting a command line into words for programmable completion. + +rr. Fixed a bug that caused ** globbing that caused **/path/* to match every + directory, not just those matching `path'. + +ss. Fixed a bug that caused the shell to dump core when running `help' without + arguments if the terminal width was fewer than 7 characters. + +2. Changes to Readline + +a. The SIGWINCH signal handler now avoids calling the redisplay code if + one arrives while in the middle of redisplay. + +b. Changes to the timeout code to make sure that timeout values greater + than one second are handled better. + +c. Fixed a bug in the redisplay code that was triggered by a prompt + containing invisible characters exactly the width of the screen. + +d. Fixed a bug in the redisplay code encountered when running in horizontal + scroll mode. + +e. Fixed a bug that prevented menu completion from properly completing + filenames. + +f. Fixed a redisplay bug caused by a multibyte character causing a line to + wrap. + +g. Fixed a bug that caused key sequences of two characters to not be + recognized when a longer sequence identical in the first two characters + was bound. + +h. Fixed a bug that caused history expansion to be attempted on $'...' + single-quoted strings. + +i. Fixed a bug that caused incorrect redisplay when the prompt contained + multibyte characters in an `invisible' sequence bracketed by \[ and + \]. + +j. Fixed a bug that caused history expansion to short-circuit after + encountering a multibyte character. + +3. New Features in Bash + +a. Here-documents within $(...) command substitutions may once more be + delimited by the closing right paren, instead of requiring a newline. + +b. Bash's file status checks (executable, readable, etc.) now take file + system ACLs into account on file systems that support them. + +c. Bash now passes environment variables with names that are not valid + shell variable names through into the environment passed to child + processes. + +d. The `execute-unix-command' readline function now attempts to clear and + reuse the current line rather than move to a new one after the command + executes. + +e. `printf -v' can now assign values to array indices. + +f. New `complete -E' and `compopt -E' options that work on the "empty" + completion: completion attempted on an empty command line. + +g. New complete/compgen/compopt -D option to define a `default' completion: + a completion to be invoked on command for which no completion has been + defined. If this function returns 124, programmable completion is + attempted again, allowing a user to dynamically build a set of completions + as completion is attempted by having the default completion function + install individual completion functions each time it is invoked. + +h. When displaying associative arrays, subscripts are now quoted. + +i. Changes to dabbrev-expand to make it more `emacs-like': no space appended + after matches, completions are not sorted, and most recent history entries + are presented first. + +j. The [[ and (( commands are now subject to the setting of `set -e' and the + ERR trap. + +k. The source/. builtin now removes NUL bytes from the file before attempting + to parse commands. + +l. There is a new configuration option (in config-top.h) that forces bash to + forward all history entries to syslog. + +m. A new variable $BASHOPTS to export shell options settable using `shopt' to + child processes. + +n. There is a new confgure option that forces the extglob option to be + enabled by default. + +o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace + output to that file descriptor. + +p. If the optional left-hand-side of a redirection is of the form {var}, the + shell assigns the file descriptor used to $var or uses $var as the file + descriptor to move or close, depending on the redirection operator. + +q. The < and > operators to the [[ conditional command now do string + comparison according to the current locale. + +r. Programmable completion now uses the completion for `b' instead of `a' + when completion is attempted on a line like: a $(b c. + +s. Force extglob on temporarily when parsing the pattern argument to + the == and != operators to the [[ command, for compatibility. + +t. Changed the behavior of interrupting the wait builtin when a SIGCHLD is + received and a trap on SIGCHLD is set to be Posix-mode only. + +u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS + characters, ignoring delimiters like newline. + +4. New Features in Readline + +a. New bindable function: menu-complete-backward. + +b. In the vi insertion keymap, C-n is now bound to menu-complete by default, + and C-p to menu-complete-backward. + +c. When in vi command mode, repeatedly hitting ESC now does nothing, even + when ESC introduces a bound key sequence. This is closer to how + historical vi behaves. + +d. New bindable function: skip-csi-sequence. Can be used as a default to + consume key sequences generated by keys like Home and End without having + to bind all keys. + +e. New application-settable function: rl_filename_rewrite_hook. Can be used + to rewite or modify filenames read from the file system before they are + compared to the word to be completed. + +f. New bindable variable: skip-completed-text, active when completing in the + middle of a word. If enabled, it means that characters in the completion + that match characters in the remainder of the word are "skipped" rather + than inserted into the line. + +g. The pre-readline-6.0 version of menu completion is available as + "old-menu-complete" for users who do not like the readline-6.0 version. + +h. New bindable variable: echo-control-characters. If enabled, and the + tty ECHOCTL bit is set, controls the echoing of characters corresponding + to keyboard-generated signals. + +i. New bindable variable: enable-meta-key. Controls whether or not readline + sends the smm/rmm sequences if the terminal indicates it has a meta key + that enables eight-bit characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-release, +and the previous version, bash-4.0-rc1. + +1. Changes to Bash + +a. Changed the message printed when setlocale(3) fails to only include the + strerror error text if the call changes errno. + +b. Changed trap command execution to reset the line number before running a + trap (except DEBUG and RETURN traps). + +c. Fixed behavior of case-modifiying word expansions to not work on + individual words within a variable's value. + +d. Fixed a bug that caused mapfile to not be interruptible when run in an + interactive shell. + +e. Fixed a bug that caused mapfile to not run callbacks for the first line + read. + +f. Fixed a bug that caused mapfile to not honor EOF typed in an interactive + shell. + +g. Fixed the coprocess reaping code to not run straight from a signal handler. + +h. Fixed a bug that caused printf -b to ignore the first % conversion specifier + in the format string on 64-bit systems. + +i. Fixed a bug that caused incorrect word splitting when `:', `=', or `~' + appeared in $IFS. + +j. Fixed a bug that caused data corruption in the programmable completion code + when a shell function called from a completion aborted execution. + +k. Fixed a bug that caused the CPU usage reported by the `time' builtin to be + capped at 100%. + +l. Changed behavior of shell when -e option is in effect to reflect consensus + of Posix shell standardization working group. + +m. Fixed a bug introduced in bash-4.0-alpha that caused redirections to not + be displayed by `type' or `declare' when appearing in functions under + certain circumstances. + +2. Changes to Readline + +a. Fixed a bug that caused !(...) extended glob patterns to inhibit later + history expansion. + +b. Reworked the signal handling to avoid calling disallowed functions from a + signal handler. + +3. New Features in Bash + +a. `readarray' is now a synonym for `mapfile'. +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-rc1, +and the previous version, bash-4.0-beta2. + +1. Changes to Bash + +a. Fixed a bug that caused parsing errors when a $()-style command + substitution was follwed immediately by a quoted newline. + +b. Fixed a bug that caused extended shell globbing patterns beginning with + `*(' to not work when used with pattern substitution word expansions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-beta2, +and the previous version, bash-4.0-beta. + +1. Changes to Bash + +a. Fixed a bug that caused failed word expansions to set $? but not + PIPESTATUS. + +b. Changed filename completion to quote the tilde in a filename with a + leading tilde that exists in the current directory. + +c. Fixed a bug that caused a file descriptor leak when performing + redirections attached to a compound command. + +d. Fixed a bug that caused expansions of $@ and $* to not exit the shell if + the -u option was enabled and there were no posititional parameters. + +e. Fixed a bug that resulted in bash not terminating immediately if a + terminating signal was received while performing output. + +f. Fixed a bug that caused the shell to crash after creating 256 process + substitutions during word completion. + +2. Changes to Readline + +a. Fixed a bug that caused redisplay errors when using prompts with invisible + characters and numeric arguments to a command in a multibyte locale. + +b. Fixed a bug that caused redisplay errors when using prompts with invisible + characters spanning more than two physical screen lines. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-beta, +and the previous version, bash-4.0-alpha. + +1. Changes to Bash + +a. Fixed a typo that caused a variable to be used before initialization + while parsing Posix-style command substitutions. + +b. Fixed a bug that caused stray ^? when the expansion of a parameter used + as part of a pattern removal expansion is empty, but part of a non- + empty string. + +c. Fixed a bug that could cause strings not converted to numbers by strtol + to be treated as if the conversion had been successful. + +d. The `return' builtin now accepts no options and requires a `--' before + a negative return value, as Posix requires. + +e. Fixed a bug that caused local variables to be created with the empty + string for a value rather than no value. + +f. Changed behavior so the shell now acts as if it received an interrupt + when a pipeline is killed by SIGINT while executing a list. + +g. Fixed a bug that caused `declare var' and `typeset var' to initialize + `var' to the empty string. + +h. Changed `bind' builtin to print a warning but proceed if invoked when + line editing is not active. + +i. Fixed a bug that caused the shell to exit when the `errexit' option is + set and a command in a pipeline returns a non-zero exit status. + +j. Fixed a bug that caused the shell to not run the exit trap in a command + run with `bash -c' under some circumstances. + +k. Fixed a bug that caused parser errors to occasionally not set $? when + running commands with `eval'. + +l. Fixed a bug that caused stray control characters when evaluating compound + array assignments containing $'\x7f' escapes. + +m. Fixed a bug that caused redirections involving file descriptor 10 as the + target to behave incorrectly. + +n. Fixed a bug that could cause memory to be freed multiple times when + assigning to COMP_WORDBREAKS. + +o. Fixed a bug that could cause NULL pointer dereferences when COMP_WORDBREAKS + was unset. + +2. Changes to Readline + +3. New Features in Bash + +a. A value of 0 for the -t option to `read' now returns success if there is + input available to be read from the specified file descriptor. + +b. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged + mode. + +c. New bindable readline functions shell-forward-word and shell-backward-word, + which move forward and backward words delimited by shell metacharacters + and honor shell quoting. + +d. New bindable readline functions shell-backward-kill-word and shell-kill-word + which kill words backward and forward, but use the same word boundaries + as shell-forward-word and shell-backward-word. + +4. New Features in Readline + +a. If the kernel supports it, readline displays special characters + corresponding to a keyboard-generated signal when the signal is received. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-alpha, +and the previous version, bash-3.2-release. + +1. Changes to Bash + +a. Fixed several bugs in old-style `` command substitution parsing, including + comment parsing and quoted string handling. + +b. Fixed problems parsing arguments to the [[ command's =~ regular expression + matching operator: metacharacter and whitespace parsing. + +c. Fixed a bug that caused the shell to inappropriately reuse high-numbered + file descriptors it used internally. + +d. Fixed a bug in pattern replacement word expansions that caused a `/' as + the first character of an expanded pattern to be mistaken for a global + replacement specifier. + +e. Fixed several problems with the asprintf and snprintf replacement functions + that caused hangs and crashes. + +f. Fixed a bug in the calculation of the current and previous job that caused + it to refer to incorrect jobs. + +g. Fixed a bug in the check for the validity of a hashed command pathname that + caused unnecessary hash table deletions and additions. + +h. Fixed a bug that caused child processes to inherit the wrong value for $!. + +i. Fixed a bug that caused `.' to fail to read and execute commands from non- + regular files such as devices or named pipes. + +j. Fixed a bug in printf formatting for the %x and %X expansions that occurred + on some systems. + +k. Fixed a bug that caused the shell to crash when creating temporary files if + $TMPDIR named a non-writable directory. + +l. Fixed a bug that caused the shell to ignore $TMPDIR when creating temporary + files under some circumstances. + +m. Fixed a bug that caused named pipes created by process substitution to not + be cleaned up. + +n. Fixed a bug that caused HISTTIMEFORMAT to not be honored when it appeared + in the initial shell environment. + +o. Fixed several bugs in the expansion of $* and $@ (quoted and unquoted) + when IFS is null or contains non-whitespace characters; the same changes + apply to arrays subscripted with * or @. + +p. Fixed several problems with pattern substitution expansions on the + positional parameters and arrays subscripted with * or @ that occurred + when $IFS was set to the empty string. + +q. Made a change to the default locale initialization code that should + result in better behavior from the locale-aware library functions. + +r. Fixed a bug that caused compacting the jobs list to drop jobs. + +s. Fixed a bug that caused jumps back to the top-level processing loop from + a builtin command to leave the shell in an inconsistent state. + +t. Fixed a bug that caused characters that would be escaped internally to be + doubled when escaped with a backslash. + +u. Fixed the initialization of mailboxes to not cause maildirs to be read + (and stat(2) called for every message file) at shell startup. + +v. Fixed a bug that caused the shell to not display $PS2 when the read builtin + reads a line continued with a backslash. + +w. Fixed a bug that caused errors in word splitting when $IFS contained + characters used for internal quoting. + +x. Fixed bugs that caused problems with output from shell builtins not being + completely displayed on some systems. + +y. Fixed a bug that caused output to be lost when a redirection is acting on + the shell's output file descriptor. + +z. Fixed bugs caused by shell builtins not checking for all write errors. + +aa. Fixed a problem that caused the shell to dump core if expansions on the + pattern passed to the pattern removal word expansions resulted in expansion + errors. + +bb. Fixed a bug that caused bash to loop infinitely after creating and + waiting for 4096 jobs. + +cc. Fixed a bug that caused bash to lose the status of a background job under + certain circumstances. + +dd. Fixed a bug that caused bash to not look in the temporary environment + when performing variable lookup under certain circumstances. + +ee. Fixed a bug that caused bash to close file descriptors greater than 10 + when they were used in redirections. + +ff. Fixed a problem that caused the shell to attempt to read from the standard + input when called as `bash -i script'. + +gg. Fixed a memory leak and variable initialization problems when the -v option + was supplied to `printf' that could cause incorrect results. + +hh. Fixed a bug that caused the `read' builtin to count bytes when the -n option + was supplied, rather than (possibly multibyte) characters. + +ii. Fixed a bug when displaying a function due to not converting the function + to an external form. + +jj. Changed job control initialization to ensure that the shell has a tty + as its controlling terminal before enabling job control. + +kk. Fixed a bug with the `test' builtin that caused it to misinterpret + arguments beginning with `-' but containing more than one character. + +ll. Fixed bug that could cause the shell to dump core in certain cases where + a command sets the SIGINT disposition to the default. + +mm. Fixed a bug in the pattern replacement (affecting both word expansion + and the `fc' builtin) that occurred when the pattern and replacement + strings were empty. + +nn. Fixed a bug that caused an arithmetic evaluation error to disable all + further evaluation. + +oo. Fixed a bug in pathname expansion that caused it to interpret backslashes + in the pathname as quoting characters. + +pp. Fixed a bug in the replacement getcwd() implementation that could cause + memory to be overwritten. + +qq. When in Posix mode, the `ulimit' builtin now uses a block size of 512 for + the `-c' and `-f' options. + +rr. Brace expansion now allows process substitutions to pass through unchanged. + +ss. Fixed a problem in the command name completion code to avoid quoting + escaped special characters twice when the command name begins with a tilde. + +tt. Fixed a problem in the printf builtin that resulted in single-byte + output for the "'" escape, even when using multibyte characters. + +uu. Fixed a bug that caused the failure exit status to be lost when redirections + attached to a compound command failed. + +vv. Fixed a bug that caused the internal random number generator to not be + re-seeded correctly when creating a subshell. + +ww. Fixed a bug that could cause the bash replacement getcwd to overwrite + memory. + +xx. Fixed a bug that caused the shell to not receive SIGINT if it was sent + while the shell was waiting for a command substitution to terminate, and + make sure the exit status is correct when it does. + +yy. Fixed a bug that resulted in the second and subsequent children spawned + by a shell begun to run a command substitution being placed into the + wrong process group. + +zz. Fixed a bug that caused the results of successful tilde expansion to be + subject to pathname expansion and word splitting. + +aaa. Fixed a bug that could cause the shell to hang if it encountered an + error that caused it to jump back to the top processing loop during a + command substitution or `eval' command. + +bbb. Fixed a bug that caused the `read' builtin to use the tty's attributes + instead of those of the file descriptor passed with the -u option when + processing the -n and -d options. + +ccc. Fixed a bug that caused incorrect expansion of ${array[@]:foo} if the + first character of $IFS was not whitespace. + +ddd. Fixed a bug that occurred when scanning for the ending delimiter of a + ${parameter/pat/sub} expansion. + +eee. Fixed a bug that caused the shell to inappropriately expand command + substitutions in words when expanding directory names for completion. + +fff. Fixed a bug that caused the `fc' builtin to look too far back in the + history list under certain circumstances. + +ggg. Fixed a bug that caused a shell running in Posix mode to search $PWD for + a file specified as an argument to source/. when the file was not found + in $PATH. + +hhh. Fixed a bug that caused the shell to modify the case of a command word + found via command completion when the shell was performing case- + insensitive completion. + +iii. Fixed a bug that caused the shell to search $PATH for an argument to + source/. even when it contained a `/'. + +jjj. Fixed a bug that caused brace expansion to misorder expansions when the + locale did not have a collating order like aAbBcC...zZ. + +kkk. Fixed a bug that did not allow `set +o history' to have any effect when + run in a startup file or from a sourced file. + +lll. Fixed a bug with the precedence of the ?: conditional arithmetic operator. + +mmm. Fixed a bug that caused side effects of temporary variable assignments + to persist in the shell environment. + +nnn. Fixed a bug that caused the terminal to be left in non-canonical mode + when using editing commands that invoke the an editor on the current + command line. + +ooo. Fixed a bug that caused globbing characters and characters in $IFS to not + be quoted appropriately when displaying assignment statements. + +ppp. Fixed a bug that caused the `-e' option to be inherited when sourcing a + file or evaluating a command with `eval' even if the return value of the + command was supposed to be ignored. + +qqq. Fixed a bug that caused the shell to attempt to created variables with + invalid names if such names appeared in the initial environment. + +rrr. Fixed a bug with quote removal in strings where the final character is a + backslash. + +sss. Fixed a bug that caused the effects of special variables to persist even + when the variables were unset as part of the shell reinitializing itself + to execute a shell script. + +ttt. Fixed a bug that caused the history to not be saved after `history -c' or + `history -d' was executed until a sufficient number of commands had been + saved to the history. + +uuu. Bash now parses command substitutions according to Posix rules: parsing + the command contained in $() to find the closing delimiter. + +vvv. Fixed a bug that caused traps on SIGCHLD set in a SIGCHLD handler to + not persist. + +www. Fixed a bug that didn't allow SIGCHLD to interrupt the `wait' builtin + as Posix specifies. + +xxx. Invalid numeric arguments to shell builtins no longer cause the shell to + short-circuit any executing compound command. + +yyy. Fixed a bug that caused the exit status to be lost when `break' was + used to short-circuit a loop's execution. + +zzz. Fixed a bug that caused stray ^? characters to be left in expansions of + "${array[*]}". + +aaaa. Bash now prints better error messages for here documents terminated by + EOF and for identifying the incorrect token in an invalid arithmetic + expression. + +bbbb. Fixed a bug in the variable length word expansion that caused it to + incorrectly calculate the number of multibyte characters. + +cccc. Fixed a race condition that could result in the top-level shell setting + the terminal's process group to an incorrect value if the process + group was changed by a child of a child of the shell. + +dddd. Fixed a bug that caused here documents belonging to commands within a + compound command to be displayed in a syntactially-incorrect form, which + prevented them from being re-read as input. + +eeee. The shell displays more warnings about failures to set the locale. + +ffff. Fixed a bug that caused the body of a here-document to not be saved to + the history list. + +gggg. Fixed a bug that caused configure to incorrectly conclude that FreeBSD + had /dev/fd available, resulting in problems with process substitution. + +2. Changes to Readline + +a. Fixed a number of redisplay errors in environments supporting multibyte + characters. + +b. Fixed bugs in vi command mode that caused motion commands to inappropriately + set the mark. + +c. When using the arrow keys in vi insertion mode, readline allows movement + beyond the current end of the line (unlike command mode). + +d. Fixed bugs that caused readline to loop when the terminal has been taken + away and reads return -1/EIO. + +e. Fixed bugs in redisplay occurring when displaying prompts containing + invisible characters. + +f. Fixed a bug that caused the completion append character to not be reset to + the default after an application-specified completion function changed it. + +g. Fixed a problem that caused incorrect positioning of the cursor while in + emacs editing mode when moving forward at the end of a line while using + a locale supporting multibyte characters. + +h. Fixed an off-by-one error that caused readline to drop every 511th + character of buffered input. + +i. Fixed a bug that resulted in SIGTERM not being caught or cleaned up. + +j. Fixed redisplay bugs caused by multiline prompts with invisible characters + or no characters following the final newline. + +k. Fixed redisplay bug caused by prompts consisting solely of invisible + characters. + +l. Fixed a bug in the code that buffers characters received very quickly in + succession which caused characters to be dropped. + +m. Fixed a bug that caused readline to reference uninitialized data structures + if it received a SIGWINCH before completing initialzation. + +n. Fixed a bug that caused the vi-mode `last command' to be set incorrectly + and therefore unrepeatable. + +o. Fixed a bug that caused readline to disable echoing when it was being used + with an output file descriptor that was not a terminal. + +p. Readline now blocks SIGINT while manipulating internal data structures + during redisplay. + +q. Fixed a bug in redisplay that caused readline to segfault when pasting a + very long line (over 130,000 characters). + +r. Fixed bugs in redisplay when using prompts with no visible printing + characters. + +3. New Features in Bash + +a. When using substring expansion on the positional parameters, a starting + index of 0 now causes $0 to be prefixed to the list. + +b. The `help' builtin now prints its columns with entries sorted vertically + rather than horizontally. + +c. There is a new variable, $BASHPID, which always returns the process id of + the current shell. + +d. There is a new `autocd' option that, when enabled, causes bash to attempt + to `cd' to a directory name that is supplied as the first word of a + simple command. + +e. There is a new `checkjobs' option that causes the shell to check for and + report any running or stopped jobs at exit. + +f. The programmable completion code exports a new COMP_TYPE variable, set to + a character describing the type of completion being attempted. + +g. The programmable completion code exports a new COMP_KEY variable, set to + the character that caused the completion to be invoked (e.g., TAB). + +h. If creation of a child process fails due to insufficient resources, bash + will try again several times before reporting failure. + +i. The programmable completion code now uses the same set of characters as + readline when breaking the command line into a list of words. + +j. The block multiplier for the ulimit -c and -f options is now 512 when in + Posix mode, as Posix specifies. + +k. Changed the behavior of the read builtin to save any partial input received + in the specified variable when the read builtin times out. This also + results in variables specified as arguments to read to be set to the empty + string when there is no input available. When the read builtin times out, + it returns an exit status greater than 128. + +l. The shell now has the notion of a `compatibility level', controlled by + new variables settable by `shopt'. Setting this variable currently + restores the bash-3.1 behavior when processing quoted strings on the rhs + of the `=~' operator to the `[[' command. + +m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number + of threads) options. + +n. The -p option to `declare' now displays all variable values and attributes + (or function values and attributes if used with -f). + +o. There is a new `compopt' builtin that allows completion functions to modify + completion options for existing completions or the completion currently + being executed. + +p. The `read' builtin has a new -i option which inserts text into the reply + buffer when using readline. + +q. A new `-E' option to the complete builtin allows control of the default + behavior for completion on an empty line. + +r. There is now limited support for completing command name words containing + globbing characters. + +s. Changed format of internal help documentation for all builtins to roughly + follow man page format. + +t. The `help' builtin now has a new -d option, to display a short description, + and a -m option, to print help information in a man page-like format. + +u. There is a new `mapfile' builtin to populate an array with lines from a + given file. + +v. If a command is not found, the shell attempts to execute a shell function + named `command_not_found_handle', supplying the command words as the + function arguments. + +w. There is a new shell option: `globstar'. When enabled, the globbing code + treats `**' specially -- it matches all directories (and files within + them, when appropriate) recursively. + +x. There is a new shell option: `dirspell'. When enabled, the filename + completion code performs spelling correction on directory names during + completion. + +y. The `-t' option to the `read' builtin now supports fractional timeout + values. + +z. Brace expansion now allows zero-padding of expanded numeric values and + will add the proper number of zeroes to make sure all values contain the + same number of digits. + +aa. There is a new bash-specific bindable readline function: `dabbrev-expand'. + It uses menu completion on a set of words taken from the history list. + +bb. The command assigned to a key sequence with `bind -x' now sets two new + variables in the environment of the executed command: READLINE_LINE_BUFFER + and READLINE_POINT. The command can change the current readline line + and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, + respectively. + +cc. There is a new &>> redirection operator, which appends the standard output + and standard error to the named file. + +dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects + the standard error for a command through a pipe. + +ee. The new `;&' case statement action list terminator causes execution to + continue with the action associated with the next pattern in the + statement rather than terminating the command. + +ff. The new `;;&' case statement action list terminator causes the shell to + test the next set of patterns after completing execution of the current + action, rather than terminating the command. + +gg. The shell understands a new variable: PROMPT_DIRTRIM. When set to an + integer value greater than zero, prompt expansion of \w and \W will + retain only that number of trailing pathname components and replace + the intervening characters with `...'. + +hh. There are new case-modifying word expansions: uppercase (^[^]) and + lowercase (,[,]). They can work on either the first character or + array element, or globally. They accept an optional shell pattern + that determines which characters to modify. There is an optionally- + configured feature to include capitalization operators. + +ii. The shell provides associative array variables, with the appropriate + support to create, delete, assign values to, and expand them. + +jj. The `declare' builtin now has new -l (convert value to lowercase upon + assignment) and -u (convert value to uppercase upon assignment) options. + There is an optionally-configurable -c option to capitalize a value at + assignment. + +kk. There is a new `coproc' reserved word that specifies a coprocess: an + asynchronous command run with two pipes connected to the creating shell. + Coprocs can be named. The input and output file descriptors and the + PID of the coprocess are available to the calling shell in variables + with coproc-specific names. + +4. New Features in Readline + +a. A new variable, rl_sort_completion_matches; allows applications to inhibit + match list sorting (but beware: some things don't work right if + applications do this). + +b. A new variable, rl_completion_invoking_key; allows applications to discover + the key that invoked rl_complete or rl_menu_complete. + +c. The functions rl_block_sigint and rl_release_sigint are now public and + available to calling applications who want to protect critical sections + (like redisplay). + +d. The functions rl_save_state and rl_restore_state are now public and + available to calling applications; documented rest of readline's state + flag values. + +e. A new user-settable variable, `history-size', allows setting the maximum + number of entries in the history list. + +f. There is a new implementation of menu completion, with several improvements + over the old; the most notable improvement is a better `completions + browsing' mode. + +g. The menu completion code now uses the rl_menu_completion_entry_function + variable, allowing applications to provide their own menu completion + generators. + +h. There is support for replacing a prefix of a pathname with a `...' when + displaying possible completions. This is controllable by setting the + `completion-prefix-display-length' variable. Matches with a common prefix + longer than this value have the common prefix replaced with `...'. + +i. There is a new `revert-all-at-newline' variable. If enabled, readline will + undo all outstanding changes to all history lines when `accept-line' is + executed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-release, +and the previous version, bash-3.2-beta. + +1. Changes to Bash + +a. Fixed a bug that caused the temporary environment passed to a command to + affect the shell's environment under certain circumstances. + +b. Fixed a bug in the printf builtin that caused the %q format specifier to + ignore empty string arguments. + +c. Improved multibyte character environment detection at configuration time. + +d. Fixed a bug in the read builtin that left spurious escape characters in the + input after processing backslashes when assigning to an array variable. + +2. Changes to Readline + +a. Fixed a redisplay bug that occurred in multibyte-capable locales when the + prompt was one character longer than the screen width. +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-beta, +and the previous version, bash-3.2-alpha. + +1. Changes to Bash + +a. Changed the lexical analyzer to treat locale-specific blank characters as + white space. + +b. Fixed a bug in command printing to avoid confusion between redirections and + process substitution. + +c. Fixed problems with cross-compiling originating from inherited environment + variables. + +d. Added write error reporting to printf builtin. + +e. Fixed a bug in the variable expansion code that could cause a core dump in + a multi-byte locale. + +f. Fixed a bug that caused substring expansion of a null string to return + incorrect results. + +g. BASH_COMMAND now retains its previous value while executing commands as the + result of a trap, as the documentation states. + +2. Changes to Readline + +a. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing + the prompt and input line multiple times. + +b. Fixed history expansion to not be confused by here-string redirection. + +c. Readline no longer treats read errors by converting them to newlines, as + it does with EOF. This caused partial lines to be returned from readline(). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-alpha, +and the previous version, bash-3.1-release. + +1. Changes to Bash + +a. Fixed a source bug that caused the minimal configuration to not compile. + +b. Fixed memory leaks in error handling for the `read' builtin. + +c. Changed the [[ and (( compound commands to set PIPESTATUS with their exit + status. + +d. Fixed some parsing problems with compound array assignments. + +e. Added additional configuration changes for: NetBSD (incomplete multibyte + character support) + +f. Fixed two bugs with local array variable creation when shadowing a variable + of the same name from a previous context. + +g. Fixed the `read' builtin to restore the correct set of completion functions + if a timeout occurs. + +h. Added code to defer the initialization of HISTSIZE (and its stifling of the + history list) until the history file is loaded, allowing a startup file to + override the default value. + +i. Tightened up the arithmetic expression parsing to produce better error + messages when presented with invalid operators. + +j. Fixed the cross-compilation support to build the signal list at shell + invocation rather than compile time if cross-compiling. + +k. Fixed multibyte support for non-gcc compilers (or compilers that do not + allow automatic array variable sizing based on a non-constant value). + +l. Several fixes to the code that manages the list of terminated jobs and + their exit statuses, and the list of active and recently-terminated jobs + to avoid pid aliasing/wraparound and allocation errors. + +m. Fixed a problem that allowed scripts to die due to SIGINT while waiting + for children, even when started in the background or otherwise ignoring + SIGINT. + +n. Fixed a bug that caused shells invoked as -/bin/bash from not being + recognized as login shells. + +o. Fixed a problem that caused shells in the background to give the terminal + to a process group other than the foreground shell process group. + +p. Fixed a problem with extracting the `varname' in ${#varname}. + +q. Fixed the code that handles SIGQUIT to not exit immediately -- thereby + calling functions that may not be called in a signal handler context -- + but set a flag and exit afterward (like SIGINT). + +r. Changed the brace expansion code to skip over braces that don't begin a + valid matched brace expansion construct. + +s. Fixed `typeset' and `declare' to not require that their shell function + operands to be valid shell identifiers. + +t. Changed `test' to use access(2) with a temporary uid/euid swap when testing + file attributes and running setuid, and access(2) in most other cases. + +u. Changed completion code to not attempt command name completion on a line + consisting solely of whitespace when no_empty_command_completion is set. + +v. The `hash' builtin now prints nothing in posix mode when the hash table is + empty, and prints a message to that effect to stdout instead of stderr + when not in posix mode. + +w. Fixed a bug in the extended pattern matching code that caused it to fail to + match periods with certain patterns. + +x. Fixed a bug that caused the shell to dump core when performing filename + generation in directories with thousands of files. + +y. Returned to the original Bourne shell rules for parsing ``: no recursive + parsing of embedded quoted strings or ${...} constructs. + +z. The inheritence of the DEBUG, RETURN, and ERR traps is now dependent only + on the settings of the `functrace' and `errtrace' shell options, rather + than whether or not the shell is in debugging mode. + +aa. Fixed a problem with $HOME being converted to ~ in the expansion of + members of the DIRSTACK array. + +bb. Fixed a problem with quoted arguments to arithmetic expansions in certain + constructs. + +cc. The command word completion code now no longer returns matching directories + while searching $PATH. + +dd. Fixed a bug with zero-padding and precision handling in snprintf() + replacement. + +ee. Fixed a bug that caused the command substitution code not to take embedded + shell comments into account. + +ff. Fixed a bug that caused $((...);(...)) to be misinterpreted as an + arithmetic substitution. + +gg. Fixed a bug in the prompt expansion code that inappropriately added a + \001 before a \002 under certain circumstances. + +hh. Fixed a bug that caused `unset LANG' to not properly reset the locale + (previous versions would set the locale back to what it was when bash + was started rather than the system's "native" locale). + +ii. Fixed a bug that could cause file descriptors > 10 to not be closed even + when closed explicitly by a script. + +jj. Fixed a bug that caused single quotes to be stripped from ANSI-C quoting + inside double-quoted command substitutions. + +kk. Fixed a bug that could cause core dumps when `return' was executed as the + last element of a pipeline inside a shell function. + +ll. Fixed a bug that caused DEBUG trap strings to overwrite commands stored in + the jobs list. + +2. Changes to Readline + +a. Fixed a problem that caused segmentation faults when using readline in + callback mode and typing consecutive DEL characters on an empty line. + +b. Fixed several redisplay problems with multibyte characters, all having to + do with the different code paths and variable meanings between single-byte + and multibyte character redisplay. + +c. Fixed a problem with key sequence translation when presented with the + sequence \M-\C-x. + +d. Fixed a problem that prevented the `a' command in vi mode from being + undone and redone properly. + +e. Fixed a problem that prevented empty inserts in vi mode from being undone + properly. + +f. Fixed a problem that caused readline to initialize with an incorrect idea + of whether or not the terminal can autowrap. + +g. Fixed output of key bindings (like bash `bind -p') to honor the setting of + convert-meta and use \e where appropriate. + +h. Changed the default filename completion function to call the filename + dequoting function if the directory completion hook isn't set. This means + that any directory completion hooks need to dequote the directory name, + since application-specific hooks need to know how the word was quoted, + even if no other changes are made. + +i. Fixed a bug with creating the prompt for a non-interactive search string + when there are non-printing characters in the primary prompt. + +j. Fixed a bug that caused prompts with invisible characters to be redrawn + multiple times in a multibyte locale. + +k. Fixed a bug that could cause the key sequence scanning code to return the + wrong function. + +l. Fixed a problem with the callback interface that caused it to fail when + using multi-character keyboard macros. + +m. Fixed a bug that could cause a core dump when an edited history entry was + re-executed under certain conditions. + +n. Fixed a bug that caused readline to reference freed memory when attmpting + to display a portion of the prompt. + +3. New Features in Bash + +a. Changed the parameter pattern replacement functions to not anchor the + pattern at the beginning of the string if doing global replacement - that + combination doesn't make any sense. + +b. When running in `word expansion only' mode (--wordexp option), inhibit + process substitution. + +c. Loadable builtins now work on MacOS X 10.[34]. + +d. Shells running in posix mode no longer set $HOME, as POSIX requires. + +e. The code that checks for binary files being executed as shell scripts now + checks only for NUL rather than any non-printing character. + +f. Quoting the string argument to the [[ command's =~ operator now forces + string matching, as with the other pattern-matching operators. + +4. New Features in Readline + +a. Calling applications can now set the keyboard timeout to 0, allowing + poll-like behavior. + +b. The value of SYS_INPUTRC (configurable at compilation time) is now used as + the default last-ditch startup file. + +c. The history file reading functions now allow windows-like \r\n line + terminators. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-release, +and the previous version, bash-3.1-rc2. + +1. Changes to Readline + +a. Several changes to the multibyte redisplay code to fix problems with + prompts containing invisible characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-rc2, +and the previous version, bash-3.1-rc1. + +1. Changes to Bash + +a. Fixed a bug that caused a DEBUG trap to overwrite a command string that's + eventually attached to a background job. + +b. Changed some code so that filenames with leading tildes with spaces in the + name aren't tilde-expanded by the bash completion code. + +c. Fixed a bug that caused the pushd builtin to fail to change to + directories with leading `-'. + +d. Fixed a small memory leak in the programmable completion code. + +2. Changes to Readline + +a. Fixed a redisplay bug caused by moving the cursor vertically to a line + with invisible characters in the prompt in a multibyte locale. + +b. Fixed a bug that could cause the terminal special chars to be bound in the + wrong keymap in vi mode. + +3. New Features in Bash + +a. If compiled for strict POSIX conformance, LINES and COLUMNS may now + override the true terminal size. + +4. New Features in Readline + +a. A new external application-controllable variable that allows the LINES + and COLUMNS environment variables to set the window size regardless of + what the kernel returns. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-rc1, +and the previous version, bash-3.1-beta1. + +1. Changes to Bash + +a. Fixed a bug that could cause core dumps due to accessing the current + pipeline while in the middle of modifying it. + +b. Fixed a bug that caused pathnames with backslashes still quoting characters + to be passed to opendir(). + +c. Command word completion now obeys the setting of completion-ignore-case. + +d. Fixed a problem with redirection that caused file descriptors greater than + 2 to be inappropriately marked as close-on-exec. + +e. In Posix mode, after `wait' is called to wait for a particular process + explicitly, that process is removed from the list of processes known to + the shell, and subsequent attempts to wait for it return errors. + +f. Fixed a bug that caused extended pattern matching to incorrectly scan + backslash-escaped pattern characters. + +g. Fixed a synchronization problem that could cause core dumps when handling + a SIGWINCH. + +h. Fixed a bug that caused an unmatched backquote to be accepted without an + error when processing here documents. + +i. Fixed a small memory leak in the `cd' builtin. + +j. Fix for MacOS X so it gets the values for the HOSTTYPE, MACHTYPE, and + OSTYPE variables at build time, to support universal binaries. + +k. Fixed a bug that could cause an exit trap to return the exit status of + the trap command rather than the status as it was before the trap was + run as the shell's exit status. + +2. New Features in Bash + +3. Changes to Readline + +a. Fixed a bug that caused reversing the incremental search direction to + not work correctly. + +b. Fixed the vi-mode `U' command to only undo up to the first time insert mode + was entered, as Posix specifies. + +c. Fixed a bug in the vi-mode `r' command that left the cursor in the wrong + place. + +4. New Features in Readline + +a. New application-callable auxiliary function, rl_variable_value, returns + a string corresponding to a readline variable's value. + +b. When parsing inputrc files and variable binding commands, the parser + strips trailing whitespace from values assigned to boolean variables + before checking them. + + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-beta1, +and the previous version, bash-3.1-alpha1. + +1. Changes to Bash + +a. Added some system-specific signal names. + +b. Fixed a typo in the ulimit builtin to make `x' the right option to + maniuplate the limit on file locks. + +c. Fixed a problem with using += to append to index 0 of an array variable + when not using subscript syntax. + +d. A few changes to configure.in to remove calls to obsolete or outdated + macros. + +e. Make sure changes to variables bash handles specially (e.g., LC_ALL) are + made when the variable is set in the temporary environment to a command. + +f. Make sure changes to variables bash handles specially (e.g., LC_ALL) are + made when the variable is modified using `printf -v'. + +g. The export environment is now remade on cygwin when HOME is changed, so + DLLs bash is linked against pick up the new value. This fixes problems + with tilde expansion when linking against and already-installed readline. + +h. Small fix to the logic for performing tilde expansion in posix mode, so + expansion on the right-hand side of an assignment statement takes place. + +i. Fixed a bug that prevented redirections associated with a shell function + from being executed when in a subshell. + +j. Fixed `source' and `.' builtins to not require an executable file when + searching $PATH for a file to source. + +k. Fixed a bug that caused incorrect word splitting in a function when IFS + was declared local, then unset. + +l. Fixed a problem with the `kill' builtin that prevented sending signals + to a process group under certain circumstances when providing a pid < 0. + +m. When in POSIX mode, `pwd' now checks that the value it prints is the same + directory as `.', even when displaying $PWD. + +n. Fixed a problem with the `read' builtin when reading a script from standard + input and reading data from the same file. + +o. Fixed a problem with the `type' and `command' builtins that caused absolute + pathnames to be displayed incorrectly. + +p. Some changes to the `bg' builtin for POSIX conformance. + +q. The `fc' builtin now removes the `fc' command that caused it to invoke an + editor on specified history entries from the history entirely, rather than + simply ignoring it. + +r. When in POSIX mode, the `v' command in vi editing mode simply invokes vi + on the current command, rather than checking $FCEDIT and $EDITOR. + +s. Fixed a small memory leak in the pathname canonicalization code. + +t. Fixed a bug that caused the expanded value of a $'...' string to be + incorrectly re-quoted if it occurred within a double-quoted ${...} + parameter expansion. + +u. Restored default emacs-mode key binding of M-TAB to dynamic-complete-history. + +v. Fixed a bug that caused core dumps when interrupting loops running builtins + on some systems. + +w. Make sure that some of the functions bash provides replacements for are + not cpp defines. + +x. The code that scans embedded commands for the parser (`...` and $(...)) is + now more aware of embedded comments and their effect on quoted strings. + +y. Changed the `-n' option to the `history' builtin to not reset the number of + history lines read in the current session after reading the new lines from + the history file if the history is being appended when it is written to + the file, since the appending takes care of the problem that the adjustment + was intended to solve. + +z. Improved the error message displayed when a shell script fails to execute + because the environment and size of command line arguments are too large. + +aa. A small fix to make sure that $HISTCMD is evaluated whenever the shell is + saving commands to the history list, not just when HISTSIZE is defined. + +2. Changes to Readline + +a. The `change-case' command now correctly changes the case of multibyte + characters. + +b. Changes to the shared library construction scripts to deal with Windows + DLL naming conventions for Cygwin. + +c. Fixed the redisplay code to avoid core dumps resulting from a poorly-timed + SIGWINCH. + +d. Fixed the non-incremental search code in vi mode to dispose of any current + undo list when copying a line from the history into the current editing + buffer. + +e. The variable assignment code now ignores whitespace at the end of lines + when assigning to boolean variables. + +f. The `C-w' binding in incremental search now understands multibyte + characters. + +3. New Features in Bash + +a. A new configuration option, `--enable-strict-posix-default', which will + build bash to be POSIX conforming by default. + +4. New Features in Readline + +a. If the rl_completion_query_items is set to a value < 0, readline never + asks the user whether or not to view the possible completions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-alpha1, +and the previous version, bash-3.0-release. + +1. Changes to Bash + +a. Fixed a bug that caused bash to crash if referencing an unset local array. + +b. Fixed a problem that caused tilde expansion to not be performed before + attempting globbing word completion. + +c. Fixed an incompatibility so that a first argument to trap that's a valid + signal number will be trated as a signal rather than a command to execute. + +d. Fixed ${#word} expansion to correctly compute the length of a string + containing multibyte characters. + +e. Fixed a bug that caused bash to not pass the correct flags for signal + disposition to child processes. + +f. Fixed a bug that caused `fc -l' to list one too many history entries. + +g. Some fixes to `fc' for POSIX conformance. + +h. Some fixes to job status display for POSIX conformance. + +i. Fixed a bug that caused `command -v' to display output if a command was not + found -- it should be silent. + +j. In POSIX mode, `type' and `command -[vV]' do not report non-executable + files, even if the shell will attempt to execute them. + +k. Fixed a bug that caused the `==' operator to the [[ command to not attempt + extended pattern matching. + +l. Fixed the brace expansion code to handle characters whose value exceeds 128. + +m. Fixed `printf' to handle strings with a leading `\0' whose length is + non-zero. + +n. Fixed a couple of problems with brace expansion where `${' was handled + incorrectly. + +o. Fixed off-by-one error when calculating the upper bound of `offset' when + processing the ${array[@]:offset:length} expansion. + +p. System-specific configuration changes for: FreeBSD 5.x, Interix, MacOS X + 10.4, Linux 2.4+ kernels, Linux 3.x kernels, Dragonfly BSD, QNX 6.x, + Cygwin + +q. Fixed a bug that caused the shell to ignore the status of the rightmost + command in a pipeline when the `pipefail' option was enabled. + +r. Fixed a completion bug that caused core dumps when expanding a directory + name. + +s. Fixed a bug that prevented `hash -d' from removing commands from the hash + table. + +t. Fixed word splitting to avoid really bad quadratic performance when + expanding long lists. + +u. Fixed a bug that caused negative offsets in substring expansion to use the + wrong values. + +v. Fixed a bug in printf that caused it to not return failure on write errors. + +w. Fixed a bug that caused commands in subshells to not be properly timed. + +x. The shell parser no longer attempts to parse a compound assignment specially + unless in a position where an assignment statement is acceptable or parsing + arguments to a builtin that accepts assignment statements. + +y. Fixed a problem that caused a `case' statement to be added to the history + incorrectly as a single command if the `case word' was on one line and the + `in' on another. + +z. Fixed a problem that caused internal shell quoting characters to be + incorrectly quoted with backslashes under some circumstances. + +aa. The shell now performs correct word splitting when IFS contains multibyte + characters. + +bb. The mail checking code now resets the cached file information if the size + drops to 0, even if the times don't change. + +cc. A completed command name that is found in $PATH as well as the name of a + directory in the current directory no longer has a slash appended in certain + circumstances: a single instance found in $PATH when `.' is not in $PATH, + and multiple instances found in $PATH, even when `.' is in $PATH. + +dd. Incorporated tilde expansion into the word expansion code rather than as a + separately-called function, fixing some cases where it was performed + inappropriately (e.g., after the second `=' in an assignment statement or + in a double-quoted parameter expansion). + +ee. Fixed several bugs encountered when parsing compound assignment statements, + so that compound assignments appearing as arguments to builtins are no + longer double-expanded. + +ff. Fixed a bug in the command execution code that caused asynchronous commands + containing command substitutions to not put the terminal in the wrong + process group. + +gg. Bash now handles the case where the WCONTINUED flag causes waitpid() to + return -1/EINVAL at runtime as well as configuration time. + +hh. Fixed parser to generate an error when the pipeline `argument' to `!' or + `time' is NULL. + +ii. The shell now takes a little more care when manipulating file descriptors + greater than 9 with the `exec' builtin. + +jj. Fixed a bug that caused variable assignments preceding the `command' builtin + preceding a special builtin to be preserved after the command completed in + POSIX mode. + +kk. Fixed a bug that allowed variables beginning with a digit to be created. + +ll. Fixed a bug that caused a \<newline> to be removed when parsing a $'...' + construct. + +mm. A shell whose name begins with `-' will now be a restricted shell if the + remainder of the name indicates it should be restricted. + +nn. Fixed a bug that could cause a core dump if FUNCNAME were changed or unset + during a function's execution. + +oo. Fixed a bug that caused executing a `return' in a function to not execute + a RETURN trap. The RETURN trap is inherited by shell functions only if + function tracing is globally enabled or has been enabled for that function. + +pp. Fixed cases where var[@] was not handled exactly like var, when var is a + scalar variable. + +qq. Fixed a bug that caused the first character after a SIGINT to be discarded + under certain circumstances. + +rr. Fixed exit status code so that a suspended job returns 128+signal as its + exit status (preventing commands after it in `&&' lists from being + executed). + +ss. Fixed a bug that caused the shell parser state to be changed by executing + a shell function as a result of word completion. + +tt. Fixed a long-standing bug that caused '\177' characters in variable + values to be discarded when expanded in double-quoted strings. + +uu. Fixed a bug that caused $RANDOM to be re-seeded multiple times in a + subshell environment. + +vv. Extensive changes to the job management code to avoid the pid-reuse and + pid-aliasing problems caused by retaining the exit status of too many jobs, + but still retain as many background job statuses as POSIX requires. + +ww. Fixed a parser bug in processing \<newline> that caused things like + + ((echo 5) \ + (echo 6)) + + to not work correctly. + +xx. `pwd -P' now sets $PWD to a directory name containing no symbolic links + when in posix mode, as POSIX requires. + +yy. In posix mode, bash no longer sets $PWD to a name containing no symbolic + links if a directory is chosen from $CDPATH. + +zz. The word splitting code now treats an IFS character that is not space, + tab, or newline and any adjacent IFS white space as a single delimiter, as + SUSv3/XPG6 require. + +aaa. The `read' builtin now checks whether or not the number of fields read is + exactly the same as the number of variables instead of just assigning the + rest of the line (minus any trailing IFS white space) to the last + variable. This is what POSIX/SUS/XPG all require. + +bbb. Fixed a bug that caused `read' to always check whether or not fd 0 was a + pipe, even when reading from another file descriptor. + +ccc. Fixed a bug that caused short-circuiting of execution even if the return + value was being inverted. + +ddd. Fixed a bug that caused a core dump while decoding \W escapes in PS1 if + PWD was unset. + +eee. Fixed a bug in `read' that counted internal quoting characters for the + purposes of `read -n'. + +fff. Fixed a bug so that a function definition in a pipeline causes a child + process to be forked at the right time. + +ggg. Bash will not attempt to link against a readline library that doesn't + have rl_gnu_readline_p == 1. + +hhh. Fixed a bug that caused `read' to consume one too many characters when + reading a fixed number of characters and the Nth character is a backslash. + +iii. Fixed a bug that caused `unset' on variables in the temporary environment + to leave them set when `unset' completed. + +jjj. Fixed a bug that caused bash to close fd 2 if an `exec' failed and the + shell didn't exit. + +kkk. The completion code is more careful to not turn `/' or `///' into `//', + for those systems on which `//' has special meaning. + +lll. Fixed a bug that caused command substitution in asynchronous commands to + close the wrong file descriptors. + +mmm. The shell no longer prints status messages about terminated background + processes unless job control is active. + +nnn. Fixed a bug that prevented multiple consecutive invocations of `history -s' + from adding all the commands to the history list. + +ooo. Added a couple of changes to make arithmetic expansion more consistent in + all its contexts (still not perfect). + +ppp. Fixed a bug that caused the parser to occasionally not find the right + terminating "`" in an old-style command substitution. + +qqq. Fixed a bug that caused core dumps when the shell was reading its non- + interactive input from fd 0 and fd 0 was duplicated and restored using a + combination of `exec' (to save) and redirection (to restore). + +rrr. Fixed a problem that caused loops in sourced scripts to not be cleaned + up properly when a `return' is executed. + +sss. Change internal command substitution completion function to append a slash + to directory names in the command. + +2. Changes to Readline + +a. Fixed a bug that caused multiliine prompts to be wrapped and displayed + incorrectly. + +b. Fixed a bug that caused ^P/^N in emacs mode to fail to display the current + line correctly. + +c. Fixed a problem in computing the number of invisible characters on the first + line of a prompt whose length exceeds the screen width. + +d. Fixed vi-mode searching so that failure preserves the current line rather + than the last line in the history list. + +e. Fixed the vi-mode `~' command (change-case) to have the correct behavior at + end-of-line when manipulating multibyte characters. + +f. Fixed the vi-mode `r' command (change-char) to have the correct behavior at + end-of-line when manipulating multibyte characters. + +g. Fixed multiple bugs in the redisplay of multibyte characters: displaying + prompts longer than the screen width containing multibyte characters, + +h. Fix the calculation of the number of physical characters in the prompt + string when it contains multibyte characters. + +i. A non-zero value for the `rl_complete_suppress_append' variable now causes + no `/' to be appended to a directory name. + +j. Fixed forward-word and backward-word to work when words contained + multibyte characters. + +k. Fixed a bug in finding the delimiter of a `?' substring when performing + history expansion in a locale that supports multibyte characters. + +l. Fixed a memory leak caused by not freeing the timestamp in a history entry. + +m. Fixed a bug that caused "\M-x" style key bindings to not obey the setting + of the `convert-meta' variable. + +n. Fixed saving and restoring primary prompt when prompting for incremental + and non-incremental searches; search prompts now display multibyte + characters correctly. + +o. Fixed a bug that caused keys originally bound to self-insert but shadowed + by a multi-character key sequence to not be inserted. + +p. Fixed code so rl_prep_term_function and rl_deprep_term_function aren't + dereferenced if NULL (matching the documentation). + +q. Extensive changes to readline to add enough state so that commands + requiring additional characters (searches, multi-key sequences, numeric + arguments, commands requiring an additional specifier character like + vi-mode change-char, etc.) work without synchronously waiting for + additional input. + +r. Lots of changes so readline builds and runs on MinGW. + +s. Readline no longer tries to modify the terminal settings when running in + callback mode. + +t. The Readline display code no longer sets the location of the last invisible + character in the prompt if the \[\] sequence is empty. + +3. New Features in Bash + +a. Bash now understands LC_TIME as a special variable so that time display + tracks the current locale. + +b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created + as `invisible' variables and may not be unset. + +c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't + try to interpret any options at all, as POSIX requires. + +d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify. + +e. Fixed vi-mode word completion and glob expansion to perform tilde + expansion. + +f. The `**' mathematic exponentiation operator is now right-associative. + +g. The `ulimit' builtin has new options: -i (max number of pending signals), + -q (max size of POSIX message queues), and -x (max number of file locks). + +h. A bare `%' once again expands to the current job when used as a job + specifier. + +i. The `+=' assignment operator (append to the value of a string or array) is + now supported for assignment statements and arguments to builtin commands + that accept assignment statements. + +j. BASH_COMMAND now preserves its value when a DEBUG trap is executed. + +k. The `gnu_errfmt' option is enabled automatically if the shell is running + in an emacs terminal window. + +l. New configuration option: --single-help-strings. Causes long help text + to be written as a single string; intended to ease translation. + +m. The COMP_WORDBREAKS variable now causes the list of word break characters + to be emptied when the variable is unset. + +n. An unquoted expansion of $* when $IFS is empty now causes the positional + parameters to be concatenated if the expansion doesn't undergo word + splitting. + +o. Bash now inherits $_ from the environment if it appears there at startup. + +p. New shell option: nocasematch. If non-zero, shell pattern matching ignores + case when used by `case' and `[[' commands. + +q. The `printf' builtin takes a new option: -v var. That causes the output + to be placed into var instead of on stdout. + +r. By default, the shell no longer reports processes dying from SIGPIPE. + +s. Bash now sets the extern variable `environ' to the export environment it + creates, so C library functions that call getenv() (and can't use the + shell-provided replacement) get current values of environment variables. + +4. New Features in Readline + +a. The key sequence sent by the keypad `delete' key is now automatically + bound to delete-char. + +b. A negative argument to menu-complete now cycles backward through the + completion list. + +c. A new bindable readline variable: bind-tty-special-chars. If non-zero, + readline will bind the terminal special characters to their readline + equivalents when it's called (on by default). + +d. New bindable command: vi-rubout. Saves deleted text for possible + reinsertion, as with any vi-mode `text modification' command; `X' is bound + to this in vi command mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-release, +and the previous version, bash-3.0-rc1. + +1. Changes to Bash + +a. Fixed a boundary overrun that could cause segmentation faults when the + completion code hands an incomplete construct to the word expansion + functions. + +b. Changed posix mode behavior so that an error in a variable assignment + preceding a special builtin causes a non-interactive shell to exit. + +c. Change the directory expansion portion of the completion code to not + expand embedded command substitutions if the directory name appears in + the file system. + +d. Fixed a problem that caused `bash -r' to turn on restrictions before + reading the startup files. + +e. Fixed a problem with the default operation of the `umask' builtin. + +2. Changes to Readline + +a. Fixed a problem with readline saving the contents of the current line + before beginning a non-interactive search. + +b. Fixed a problem with EOF detection when using rl_event_hook. + +c. Fixed a problem with the vi mode `p' and `P' commands ignoring numeric + arguments. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-rc1, +and the previous version, bash-3.0-beta1. + +1. Changes to Bash + +a. Fixed a bug that caused incorrect behavior when referecing element 0 of + an array using $array, element 0 was unset, and `set -u' was enabled. + +b. System-specific changes for: SCO Unix 3.2, Tandem. + +c. Fixed a bug that caused inappropriate word splitting when a variable was + expanded within a double-quoted string that also included $@. + +d. Fixed a bug that caused `pwd' to not display anything in physical mode + when the file system had changed underneath the shell. + +e. Fixed a bug in the pre- and post- increment and decrement parsing in the + expression evaluator that caused errors when the operands and corresponding + operators were separated by whitespace. + +f. Fixed a bug that caused `history -p' to add an entry to the history list, + counter to the documentation. (Keeps the history expansions invoked by + emacs-mode command line editing from doing that as well.) + +g. Fixed a bug that could cause a core dump if `cd' is asked to print out a + pathname longer than PATH_MAX characters. + +h. Fixed a bug that caused jobs to be put into the wrong process group under + some circumstances after enabling job control with `set -m'. + +i. `unalias' now returns failure if no alias name arguments are supplied. + +j. Documented the characters not allowed to appear in an alias name. + +k. $* is no longer expanded as if in double quotes when it appears in the + body of a here document, as the SUS seems to require. + +l. The `bashbug' script now uses a directory in $TMPDIR for exclusive + access rather than trying to guess how the underlying OS provides for + secure temporary file creation. + +m. Fixed a few problems with `cd' and `pwd' when asked to operate on pathnames + longer than PATH_MAX characters. + +n. Fixed a memory leak caused when creating multiple local array variables + with identical names. + +o. Fixed a problem with calls to getcwd() so that bash now operates better + when the full pathname to the current directory is longer than PATH_MAX + bytes. + +p. The `trap' builtin now reports an error if a single non-signal argument + is specified. + +q. Fixed a bug that caused `umask' to not work correctly when presented + with a mask of all 0s. + +r. When `getopts' reaches the end of options, OPTARG is unset, as POSIX + appears to specify. + +s. Interactive mode now depends on whether or not stdin and stderr are + connected to a tty; formerly it was stdin and stdout. POSIX requires + this. + +t. Fixed vi-mode completion to work more as POSIX specifies (e.g., doing the + right kind of filename generation). + +2. Changes to Readline + +a. Fixed a problem that could cause readline to refer to freed memory when + moving between history lines while doing searches. + +b. Improvements to the code that expands and displays prompt strings + containing multibyte characters. + +c. Fixed a problem with vi-mode not correctly remembering the numeric argument + to the last `c'hange command for later use with `.'. + +d. Fixed a bug in vi-mode that caused multi-digit count arguments to work + incorrectly. + +e. Fixed a problem in vi-mode that caused the last text modification command + to not be remembered across different command lines. + +f. Fixed problems with changing characters and changing case at the end of + the line. + +3. New Features in Bash + +a. The `jobs', `kill', and `wait' builtins now accept job control notation + even if job control is not enabled. + +b. The historical behavior of `trap' that allows a missing `action' argument + to cause each specified signal's handling to be reset to its default is + now only supported when `trap' is given a single non-option argument. + +4. New Features in Readline + +a. When listing completions, directories have a `/' appended if the + `mark-directories' option has been enabled. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-beta1, +and the previous version, bash-3.0-alpha. + +1. Changes to Bash + +a. Fixes to build correctly when arrays are not compiled into the shell. + +b. Fixed command substitution to run any exit trap defined in the command + substitution before returning; the exit trap is not inherited from the + calling shell. + +c. Fixes to process group synchronization code so that every child process + attempts to set the terminal's process group; fixes some synchronization + problems on Linux kernels that schedule the child to always run before + the parent. + +d. Fixed processing of octal and hex constants in printf builtin for POSIX.2 + compliance. + +e. Fixed a couple of core dumps in the pattern removal code. + +f. Fixes to the array subrange extraction code to deal better with sparse + arrays. + +g. Parser errors and other errors that result in the shell exiting now cause + the exit trap to be run. + +h. Change the command substitution completion functions to not append any + closing quote, because it would be inserted a closing "`" or ")". + +i. Fix history initialization so assignments to $histchars made in startup + files are honored. + +j. If an exit trap does not contain a call to `exit', the shell now uses + the exit status of the last command executed before the trap as the exit + status of the shell. + +k. The parser now prompts with $PS2 if it reads a newline while parsing a + compound array assignment statement. + +l. When performing a compound array assignment, the parser doesn't treat + words of the form [index]=value as assignments if they're the result of + expansions. + +m. Fixed a bug that caused `return' executed in a trap command to make the + shell think it was still running the trap. + +n. Fixed the value of errno set by the pathname canonicalization functions. + +o. Changed the grammar so that `time' alone on a line times a null command + rather than being a syntax error. + +p. The pattern substitution code no longer performs quote removal on the + pattern before trying to match it, as the pattern removal functions do. + +q. Fixed a bug that could cause core dumps when checking whether a quoted + command name was being completed. + +r. Fixes to the pattern removal and pattern replacement expansions to deal + with multibyte characters better (and faster). + +s. Fix to the substring expansion (${param:off[:len]}) to deal with (possibly + multibyte) characters instead of raw bytes. + +t. Fixed a bug that caused some key bindings set in an inputrc to be ignored + at shell startup. + +u. Fixed a bug that caused unsetting a local variable within a function to + not work correctly. + +v. Fixed a bug that caused invalid variables to be created when using + `read -a'. + +w. Fixed a bug that caused "$@" to expand incorrectly when used as the right + hand side of a parameter expansion such as ${word:="$@"} if the first + character of $IFS was not a space. + +x. Fixed a slight cosmetic problem when printing commands containing a + `>&word' redirection. + +y. Fixed a problem that could cause here documents to not be created correctly + if the system temporary directory did not allow writing. + +2. Changes to Readline + +a. Change to history expansion functions to treat `^' as equivalent to word + one, as the documention states. + +b. Some changes to the display code to improve display and redisplay of + multibyte characters. + +c. Changes to speed up the multibyte character redisplay code. + +d. Fixed a bug in the vi-mode `E' command that caused it to skip over the + last character of a word if invoked while point was on the word's + next-to-last character. + +e. Fixed a bug that could cause incorrect filename quoting when + case-insensitive completion was enabled and the word being completed + contained backslashes quoting word break characters. + +f. Fixed a bug in redisplay triggered when the prompt string contains + invisible characters. + +g. Fixed some display (and other) bugs encountered in multibyte locales + when a non-ascii character was the last character on a line. + +h. Fixed some display bugs caused by multibyte characters in prompt strings. + +i. Fixed a problem with history expansion caused by non-whitespace characters + used as history word delimiters. + +3. New Features in Bash + +a. printf builtin understands two new escape sequences: \" and \?. + +b. `echo -e' understands two new escape sequences: \" and \?. + +c. The GNU `gettext' package and libintl have been integrated; the shell's + messages can be translated into different languages. + +d. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'. + +e. The error message printed when bash cannot open a shell script supplied + as argument 1 now includes the name of the shell, to better identify + the error as coming from bash. + +4. New Features in Readline + +a. New application variable, rl_completion_quote_character, set to any + quote character readline finds before it calls the application completion + function. + +b. New application variable, rl_completion_suppress_quote, settable by an + application completion function. If set to non-zero, readline does not + attempt to append a closing quote to a completed word. + +c. New application variable, rl_completion_found_quote, set to a non-zero + value if readline determines that the word to be completed is quoted. + Set before readline calls any application completion function. + +d. New function hook, rl_completion_word_break_hook, called when readline + needs to break a line into words when completion is attempted. Allows + the word break characters to vary based on position in the line. + +e. New bindable command: unix-filename-rubout. Does the same thing as + unix-word-rubout, but adds `/' to the set of word delimiters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-alpha, +and the previous version, bash-2.05b-release. + +1. Changes to Bash + +a. Fixes so that the shell will compile without some of the default options + defined. + +b. Fixed an error message that did not pass enough arguments to printf. + +c. Fixed a bug that caused input redirection to a builtin inside a script + being read from standard input to result in the rest of the already- + read and buffered script to be discarded. + +d. Fixed a bug that caused subshell initialization to close the file + descriptor from which the shell was reading a script under certain + circumstances. + +e. Fixed a bug that caused the shell to not advance a string pointer over + a null wide character when doing string operations. + +f. Fixed the internal logout code so that shells that time out waiting for + input (using $TMOUT) run ~/.bash_logout. + +g. Portability and configuration changes for: cygwin, HP/UX, GNU/FreeBSD. + +h. The parser no longer adds implicit double quotes to ((...)) arithmetic + commands. + +i. The ((...)) arithmetic command evaluation code was fixed to not dump core + when the expanded string is null. + +j. The ((...)) arithmetic command evaluation code was fixed to not perform + variable assignments while expanding the expression. + +k. Fixed a bug that caused word splitting to be performed incorrectly when + IFS is set, but null. + +l. Fixed a bug in brace expansion that caused a quoted `$' preceding an + open brace to inhibit brace expansion. + +m. Fixed a bug that caused a leading `-' in the shell's name to cause it to + not be recognized as a restricted shell. + +n. Fixed a bug in the arithmetic evaluation code that could cause longjmps + to an invalid location and result in a core dump. + +o. Fixed a bug in the calculation of how many history lines are new in a + single shell session when reading new history lines from a file with + `history -n'. + +p. Fixed a bug in pathname canonicalization that caused the shell to dump + core when presented with a pathname longer than PATH_MAX. + +q. Fixed the parser so that it doesn't try to compare a char variable to + EOF, which fails when chars are unsigned. + +r. Fixed a bug in the simple command execution code that caused occasional + core dumps. + +s. The shell does a better job of saving any partial parsing state during + operations which cause a command to be executed while a line is being + entered and parsed. + +t. The completion code now splits words more like the expansion code when + $IFS is used to split. + +u. The locale code does a better job of recomputing the various locale + variable values when LC_ALL is unset. + +v. The programmable completion code does a better job of dequoting expanded + word lists before comparing them against the word to be matched. + +w. The shell no longer seg faults if the expanded value of $PS4 is null + and `set -x' is enabled. + +x. Fixed a bug that caused core dumps when a here string expanded to NULL. + +y. The mail checking code now makes sure the mailbox is bigger before + reporting the existence of new mail. + +z. The parser does not try to expand $'...' and $"..." when the appear + within double quotes unless the `extquote' option has been enabled with + `shopt'. For backwards compatibility, it is enabled by default. + +aa. Fixed a bug that caused `for x; do ...' and `select x; do ... to use + $@ instead of "$@" for the implicit list of arguments. + +bb. Fixed a bug that caused a subshell of a restricted shell (e.g., one + spawned to execute a pipeline) to not exit immediately if attempting + to use a command containing a slash. + +cc. Fixed a problem with empty replacements for a pattern that doesn't match + when performing ${param/word/} expansion. + +dd. Word expansions performed while expanding redirections no longer search + a command's temporary environment to expand variable values. + +ee. Improvements to the alias expansion code when expanding subsequent words + because an aliase's value ends with a space. + +ff. `cd -' now prints the current working directory after a successful chdir + even when the shell is not interactive, as the standard requires. + +gg. The shell does a better job of ensuring a child process dies of SIGINT + before resending SIGINT to itself. + +hh. The arithmetic expansion variable assignment code now does the right + thing when assigning to `special' variables like OPTIND. + +ii. When history expansion verification is enabled, the bash readline helper + functions that do history expansion on the current line don't print + the results. + +jj. Fixed bugs with multiple consecutive alias expansion when one of the + expansions ends with a space. + +kk. Fixed a problem in the programmable completion code that could cause core + dumps when trying to initialize a set of possible completions from a + list of variables. + +ll. The \[ and \] escape characters are now ignored when decoding the prompt + string if the shell is started with editing disabled. + +mm. Fixed a bug that could leave extra characters in a string when doing + quoted null character removal. + +nn. Command substitution and other subshell operations no longer reset the + line number (aids the bash debugger). + +oo. Better line number management when executing simple commands, conditional + commands, for commands, and select commands. + +pp. The globbing code now uses malloc, with its better failure properties, + rather than alloca(). + +qq. Fixed a bug that caused expansions like #{a[2]:=value} to create the + appropriate array element instead of a variable named `a[2]'. + +rr. Fixed a bug in the handling of a `?(...)' pattern immediately following + a `*' when extglob is enabled. + +ss. Fixed a bug that caused a `return' invoked in an exit trap when exit is + invoked in a function to misbehave. + +tt. Fixed a bug that caused CTLESC and CTLNUL characters to not be escaped + by the internal shell string quoting functions. + +uu. Fixed a bug that caused quoted null characters in an expanded word list + to be inappropriately assigned to an array variable when using `read -a'. + +vv. Fixed a bug that caused redirections accompanying a null command to persist + in the current shell. + +ww. Fixed a bug that caused the prompt to be printed when the shell was + expanding a multiline alias. + +xx. Fixed a bug that resulted in core dumps when the completion for a command + changed the compspec. + +yy. Fixed a bug that caused evaluation of programmable completions to print + notifications of completed jobs. + +zz. Bash now disables line editing when $EMACS == `t' and $TERM == `dumb' + (which is what emacs shell windows do). + +aaa. In posix mode, `kill -l' causes signal names to be displayed without + a leading `SIG'. + +bbb. Clear error flag on standard output so it doesn't persist across multiple + builtin commands. + +ccc. In posix mode, `alias' displays alias values without the leading `alias', + so the output cannot be used as subsequent input. + +ddd. In posix mode, the `trap' builtin doesn't check whether or not its + first argument is a signal specification and revert the signal handling + to its original disposition if it is. + +eee. Fixed several bugs in the handling of "$*" and "${array[*]}" by the + pattern substitution and removal expansions. + +fff. Fixed several problems with the handling of ${array[@]}, ${array[*]}, + $@, and $* by the indirect variable expansion code. + +ggg. Fixed a bug that did not allow `time' to be aliased. + +hhh. Improved the mail checking code so it won't check (and possibly cause an + NFS file system mount) until MAILPATH or MAIL is given a value -- there + is no default if DEFAULT_MAIL_DIRECTORY is not defined at compile time. + (It is computed by configure, but can be #undef'd in config-bot.h.) + +iii. If the `chkwinsize' option is enabled, the shell checks for window size + changes if a child process exits due to a signal. + +jjj. Removed the attempts to avoid adding a slash at the end of a completed + executable name if there was a directory with the same name in the + current directory. + +kkk. Fixed PATH lookup code so it treats the permission bits separately for + owner, group, and other, rather than checking them all. + +lll. Fixed the locale code to reset the parser's idea of the character class + <blank>, which controls how it splits tokens, when the locale changes. + +mmm. The shell now binds its special readline functions and key bindings only + if the user's inputrc file has not already bound them. + +nnn. The shell now reports on processes that dump core due to signals when + invoked as `-c command'. + +2. Changes to Readline + +a. Fixes to avoid core dumps because of null pointer references in the + multibyte character code. + +b. Fix to avoid infinite recursion caused by certain key combinations. + +c. Fixed a bug that caused the vi-mode `last command' to be set incorrectly. + +d. Readline no longer tries to read ahead more than one line of input, even + when more is available. + +e. Fixed the code that adjusts the point to not mishandle null wide + characters. + +f. Fixed a bug in the history expansion `g' modifier that caused it to skip + every other match. + +g. Fixed a bug that caused the prompt to overwrite previous output when the + output doesn't contain a newline and the locale supports multibyte + characters. This same change fixes the problem of readline redisplay + slowing down dramatically as the line gets longer in multibyte locales. + +h. History traversal with arrow keys in vi insertion mode causes the cursor + to be placed at the end of the new line, like in emacs mode. + +i. The locale initialization code does a better job of using the right + precedence and defaulting when checking the appropriate environment + variables. + +j. Fixed the history word tokenizer to handle <( and >( better when used as + part of bash. + +k. The overwrite mode code received several bug fixes to improve undo. + +l. Many speedups to the multibyte character redisplay code. + +m. The callback character reading interface should not hang waiting to read + keyboard input. + +n. Fixed a bug with redoing vi-mode `s' command. + +o. The code that initializes the terminal tracks changes made to the terminal + special characters with stty(1) (or equivalent), so that these changes + are reflected in the readline bindings. New application-callable function + to make it work: rl_tty_unset_default_bindings(). + +p. Fixed a bug that could cause garbage to be inserted in the buffer when + changing character case in vi mode when using a multibyte locale. + +q. Fixed a bug in the redisplay code that caused problems on systems + supporting multibyte characters when moving between history lines when the + new line has more glyphs but fewer bytes. + +r. Undo and redo now work better after exiting vi insertion mode. + +s. Make sure system calls are restarted after a SIGWINCH is received using + SA_RESTART. + +t. Improvements to the code that displays possible completions when using + multibyte characters. + +u. Fixed a problem when parsing nested if statements in inputrc files. + +v. The completer now takes multibyte characters into account when looking for + quoted substrings on which to perform completion. + +w. The history search functions now perform better bounds checking on the + history list. + +3. New Features in Bash + +a. ANSI string expansion now implements the \x{hexdigits} escape. + +b. There is a new loadable `strftime' builtin. + +c. New variable, COMP_WORDBREAKS, which controls the readline completer's + idea of word break characters. + +d. The `type' builtin no longer reports on aliases unless alias expansion + will actually be performed. + +e. HISTCONTROL is now a colon-separated list of values, which permits + more extensibility and backwards compatibility. + +f. HISTCONTROL may now include the `erasedups' option, which causes all lines + matching a line being added to be removed from the history list. + +g. `configure' has a new `--enable-multibyte' argument that permits multibyte + character support to be disabled even on systems that support it. + +h. New variables to support the bash debugger: BASH_ARGC, BASH_ARGV, + BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING, + BASH_COMMAND + +i. FUNCNAME has been changed to support the debugger: it's now an array + variable. + +j. for, case, select, arithmetic commands now keep line number information + for the debugger. + +k. There is a new `RETURN' trap executed when a function or sourced script + returns (not inherited child processes; inherited by command substitution + if function tracing is enabled and the debugger is active). + +l. New invocation option: --debugger. Enables debugging and turns on new + `extdebug' shell option. + +m. New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR + traps, respectively, to be inherited by shell functions. Equivalent to + `set -T' and `set -E' respectively. The `functrace' option also controls + whether or not the DEBUG trap is inherited by sourced scripts. + +n. The DEBUG trap is run before binding the variable and running the action + list in a `for' command, binding the selection variable and running the + query in a `select' command, and before attempting a match in a `case' + command. + +o. New `--enable-debugger' option to `configure' to compile in the debugger + support code. + +p. `declare -F' now prints out extra line number and source file information + if the `extdebug' option is set. + +q. If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes + the next command to be skipped, and a return value of 2 while in a + function or sourced script forces a `return'. + +r. New `caller' builtin to provide a call stack for the bash debugger. + +s. The DEBUG trap is run just before the first command in a function body is + executed, for the debugger. + +t. `for', `select', and `case' command heads are printed when `set -x' is + enabled. + +u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1, + x+2,...,y}. x and y can be integers or single characters; the sequence + may ascend or descend; the increment is always 1. + +v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices) + of array. + +w. New `force_fignore' shopt option; if enabled, suffixes specified by + FIGNORE cause words to be ignored when performing word completion even + if they're the only possibilities. + +x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu + style' (filename:lineno:message) format. + +y. New `-o bashdefault' option to complete and compgen; if set, causes the + whole set of bash completions to be performed if the compspec doesn't + result in a match. + +z. New `-o plusdirs' option to complete and compgen; if set, causes directory + name completion to be performed and the results added to the rest of the + possible completions. + +aa. `kill' is available as a builtin even when the shell is built without + job control. + +bb. New HISTTIMEFORMAT variable; value is a format string to pass to + strftime(3). If set and not null, the `history' builtin prints out + timestamp information according to the specified format when displaying + history entries. If set, bash tells the history library to write out + timestamp information when the history file is written. + +cc. The [[ ... ]] command has a new binary `=~' operator that performs + extended regular expression (egrep-like) matching. + +dd. `configure' has a new `--enable-cond-regexp' option (enabled by default) + to enable the =~ operator and regexp matching in [[ ... ]]. + +ee. Subexpressions matched by the =~ operator are placed in the new + BASH_REMATCH array variable. + +ff. New `failglob' option that causes an expansion error when pathname + expansion fails to produce a match. + +gg. New `set -o pipefail' option that causes a pipeline to return a failure + status if any of the processes in the pipeline fail, not just the last + one. + +4. New Features in Readline + +a. History expansion has a new `a' modifier equivalent to the `g' modifier + for compatibility with the BSD csh. + +b. History expansion has a new `G' modifier equivalent to the BSD csh `g' + modifier, which performs a substitution once per word. + +c. All non-incremental search operations may now undo the operation of + replacing the current line with the history line. + +d. The text inserted by an `a' command in vi mode can be reinserted with + `.'. + +e. New bindable variable, `show-all-if-unmodified'. If set, the readline + completer will list possible completions immediately if there is more + than one completion and partial completion cannot be performed. + +f. There is a new application-callable `free_history_entry()' function. + +g. History list entries now contain timestamp information; the history file + functions know how to read and write timestamp information associated + with each entry. + +h. Four new key binding functions have been added: + + rl_bind_key_if_unbound() + rl_bind_key_if_unbound_in_map() + rl_bind_keyseq_if_unbound() + rl_bind_keyseq_if_unbound_in_map() + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-release, +and the previous version, bash-2.05b-beta2. + +1. Changes to Bash + +a. Fixed an off-by-one error in the function that translates job + specifications. + +b. Note that we're running under Emacs and disable line editing if + $EMACS == `t'. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-beta2, +and the previous version, bash-2.05b-beta1. + +1. Changes to Bash + +a. Fixed the /= and %= arithmetic operators to catch division by zero. + +b. Added putenv, setenv, unsetenv to getenv replacement for completeness. + +c. Fixed a bug that could cause the -O expand_aliases invocation option + to not take effect. + +d. Fixed a problem with process substitution that resulted in incorrect + behavior when the number of process substitutions in an individual + command approached 64. + +2. Changes to Readline + +a. Fixed a problem with backward-char-search when on a system with support + for multibyte characters when running in a locale without any multibyte + characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-beta1, +and the previous version, bash-2.05b-alpha1. + +1. Changes to Bash + +a. Fixed a problem when parsing a POSIX.2 character class name while + evaluating a bracket expression containing multibyte characters. + +b. Changed the help text for `bind' to make it clear that any command + that may be placed in ~/.inputrc is a valid argument to `bind'. + +c. Added `help' builtin entries for `((', `[[', and arithmetic for. + +d. malloc updated again: + o slightly better overflow and underflow detection by putting the + chunk size at the beginning and end of the chunk and making + sure they match in free/realloc + o partial page allocated to make things page-aligned no longer + completely wasted + o block coalescing now enabled by default + o splitting and coalescing enabled for 32-byte chunks, the most + common size requested + o fixed a problem that resulted in spurious underflow messages and + aborts + o bin sizes are precomputed and stored in an array rather than + being computed at run time + o malloc will return memory blocks back to the system if the block + being freed is at the top of the heap and of sufficient size to + make it worthwhile + o malloc/free/realloc now inline memset instead of calling the + libc function; uses Duff's device for good performance + +e. Check for getservent(); make the service name completion code dependent + on its presence. + +f. Changed the readline callback that executes a command bound to a key + sequence to not save the executed command on the history list and to + save and restore the parsing state. + +g. Changes to lib/sh/snprintf.c: fixed some bugs in the `g' and `G' + floating point format display; implemented the "'" flag character + that turns on thousands' grouping; fixed behavior on systems where + MB_CUR_MAX does not evaluate to a constant. + +h. The `unset' builtin no longer returns a failure status when asked to + unset a previously-unset variable or function. + +i. Changes to the build system to make it easier to cross-compile bash + for different systems. + +j. Added `,' to the characters that are backslash-escaped during filename + completion, to avoid problems with complete-into-braces and RCS filenames + containing commas. + +k. Some changes to the multibyte character support code to avoid many calls + to strlen(). + +l. Bash now correctly honors setting LANG to some value when LC_ALL does not + already have a value. + +m. Fixed a bug that could cause SIGSEGV when processing nested traps with + trap handlers. + +n. The `source/.' builtin now restores the positional parameters when it + returns unless they were changed using the `set' builtin during the file's + execution. + +o. Fixed a bug that caused a syntax error when a command was terminated by + EOF. + +2. New Features in Bash + +a. There is now support for placing the long help text into separate files + installed into ${datadir}/bash. Not enabled by default; can be turned + on with `--enable-separate-helpfiles' option to configure. + +b. All builtins that take operands accept a `--' pseudo-option, except + `echo'. + +c. The `echo' builtin now accepts \0xxx (zero to three octal digits following + the `0') in addition to \xxx (one to three octal digits) for SUSv3/XPG6/ + POSIX.1-2001 compliance. + +3. Changes to Readline + +a. Fixed a small problem in _rl_insert_char with multibyte characters. + +b. Fixes from IBM for line wrapping problems when using multibyte characters. + +c. Fixed a problem which caused the display to be messed up when the last + line of a multi-line prompt (possibly containing invisible characters) + was longer than the screen width. + +d. Fixed a problem with the vi-mode `r' command that ocurred on systems with + support for multibyte characters when running in a locale without any + multibyte characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-alpha1, +and the previous version, bash-2.05a-release. + +1. Changes to Bash + +a. Some changes to work around inlining differences between compilers. + +b. Added more prototypes for internal shell typedefs, to catch argument + passing errors when using pointers to functions. + +c. The `cd' builtin now fails in posix mode when a valid directory cannot be + constructed from a relative pathname argument and the $PWD using pathname + canonicalization, and the -P option has not been supplied. Previously, + the shell would attempt to use what the user typed, leading to weird + values for $PWD and discrepancies between the value of $PWD and the + actual working directory. + +d. The `cd' builtin now resets $PWD when canonicalization fails but a chdir + to the pathname passed as an argument succeeds (when not in posix mode). + +e. The `fc' builtin has been fixed, as POSIX requires, to use the closest + history position in range when given an out-of-range argument. + +f. The history file loading code was changed to allow lines to be saved in + the history list from the shell startup files. + +g. `history -s args' now works better in compound commands. + +h. The tilde expansion code was fixed to better recognize when it's being + invoked in an assignment context, which enables expansion after `=' + and `:'. + +i. Fixed the command name completion code so a slash is no longer appended + to a single match if there happens to be a directory with that name in + $PWD. + +j. Fixed compound array assignment to no longer perform alias expansion, to + allow reserved words as array members, and to not produce extra output + when the `-v' option had been enabled. + +k. Fixed the programmable completion code to better handle newlines in lists + of possible completions (e.g., `complete -W'). + +l. Removed the reserved words from the `bash-builtins' manual page. + +m. Parser error reporting now attempts to do a better job of identifying the + token in error rather than doing straight textual analysis. + +n. Fixes for Inf/NaN, locales, wide/multibyte characters and zero-length + arguments in the library snprintf(3) replacement. + +o. `read -e' no longer does command name completion on the first word on + the line being read. + +p. `select' now returns failure if the read of the user's selection fails. + +q. Fixed a bug that could cause a core dump when setting $PIPESTATUS. + +r. Fixes to not allocate so many job slots when the shell is running a loop + with job control enabled in a subshell of an interactive shell. + +s. Fixed a bug in the trap code that caused traps to be inherited by + command substitutions in some cases. + +t. Fixed a bug that could cause alias expansion to inappropriately expand + the word following the alias. + +u. Fixed a bug in the `kill' builtin that mishandled negative pid arguments. + +v. The parser is less lenient when parsing assignment statements where the + characters before the `=' don't comprise a valid identifier. + +w. The arithmetic expression evaluation code now honors the setting of the + `-u' option when expanding variable names. + +x. Fixed the arithmetic evaluation code to allow array subscripts to be + assigned (`let b[7]=42') and auto-incremented and auto-decremented + (e.g., b[7]++). + +y. Reimplemented the existing prompt string date and time expansions using + strftime(3), which changed the output of \@ in some locales. + +z. Fixed a bug that could cause a core dump when a special shell variable + (like RANDOM) was converted to an array with a variable assignment. + +aa. Fixed a bug that would reset the handler for a signal the user had + trapped to a function that would exit the shell when setting the exit + trap in a non-interactive shell. + +bb. Changed the execve(2) wrapper code to check whether or not a failing + command is a directory before looking at whether a `#!' interpreter + failed for some reason. + +cc. Fixed a bug in the command printing code so it no longer inserts a `;' + after a newline, which produces a syntax error when reused as input. + +dd. The code that expands $PS4 no longer inherits the `-x' flag. + +ee. The bash-specific completion functions may now take advantage of the + double-TAB and M-? features of the standard readline completion + functions. + +ff. The mail checking code no longer prints a message if the checked file's + size has not increased, even if the access time is less than the modification time. + +gg. Rewrote the variable symbol table code: there is now a stack of + contexts, each possibly including a separate symbol table; there can + be more than one temporary environment supplied to nested invocations + of `./source'; the temporary environments no longer require so much + special-case code; shell functions now handle the temporary environment + and local variables more consistently; function scope exit is faster now + that the entire symbol table does not have to be traversed to dispose of + local variables; it is now easier to push vars from the temporary + environment to the shell's variable table in posix mode; some duplicated + code has been removed. + +hh. Regularized the error message printing code; builtin_error is now called + more consistently, and common error message strings are handled by small + functions. This should make eventual message translation easier. + +ii. Error messages now include the line number in a script when the shell + is not interactive. + +jj. Array subscript expansion now takes place even when the array variable is + unset, so side effects will take place. + +kk. Fixed a bug in the SICGHLD child-reaping code so that it won't find + jobs already marked as terminated if the OS reuses pids quickly enough. + +ll. Fixed a bug that could cause a signal to not interrupt the `wait' + builtin while it was waiting for a background process to terminate. + +mm. A couple of changes to make it easier for multiple shells to share history + files using `history -n', `history -r', and `history -w'. + +nn. The `getopts' builtin always increments OPTIND to point to the next + option to be handled when an option is returned, whether it's valid + or not, as POSIX 1003.x-2001 requires. + +oo. Changed some parts of the expansion code to avoid allocating and + immediately freeing memory without using the results for anything. + +pp. The shell now keeps track of $IFS internally, updating its internal map + each time the variable is assigned a new value (or at local scope exit). + This saves thousands of hash lookups for IFS, which, while individually + cheap, add up. + +qq. Rewrote the hash table code: searching and insertion are much faster now, + and it uses a better string hashing function; augmented the function + interface to simplify other parts of the code and remove duplicated code + +rr. The shell now uses a simple, generic `object cache' for allocating and + caching words and word lists, which were the major users of + malloc/free. + +ss. Fixed the assignment statement parsing code to allow whitespace and + newlines in subscripts when performing array element assignment. + +tt. The shell now issues many fewer calls to sigprocmask and other signal + masking system calls. + +uu. Fixed the `test' and conditional command file comparison operators to + work right when one file has a non-positive timestamp and the other + does not exist. + +vv. Fixed some cases where the special characters '\001' and '\177' in the + values of variables or positional parameters caused incorrect expansion + results. + +2. Changes to Readline + +a. Fixed output of comment-begin character when listing variable values. + +b. Added some default key bindings for common escape sequences produced by + HOME and END keys. + +c. Fixed the mark handling code to be more emacs-compatible. + +d. A bug was fixed in the code that prints possible completions to keep it + from printing empty strings in certain circumstances. + +e. Change the key sequence printing code to print ESC as M\- if ESC is a + meta-prefix character -- it's easier for users to understand than \e. + +f. Fixed unstifle_history() to return values that match the documentation. + +g. Fixed the event loop (rl_event_hook) to handle the case where the input + file descriptor is invalidated. + +h. Fixed the prompt display code to work better when the application has a + custom redisplay function. + +i. Changes to make reading and writing the history file a little faster, and + to cope with huge history files without calling abort(3) from xmalloc. + +j. The vi-mode `S' and `s' commands are now undone correctly. + +3. New Features in Bash + +a. If set, TMOUT is the default timeout for the `read' builtin. + +b. `type' has two new options: `-f' suppresses shell function lookup, and + `-P' forces a $PATH search. + +c. New code to handle multibyte characters. + +d. `select' was changed to be more ksh-compatible, in that the menu is + reprinted each time through the loop only if REPLY is set to NULL. + The previous behavior is available as a compile-time option. + +e. `complete -d' and `complete -o dirnames' now force a slash to be + appended to names which are symlinks to directories. + +f. There is now a bindable edit-and-execute-command readline command, + like the vi-mode `v' command, bound to C-xC-e in emacs mode. + +g. Added support for ksh93-like [:word:] character class in pattern matching. + +h. The $'...' quoting construct now expands \cX to Control-X. + +i. A new \D{...} prompt expansion; passes the `...' to strftime and inserts + the result into the expanded prompt. + +j. The shell now performs arithmetic in the largest integer size the + machine supports (intmax_t), instead of long. + +k. If a numeric argument is supplied to one of the bash globbing completion + functions, a `*' is appended to the word before expansion is attempted. + +l. The bash globbing completion functions now allow completions to be listed + with double tabs or if `show-all-if-ambiguous' is set. + +m. New `-o nospace' option for `complete' and `compgen' builtins; suppresses + readline's appending a space to the completed word. + +n. New `here-string' redirection operator: <<< word. + +o. When displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +p. There is a new configuration option `--enable-mem-scramble', controls + bash malloc behavior of writing garbage characters into memory at + allocation and free time. + +q. The `complete' and `compgen' builtins now have a new `-s/-A service' + option to complete on names from /etc/services. + +r. `read' has a new `-u fd' option to read from a specified file descriptor. + +s. Fix the completion code so that expansion errors in a directory name + don't cause a longjmp back to the command loop. + +t. Fixed word completion inside command substitution to work a little more + intuitively. + +u. The `printf' %q format specifier now uses $'...' quoting to print the + argument if it contains non-printing characters. + +v. The `declare' and `typeset' builtins have a new `-t' option. When applied + to functions, it causes the DEBUG trap to be inherited by the named + function. Currently has no effect on variables. + +w. The DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops. + +x. The expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires. + +y. The bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better. Code + from Gary Vaughan. + +z. New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup + and close). + +aa. There is a new `-l' invocation option, equivalent to `--login'. + +bb. The `hash' builtin has a new `-l' option to list contents in a reusable + format, and a `-d' option to remove a name from the hash table. + +4. New Features in Readline + +a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both + be bound to readline functions. Now the arrow keys may be used in vi + insert mode. + +b. When listing completions, and the number of lines displayed is more than + the screen length, readline uses an internal pager to display the results. + This is controlled by the `page-completions' variable (default on). + +c. New code to handle editing and displaying multibyte characters. + +d. The behavior introduced in bash-2.05a of deciding whether or not to + append a slash to a completed name that is a symlink to a directory has + been made optional, controlled by the `mark-symlinked-directories' + variable (default is the 2.05a behavior). + +e. The `insert-comment' command now acts as a toggle if given a numeric + argument: if the first characters on the line don't specify a + comment, insert one; if they do, delete the comment text + +f. New application-settable completion variable: + rl_completion_mark_symlink_dirs, allows an application's completion + function to temporarily override the user's preference for appending + slashes to names which are symlinks to directories. + +g. New function available to application completion functions: + rl_completion_mode, to tell how the completion function was invoked + and decide which argument to supply to rl_complete_internal (to list + completions, etc.). + +h. Readline now has an overwrite mode, toggled by the `overwrite-mode' + bindable command, which could be bound to `Insert'. + +i. New application-settable completion variable: + rl_completion_suppress_append, inhibits appending of + rl_completion_append_character to completed words. + +j. New key bindings when reading an incremental search string: ^W yanks + the currently-matched word out of the current line into the search + string; ^Y yanks the rest of the current line into the search string, + DEL or ^H deletes characters from the search string. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-release, +and the previous version, bash-2.05a-rc1. + +1. Changes to Bash + +a. Fixed the `printf' builtin so that the variable name supplied as an + argument to a %n conversion must be a valid shell identifier. + +b. Improved the random number generator slightly. + +c. Changes to configuration to not put -I/usr/include into $CFLAGS, since + it messes up some includes. + +d. Corrected description of POSIXLY_CORRECT in man page and info manual. + +e. Fixed a couple of cases of incorrect function prototypes that sneaked + through and caused compilation problems. + +f. A few changes to avoid potential core dumps in the programmable completion + code. + +g. Fixed a configure problem that could cause a non-existent file to show + up in LIBOBJS. + +h. Fixed a configure problem that could cause siglist.o to not be built when + required. + +i. Changes to the strtoimax and strtoumax replacement functions to work + around buggy compilers. + +j. Fixed a problem with the snprintf replacement function that could + potentially cause a core dump. + +2. Changes to Readline + +a. Fixed a locale-specific problem in the vi-mode `goto mark' command. + +b. Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause + include file problems. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-rc1, +and the previous version, bash-2.05a-beta1. + +1. Changes to Bash + +a. Fixed the snprintf replacement to correctly implement the `alternate form' + of the %g and %G conversions. + +b. Fixed snprintf to correctly handle the optional precision with the %g and + %G conversions. + +c. Fixed the arithmetic evaluation code to correct the values of `@' and `_' + when translating base-64 constants (they were backwards). + +d. New library functions for formatting long and long long ints. + +e. Fixed a few places where negative array subscripts could have occurred, + mostly as the result of systems using signed characters. + +f. Fixed a few places that assumed a pid_t was no wider than an int. + +g. Fixed the `maildir' mail checking code to work on systems where a + `struct stat' doesn't include an `st_blocks' member. + +h. Fixed snprintf to make `unsigned long long' conversion formats (%llu) + work better. + +i. Fixed snprintf to not print a sign when asked to do an unsigned conversion. + +j. Made configure changes to avoid compiling empty source files in lib/sh. + +k. New replacement functions (if necessary) for strtoull, strtoll, strtoimax, + strtoumax. + +l. The `printf' builtin now handles the `ll' and `j' length modifiers + directly, since they can affect the type and width of the argument + passed to printf(3). + +m. Renamed a number of the bash-specific autoconf macros in aclocal.m4 to + have more sytematic naming, with accompanying changes to configure.in. + +n. Fixed snprintf to handle long doubles and the %a/%A conversions by + falling back to sprintf, as long as sprintf supports them. + +o. Fixed return value from vsnprintf/snprintf to be the number of characters + that would have been printed, even if that number exceeds the buffer + size passed as an argument. + +p. Bash no longer attempts to define its own versions of some ctype macros + if they are implemented as functions in libc but not as macros in + <ctype.h>. + +q. Changed the variable printing code (used by `set', `export', etc.) to + not use the $'...' syntax when in posix mode, since that caused + interoperability problems with other shells (most notably with autoconf). + When not in posix mode, it uses $'...' if the string to be printed + contains non-printing characters and regular single quotes otherwise. + +r. snprintf now recognizes the %F conversion. + +s. Fixed a bug that could cause the wrong status to be returned by a shell + function when the shell is compiled without job control and a null + command containing a command substutition was executed in the function. + +t. When in posix mode, the default value for MAILCHECK is 600. + +u. Bash only initializes FUNCNAME, GROUPS, and DIRSTACK as special variables + if they're not in the initial environment. + +v. If SECONDS appears in the initial environment with a valid integer value, + bash uses that as the starting value, as if an assignment had been + performed. + +w. Bash no longer auto-exports HOME, PATH, SHELL, or TERM, even though it + gives them default values if they don't appear in the initial environment. + +x. Bash no longer auto-exports HOSTNAME, HOSTTYPE, MACHTYPE, or OSTYPE, + even if it assigns them default values. + +y. Bash no longer removes the export attribute from SSH_CLIENT or SSH2_CLIENT + if they appear in the initial environment. + +z. Bash no longer attempts to discover if it's being run by sshd in order to + run the startup files. If the SSH_SOURCE_BASHRC is uncommented in + config-top.h it will attempt to do so as previously, but that's commented + out in the distributed version. + +aa. Fixed a typo in the code that tests for LC_NUMERIC. + +bb. The POSIXLY_CORRECT shell variable and its effects are now documented. + +cc. Some changes to several of the support shell scripts included in the + definitions to try to avoid race conditions and attacks. + +dd. Several changes to avoid warnings from `gcc -Wall'. + +ee. Fixed a problem with the `unset' builtin that could cause incorrect + results if asked to unset a variable and an array subscript in the + same command. + +ff. A few changes to the shell's temporary file creation code to avoid + potential file descriptor leaks and to prefer the system's idea of + the temporary directory to use. + +gg. Fixes to build with the C alloca in lib/malloc/alloca.c if the system + requires it but the shell has been configured --without-bash-malloc. + +hh. Updated the documentation to note that only interactive shells resend + SIGHUP to all jobs before exiting. + +ii. Fixes to only pass unquoted tilde words to tilde_expand, rather than + rely on tilde_expand or getpwnam(3) to handle the quotes (MacOS 10.x + will remove backslashes in any login name passed to getpwnam(3)). + +jj. Small change from Paul Eggert to make LINENO right in commands run with + `bash -c'. + +2. New Features in Bash + +a. The `printf' builtin now handles the %a and %A conversions if they're + implemented by printf(3). + +b. The `printf' builtin now handles the %F conversion (just about like %f). + +c. The `printf' builtin now handles the %n conversion like printf(3). The + corresponding argument is the name of a shell variable to which the + value is assigned. + +3. Changes to Readline + +a. Fixed a few places where negative array subscripts could have occurred. + +b. Fixed the vi-mode code to use a better method to determine the bounds of + the array used to hold the marks. + +c. Fixed the defines in chardefs.h to work better when chars are signed. + +d. Fixed configure.in to use the new names for bash autoconf macros. + +e. Readline no longer attempts to define its own versions of some ctype + macros if they are implemented as functions in libc but not as macros in + <ctype.h>. + +f. Fixed a problem where rl_backward could possibly set point to before + the beginning of the line. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-beta1, +and the previous version, bash-2.05a-alpha1. + +1. Changes to Bash + +a. Fixed a bug in the evalution of arithmetic `for' statements when the + expanded expression is NULL. + +b. Fixed an unassigned variable problem in the redirection printing code. + +c. Added more prototypes to extern function declarations in the header + files and to static function declarations in C source files. + +d. Make sure called functions have a prototype in scope, to get the arguments + and return values right instead of casting. Removed extern function + declarations from C source files that were already included in header + files. + +e. Changed some function arguments to use function typedefs in general.h so + the prototypes can be checked. The only use of Function and VFunction + now is for unwind-protects. + +f. More const changes to function arguments and appropriate variables. + +g. Changed the mail checking support to handle `maildir'-style mail + directories. + +h. Augmented the bash malloc to pass in the file and line number information + for each malloc, realloc, and free. This should result in better error + messages. + +i. The `old' gnu malloc is no longer a configuration option. + +j. Augmented the bash malloc with optional tracing and registering allocated + and freed memory. + +k. Prompt string decoding now saves and restores the value of $? when it + expands the prompt string, so command substitutions don't change $?. + +i. Array indices are now `long', since shell arithmetic is performed as long, + and the internal arrayind_t type is used consistently. + +j. Some more `unsigned char *' fixes from Paul Eggert. + +k. Fixed a bad call to builtin_error that could cause core dumps when making + local variables. + +l. `return' may no longer be used to terminate a `select' command, for + compatibility with ksh. + +m. Changed code that reads octal numbers to do a better job of detecting + overflows. + +n. The time formatting code no longer uses absolute indices into a buffer, + because the buffer size changes depending on the size of a `time_t'. + +o. `umask' now prints four digits when printing in octal mode, for + compatibility with other shells. + +p. Lots of changes to the `printf' builtin from Paul Eggert: it handles `L' + formats and long doubles better, and internal functions have been + simpified where appropriate. + +q. Some `time_t' fixes for machines were a time_t is bigger than a long. + +r. Replaced some bash-specific autoconf macros with standard equivalents. + +s. Improvmed the code that constructs temporary filenames to make the + generated names a bit more random. + +t. Added code that checks for ascii before calling any of the is* ctype + functions. + +u. Changed some places where a `char' was used as an array subscript to use + `unsigned char', since a `char' can be negative if it's signed by default. + +v. Lots of changes to the `ulimit' builtin from Paul Eggert to add support + for the new POSIX-200x RLIM_SAVED_CUR and RLIM_SAVED_MAX values and + simplify the code. + +w. `ulimit' now prints the description of a resource in any error message + relating to fetching or setting that resource's limits. + +x. The `snprintf' replacement now computes maximum values at compile + time rather than using huge constants for things like long long. + +y. Interactive shells now ignore `set -n'. + +z. Changed the malloc bookkeeping information so that it's now 8 bytes + instead of 12 on most 32-bit machines (saving 4 bytes per allocation), + restoring 8-byte alignment. + +aa. The malloc error reporting code now attempts to print the file and line + number of the call that caused the error. + +bb. Changed the redirection error reporting code to catch EBADF errors and + report the file descriptor number rather than the file being redirected + to or from (e.g., things like `exec 4242<x' where 4242 is an out-of-range + file descriptor). + +cc. `printf', `echo -e', and the $'...' code now process only two hex digits + after a `\x' escape sequence for compatibility with other shells, and + the documentation was changed to note that the octal and hex escape + sequences result in an eight-bit value rather than strict ASCII. + +2. Changes to Readline + +a. The completion code now attempts to do a better job of preserving the + case of the word the user typed if ignoring case in completions. + +b. Readline defaults to not echoing the input and lets the terminal + initialization code enable echoing if there is a controlling terminal. + +c. The key binding code now processes only two hex digits after a `\x' + escape sequence, and the documentation was changed to note that the + octal and hex escape sequences result in an eight-bit value rather + than strict ASCII. + +3. New Features in Bash + +a. The builtin `ulimit' now takes two new non-numeric arguments: `hard', + meaning the current hard limit, and `soft', meaning the current soft + limit, in addition to `unlimited' + +b. `ulimit' now prints the option letter associated with a particular + resource when printing more than one limit. + +c. `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is + one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively. + +4. New Features in Readline + +a. New bindable variable `history-preserve-point'. If set, the history + code attempts to place the user at the same location on each history + line retrived with previous-history or next-history. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-alpha1, +and the previous version, bash-2.05-release. + +1. Changes to Bash + +a. Better checks in the redirection code for write errors. + +b. bashbug now uses $TMPDIR, defaulting to /tmp, and uses mktemp(1) more + portably. + +c. System-specific configuration changes for: Interix, OpenBSD, FreeBSD, + MacOS X. + +d. Some more `const' cleanups through the code. + +e. Fixed a typo in the /dev/fd redirection code, better checks for valid + numeric fds in /dev/fd. + +f. Fixed many parts of the shell to handle integer overflow more gracefully + and to do more stringent checks for valid numbers. + +g. Fixed mksignames to include config.h. + +h. Fixed an uninitialized variable problem that could cause the shell to core + dump when replacing characters in a string. + +i. New mechanism for updating the patch level when official patches are + released (patchlevel.h). + +j. configure.in changed to no longer require external files _distribution and + _patchlevel. + +k. Fixed non-interactive shell initialization problem when bash started as + `bash -i filename'. + +l. Fixed printf builtin conversion error handling to be POSIX.2-conformant. + +m. autoconf-2.52 is now used to build configure; autoconf-2.50 or newer is + required. Some of the bash-specific macros were removed, since they are + now standard. + +n. Startup files and files read with source or `.' are no longer required to + be regular files. + +o. Fixed core dump in builtin printf when user-supplied precision or field + width is 0. + +p. Fixed builtin printf to treat a negative field width as a positive field + width with left-justification. + +r. New unwind-protect implementation from Paul Eggert. + +s. Fixed an inadvertently-unclosed comment in the bash completion code that + caused programmable completions to not add trailing slashes or spaces to + completions. + +t. Fixed the process substitution code to cope better when stdin is closed. + +v. Fixes, mostly from Paul Eggert, for a few possible buffer overflows in + the shell. + +w. Fixes from Paul Eggert to avoid most of the type casts in the shell code, + and use more appropriate types for a number of variables. + +x. Command substition no longer inherits the DEBUG trap. + +y. Some fixes to the process substition code on machines without /dev/fd so + that named pipes are not removed inappropriately. + +z. The loadable `getconf' builtin is now much more complete, and will become + part of the shell in the future. + +aa. The select command no longer terminates on a `return', so it can be used + to return from an enclosing function (as ksh does it). + +bb. Fixed the extended pattern matching code to behave better when presented + with incorrectly-formed patterns. + +cc. Some changes were made with the intent of making cross-compilation easier. + +dd. The network code (/dev/tcp and /dev/udp redirections) uses getaddrinfo(3) + if it's available, which adds support for IPv6. + +ee. Subshells of login shells no longer source ~/.bash_logout when they exit. + +ff. Fixes so that subshells don't exit inappropriately if the -e option has + been set. + +gg. Restricted shells no longer allow functions to be exported. + +hh. Changes to the pattern matching code so extended pattern matching works + on systems with deficient shared library implementations, like MacOS X. + +ii. Better error messages when a script with a leading `#!interp' fails + to execute because of problems with `interp'. + +jj. Fixed `compgen' to handle the `-o default' option better. + +kk. Fixed the job control code to force an asynchronous process's standard + input to /dev/null only if job control is not active. + +ll. Fixed a possible infinite recursion problem when `fc ""=abc' (a null + pattern) is used to re-execute a previous command. + +mm. Fixed `declare [-a] var=value' to assign VALUE to element 0 if VAR is an + array variable. Similarly for `declare [-a] var[N]=value'. This is like + ksh93. + +nn. Fixed a bug that caused `read -a aname' to work even if ANAME had been + declared readonly. + +oo. Fixed a possible integer overflow problem when constructing names for + temporary files. + +2. New Features in Bash + +a. Added support for DESTDIR installation root prefix, so you can do a + `make install DESTDIR=bash-root' and do easier binary packaging. + +b. Added support for builtin printf "'" flag character as per latest POSIX + drafts. + +c. Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from + ISO C99). + +d. New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications + (bash doesn't use very much of what it returns). + +e. `set [-+]o nolog' is recognized as required by the latest POSIX drafts, + but ignored. + +f. New read-only `shopt' option: login_shell. Set to non-zero value if the + shell is a login shell. + +g. New `\A' prompt string escape sequence; expands to time in 24 HH:MM format. + +h. New `-A group/-g' option to complete and compgen; does group name + completion. + +i. New `-t' option to `hash' to list hash values for each filename argument. + +j. New [-+]O invocation option to set and unset `shopt' options at startup. + +k. configure's `--with-installed-readline' option now takes an optional + `=PATH' suffix to set the root of the tree where readline is installed + to PATH. + +l. The ksh-like `ERR' trap has been added. The `ERR' trap will be run + whenever the shell would have exited if the -e option were enabled. + It is not inherited by shell functions. + +m. `readonly', `export', and `declare' now print variables which have been + given attributes but not set by assigning a value as just a command and + a variable name (like `export foo') when listing, as the latest POSIX + drafts require. + +n. `bashbug' now requires that the subject be changed from the default. + +o. configure has a new `--enable-largefile' option, like other GNU utilities. + +p. `for' loops now allow empty word lists after `in', like the latest POSIX + drafts require. + +3. Changes to Readline + +a. More `const' and type casting fixes. + +b. Changed rl_message() to use vsnprintf(3) (if available) to fix buffer + overflow problems. + +c. The completion code no longer appends a `/' or ` ' to a match when + completing a symbolic link that resolves to a directory name, unless + the match does not add anything to the word being completed. This + means that a tab will complete the word up to the full name, but not + add anything, and a subsequent tab will add a slash. + +d. Fixed a trivial typo that made the vi-mode `dT' command not work. + +e. Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert. + +f. Fixed the tty code so that ^V works more than once. + +g. Changed the use of __P((...)) for function prototypes to PARAMS((...)) + because the use of __P in typedefs conflicted g++ and glibc. + +4. New Features in Readline + +a. Added extern declaration for rl_get_termcap to readline.h, making it a + public function (it was always there, just not in readline.h). + +b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402, + RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2. + +c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION. + +d. New bindable boolean readline variable: match-hidden-files. Controls + completion of files beginning with a `.' (on Unix). Enabled by default. + +e. The history expansion code now allows any character to terminate a + `:first-' modifier, like csh. + +f. The incremental search code remembers the last search string and uses + it if ^R^R is typed without a search string. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-release, +and the previous version, bash-2.05-beta2. + +1. Changes to Bash + +a. Make sure we note that the first line of a multi-line command was not + saved in the history if the tests for HISTCONTROL succeed, but the + HISTIGNORE check fails. + +b. Fixed a bug in the pattern matching code that caused `[' to be treated + as a special character inside a `[...]' bracket expression. + +c. Fixed a bug in the pattern matching code that caused `]' to terminate + a bracket expression even if it was the first character after the `[' + (or a leading `!' or `^'). + +d. Made a small change to report a more user-friendly error message if + execve(2) fails because of an error with the interpreter in a script + with a leading `#! interpreter'. + +e. If the OS does not support an exec(2) magic number of `#!', make sure we + have a non-null interpreter name before attempting to execute it. + +f. Fixed a bug that caused the shell process to end up in a different + process group than the controlling terminal if a job-control shell was + run with `exec' in the startup files. + +g. When started in POSIX mode, either by `bash --posix', `bash -o posix', or + `sh', $SHELLOPTS includes `posix' and POSIXLY_CORRECT is set. + +h. Fixed a problem that caused the `\W' prompt string escape sequence to + expand to nothing when $PWD was `//'. + +i. The `bashbug' shell script no longer uses $(...) command substitution. + +j. When `set' is invoked without options in POSIX mode, it no longer prints + the names and definitions of shell functions. + +2. Changes to Readline + +a. rl_set_paren_blink_timeout() is now documented. + +b. Corrected history.3 man page: `$' is not in the default value of + history_word_delimiters. + +c. If a hook function assigned to rl_event_hook sets rl_done to a non-zero + value, rl_read_key() now immediately returns '\n' (which is assumed to + be bound to accept-line). + +3. New Features in Bash + +a. The `>&word' redirection now works in POSIX mode as it does by default, + since POSIX.2 leaves it unspecified. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-beta2, +and the previous version, bash-2.05-beta1. + +1. Changes to Bash + +a. Fixed a bug in the arithmetic evaluation code so that a^=b is supported. + +b. Fixed startup so posixly_correct is retained across subshells begun to + execute scripts without a leading `#!'. + +c. Fixed a bug that caused $(< file) to not work in a (...) subshell. + +d. Added config support for Linux running on the IBM S390. + +e. Fixed a bug that caused bash to get its input pointer out of sync when + reading commands through a pipe and running a command with standard + input redirected from a file. + +f. Made a change so that command completion now makes about half as many + stat(2) calls when searching the $PATH. + +g. Fixed a bug that caused variable assignments preceding `return' to not + be propagated to the shell environment in POSIX mode. + +h. Fixed a bug with ${parameter[:]?word} -- tilde expansion was not performed + on `word'. + +i. In POSIX mode, `break' and `continue' do not complain and return success + if called when the shell is not executing a loop. + +j. Fixed `bash -o posix' to work the same as `bash --posix'. + +k. Fixed a bug where variable assignments preceding `eval' or `source/.' + would not show up in the environment exported to subshells run by the + commands. + +l. In POSIX mode, shells started to execute command substitutions inherit + the value of the `-e' option from their parent shell. + +m. In POSIX mode, aliases are expanded even in non-interactive shells. + +n. Changed some of the job control messages to display the text required by + POSIX.2 when the shell is in POSIX mode. + +o. Fixed a bug in `test' that caused it to occasionally return incorrect + results when non-numeric arguments were supplied to `-t'. + +2. Changes to Readline + +a. Some changes were made to avoid gcc warnings with -Wall. + +b. rl_get_keymap_by_name now finds keymaps case-insensitively, so + `set keymap EMACS' works. + +c. The history file writing and truncation functions now return a useful + status on error. + +d. Fixed a bug that could cause applications to dereference a NULL pointer + if a NULL second argument was passed to history_expand(). + +3. New Features in Bash + +a. doc/readline.3 has been moved to the readline distribution. + +4. New Features in Readline + +a. New function, rl_get_screen_size (int *rows, int *columns), returns + readline's idea of the screen dimensions. + +b. The timeout in rl_gather_tyi (readline keyboard input polling function) + is now settable via a function (rl_set_keyboard_input_timeout()). + +c. Renamed the max_input_history variable to history_max_entries; the old + variable is maintained for backwards compatibility. + +d. The list of characters that separate words for the history tokenizer is + now settable with a variable: history_word_delimiters. The default + value is as before. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-beta1, +and the previous version, bash-2.05-alpha1. + +1. Changes to Bash + +a. Changes to allow shared library and object building on the GNU Hurd. + +b. Fixes to the way exported functions are placed into the environment and + cached. + +c. The globbing library once again respects locales when processing ranges + in bracket expressions while doing pattern matching. + +d. System-specific configuration changes for: Tru 64, Interix + +e. Bashbug now uses /usr/bin/editor as one of the editing alternatives, and + will use mktemp(1) or tempfile(1), if present, for temporary file creation. + +f. Bash no longer performs a binary file check on a script argument that's + really a tty (like /dev/fd/0 or /dev/stdin). + +g. Fixed a bug in the execution of shell scripts that caused the effects of + $BASH_ENV to be undone in some cases. + +h. Fixed several bugs that made `bash [-i] /dev/stdin' not work correctly. + +i. Several changes to the job control code to avoid some signal state + manipulation. + +j. The Bash malloc no longer blocks signals as often, which should make it + faster. + +k. Fixed a parsing bug that did not allow backslash to escape a single quote + inside a $'...' construct. + +l. Fixed a bug that caused things like ${var:=$'value'} to be parsed + incorrectly. This showed up in newer versions of autoconf. + +m. Fixed a bug in the bash-specific readline initialization that caused + key bindings to bash-specific function names appearing in .inputrc to + not be honored. + +n. Bash now sets the file descriptor it uses to save the file descriptor + opened on a shell script to close on exec. + +o. Fixed a bug in the prompt string decoding that caused it to misbehave + when presented an octal sequence of fewer than three characters. + +p. Fixed the `test' builtin to return an error if `[' is supplied a single + argument that is not `]'. + +q. Fixed a bug that caused subshells started to run executable shell scripts + without a leading `#!' to incorrectly inherit an argument list preceding + a shell builtin (like such a script called from a script sourced with `.', + where there were variable assignments preceding the `.' command) + +r. Fixed a bug that caused changes to variables supplied in an assignment + statement preceding a shell builtin to not be honored (like a script + run with `.'). + +s. HOSTTYPE, OSTYPE, and MACHTYPE are set only if they do not have values + when the shell is started. + +t. Fixed a bug that caused SIGINT to kill shell scripts after the script + called `wait'. + +u. The `fc' builtin now tries to create its temporary files in the directory + named by $TMPDIR. + +v. Bash no longer calls any Readline functions or uses any Readline variables + not declared in readline.h. + +w. Fixed a bug that caused some substitutions involving $@ to not be split + correctly, especially expansions of the form ${paramterOPword}. + +x. SSH2_CLIENT is now treated like SSH_CLIENT and not auto-exported if it + appears in the initial environment. + +y. Fixed a couple of problems with shell scripts without a leading `#!' + being executed out of shell functions that could cause core dumps if + such a script attempted to execute `return'. + +z. Fixed a problem with the `-nt' and `-ot' binary operators for the + `test/[' builtin and the `[[' conditional command that caused wrong + return values if one of the file arguments did not exist. + +aa. Fixed a bug that caused non-interactive shells which had previously + executed `shopt -s expand_aliases' to fail to expand aliases in a + command like `(command) &'. + +2. Changes to Readline + +a. Changes to make most (but not yet all -- there is still crlf()) of the + exported readline functions declared in readline.h have an rl_ prefix. + +b. More `const' changes in function arguments, mostly for completion + functions. + +c. Fixed a bug in rl_forward that could cause the point to be set to before + the beginning of the line in vi mode. + +d. Fixed a bug in the callback read-char interface to make it work when a + readline function pushes some input onto the input stream with + rl_execute_next (like the incremental search functions). + +e. Fixed a file descriptor leak in the history file manipulation code that + was tripped when attempting to truncate a non-regular file (like + /dev/null). + +f. Some existing variables are now documented and part of the public + interface (declared in readline.h): rl_explict_arg, rl_numeric_arg, + rl_editing_mode, rl_last_func. + +g. Renamed rltty_set_default_bindings to rl_tty_set_default_bindings and + crlf to rl_crlf, so there are no public functions declared in readline.h + without an `rl_' prefix. The old functions still exist for backwards + compatibility. + +3. New Features in Bash + +a. A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. + +b. When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. + +4. New Features in Readline + +a. New application-callable function rl_set_prompt(const char *prompt): + expands its prompt string argument and sets rl_prompt to the result. + +b. New application-callable function rl_set_screen_size(int rows, int cols): + public method for applications to set readline's idea of the screen + dimensions. + +c. The history example program (examples/histexamp.c) is now built as one + of the examples. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-alpha1, +and the previous version, bash-2.04-release. + +1. Changes to Bash + +a. A fix was made to allow newlines in compond array assignments. + +b. configure now checks for real-time signals with unusable values. + +c. Interactive shells no longer exit if a substitution fails because of an + unset variable within a sourced file. + +d. Fixed a problem with incorrect matching of extended glob patterns when + doing pattern substitution. + +e. `{' is now quoted by the completion code when it appears in a filename. + +f. Fixed an error in pattern matching that caused the matcher to not + correctly skip the rest of a bracket expression after a character + matched. + +g. Fixed a bug in the IFS word splitting code to make a non-whitespace IFS + character preceded by IFS whitespace part of the current delimiter rather + than generating a separate field. + +h. The {!prefix@} expansion now generates separate words, analogous to $@, + when double-quoted. + +i. Command substitution now ignores NUL bytes in the command output, and the + parser ignores them on input. + +j. A fix was made to the job control code to prevent hanging processes when + the shell thinks background processes are running but the kernel returns + -1/ECHILD from waitpid(). + +k. `pwd' now prints an error message if the write fails when displaying the + current directory. + +l. When in POSIX mode, the shell prints trap dispostions without a leading + `SIG' in the signal specification. + +m. Fixed a parser bug that caused the current command's line count to be + messed up by a compound array assignment. + +n. Fixed a bug in the unwind-protect code that caused bad behavior on machines + where ints and pointers are not the same size. + +o. System-specific configure changes for: MacOS X. + +p. Changes for Cygwin to translate \r\n and \r to \n and to set file + descriptors used for reading input to text mode in various places. + +q. Fixed a bug that caused `!' to occasionally not be honored when in + a (...) subshell. + +r. Bash no longer assumes that getcwd() will return any useful error message + in the buffer passed as an argument if the call fails. + +s. The `source', `.', and `fc' builtins no longer check whether a file is + binary before reading commands from it. + +t. Subshells no longer turn off job control when they exit, since that + sometimes resulted in the terminal being reset to the wrong process + group. + +u. The history code no longer tries to save the second and subsequent lines + of a multi-line command if the first line was not saved. + +v. The history saving code now does a better job of saving blank lines in a + multi-line command. + +w. Removed a `feature' that made `ulimit' silently translate `unlimited' to + the current hard limit, which obscured some kernel error returns. + +x. Fixed the grammar so that `}' is recognized as a reserved word after + another reserved word, rather than requiring a `;' or newline. This + means that constructs like + + { { echo a b c ; } } + + work as expected. + +y. Conditional commands ([[...]]) now perform tilde expansion on their + arguments. + +z. Noted in the documentation that `set -a' will cause functions to be + exported if they are defined after `set -a' is executed. + +aa. When an interactive login shell starts, if $PWD and $HOME refer to the + same directory but are not the same string, $PWD is set to $HOME. + +bb. Fixed `printf' to handle invalid floating point numbers better. + +cc. Temporary files are now created with random filenames, to improve security. + +dd. The readline initialization code now binds the custom bash functions and + key bindings after the readline defaults are set up. + +ee. Fixed the `source' builtin to no longer overwrite a shell function's + argument list, even if the sourced file changes the positional parameters. + +ff. A bug fix was made in the expansion of `$*' in contexts where it should + not be split, like assignment statements. + +gg. Fixed a bug in the parameter substring expansion to handle conditional + arithmetic expressions ( exp ? val1 : val2 ) without cutting the expression + off at the wrong `:'. + +hh. The `<>' redirection is no longer subject to the current setting of + `noclobber', as POSIX.2 specifies. + +ii. Fixed a bug in the conditional command parsing code that caused expressions + in parentheses to occasionally be parsed incorrectly. + +jj. Fixed a bug in the ((...)) arithmetic command to allow do...done or + {...} to follow the )) without an intervening list terminator. + +kk. `printf' now treats `\E' the same as `\e' when performing backslash escape + expansion for the `%b' format specifier. + +ll. When in POSIX mode, the shell no longer searches the current directory for + a file to be sourced with `.' or `source' if `.' is not in $PATH. + +mm. Interactive comments are no longer turned off when POSIX mode is disabled. + +nn. The UID, EUID, HOSTNAME variables are not set if they are in the shell's + environment when it starts up. + +oo. Fixed a bug in the `command' builtin so the effect of a command like + `command exec 4<file' is as if the `command' had been omitted. + +pp. ${foo[@]} and ${foo[*]} now work as in ksh93 if `foo' is not an array + variable. + +qq. ${#foo[X]}, where X is 0, @, or *, now work as in ksh93 if `foo' is not + an array variable. + +rr. The shell's idea of an absolute pathname now takes into account a + possible drive specification on Cygwin and other Windows systems. + +ss. Fixed a bug which caused incorrect parsing of some multi-character + constructs if they were split across input lines with backslash-newline + line continuation. + +tt. Fixed a bug that caused restricted shell mode to be set inappropriately + when trying to execute a shell script without a leading `#!'. + +uu. Shell function definitions no longer require that the body be a group + command ( {...} ), as POSIX.2 requires. + +vv. The `cd' and `pwd' builtins now process symlinks in pathnames internally + and should require many fewer calls to getcwd(). + +ww. Fixed a bug that caused a pipeline's process group to be set incorrectly + if one of the pipeline elements contained a command substitution. + +xx. Fixed a bug that caused core dumps when expanding the value of HISTIGNORE. + +yy. The output of `set' is now quoted using $'...' so invisible characters are + displayed as escape sequences. + +zz. Fixed the help text for `unset', since PATH and IFS may both be unset. + +aaa. The shell no longer puts directory names into the command hash table. + +bbb. Fixed a bug in `read' that caused it to occasionally free memory twice if + it was interrupted after reading a large amount of data. + +ccc. Assignment statements that attempt to assign values to readonly variables + now cause the command to return an error status. + +ddd. Fixed a bug that could cause incorrect output if a $(<file) construct was + interrupted. + +eee. GROUPS and FUNCNAME now return an error status when assignment is + attempted, but may be unset (in which case they lose their special + properties). In all respects except unsetting, they are readonly. + +fff. The string-to-integer conversion code now ignores trailing whitespace in + the string, even if strtol(3) does not. + +ggg. The tcsh magic-space function now does a better job of inserting the + space close to where the point was before the history expansion, rather + than just appending it. + +hhh. Fixed a bug which caused a file sourced from an interactive shell to + fill up the jobs table if it ran lots of jobs. + +iii. Fixed a bug in the parameter pattern substitution code to avoid infinite + recursion on zero-length matches. + +2. Changes to Readline + +a. When setting the terminal attributes on systems using `struct termio', + readline waits for output to drain before changing the attributes. + +b. A fix was made to the history word tokenization code to avoid attempts to + dereference a null pointer. + +c. Readline now defaults rl_terminal_name to $TERM if the calling application + has left it unset, and tries to initialize with the resultant value. + +d. Instead of calling (*rl_getc_function)() directly to get input in certain + places, readline now calls rl_read_key() consistently. + +e. Fixed a bug in the completion code that allowed a backslash to quote a + single quote inside a single-quoted string. + +f. rl_prompt is no longer assigned directly from the argument to readline(), + but uses memory allocated by readline. This allows constant strings to + be passed to readline without problems arising when the prompt processing + code wants to modify the string. + +g. Fixed a bug that caused non-interactive history searches to return the + wrong line when performing multiple searches backward for the same string. + +h. Many variables, function arguments, and function return values are now + declared `const' where appropriate, to improve behavior when linking with + C++ code. + +i. The control character detection code now works better on systems where + `char' is unsigned by default. + +j. The vi-mode numeric argument is now capped at 999999, just like emacs mode. + +k. The Function, CPFunction, CPPFunction, and VFunction typedefs have been + replaced with a set of specific prototyped typedefs, though they are + still in the readline header files for backwards compatibility. + +m. Nearly all of the (undocumented) internal global variables in the library + now have an _rl_ prefix -- there were a number that did not, like + screenheight, screenwidth, alphabetic, etc. + +n. The ding() convenience function has been renamed to rl_ding(), though the + old function is still defined for backwards compatibility. + +o. The completion convenience functions filename_completion_function, + username_completion_function, and completion_matches now have an rl_ + prefix, though the old names are still defined for backwards compatibility. + +p. The functions shared by readline and bash (linkage is satisfied from bash + when compiling with bash, and internally otherwise) now have an sh_ prefix. + +q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so + that the `soname' contains only the major version number rather than the + major and minor numbers. + +r. Fixed a redisplay bug that occurred when the prompt spanned more than one + physical line and contained invisible characters. + +3. New Features in Bash + +a. Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. + +b. The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. + +c. `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces + +4. New Features in Readline + +a. The blink timeout for paren matching is now settable by applications. + +b. _rl_executing_macro has been renamed to rl_executing_macro, which means + it's now part of the public interface. + +c. Readline has a new variable, rl_readline_state, which is a bitmap that + encapsulates the current state of the library; intended for use by + callbacks and hook functions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-release, +and the previous version, bash-2.04-beta5. + +1. Changes to Bash + +a. Better compile-time and configure-time checks for the necessity of + inet_aton(). + +b. A bug was fixed in the expansion of "${@:-}" when there are positional + parameters. + +c. A typo was fixed in the output of `complete'. + +d. The matches generated for a word by the `-W' argument to complete and + compgen are now matched against the word being completed, and only + matches are returned as the result. + +e. Some fixes were made for systems which do not restart read(2) when a + signal caught by bash is received. + +f. A bug was fixed which caused the umask to be set to 0 when an invalid + symbolic mode mask was parsed. + +g. Fixed a bug that could cause a core dump if a SIGCHLD was received while + performing an assignment statement using command substitution. + +h. Changed the word splitting function for programmable completion so cases + in which the cursor is between words are handled a bit better. + +2. Changes to Readline + +a. rl_funmap_names() is now documented. + +3. New Features in Bash + +a. The LC_NUMERIC variable is now treated specially, and used to set the + LC_NUMERIC locale category for number formatting, e.g., when `printf' + displays floating-point numbers. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta5, +and the previous version, bash-2.04-beta4. + +1. Changes to Bash + +a. A couple of changes were made to the Makefiles for easier building on + non-Unix systems. + +b. Fixed a bug where the current prompt would be set to $PS2 at startup. + +c. The shell script that tests an already-installed version was changed to + remove the directory it created its test programs in at exit. + +d. Several changes were made to the code that tokenizes an input line for + the programmable completion code. Shell metacharacters will now appear + as individual words in the word list passed to the completion functions. + Some of the example completion shell functions were changed to understand + redirection operators. + +e. A bug was fixed that, under obscure circumstances, could confuse the + parser when a shell function was run by the programmable completion code. + +f. A bug was fixed in the ulimit builtin for systems not using getrlimit(). + +g. The execution code now propagates the correct exit status back to the rest + of the code if the return value of a subshell command was being inverted. + Some new test cases for inverting return values with the `!' reserved + word have been added. + +h. Negative exponents in the arithmetic evaluation of v**e now return an + evaluation error. + +i. A bug that caused bash to check the wrong process in a pipeline for + abnormal termination (and consequently resetting the terminal attributes) + was fixed. + +j. Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was + executed. + +2. Changes to Readline + +1. Fixed a bug in a C preprocessor define that caused the keypad control + functions to be compiled out for all platforms except DJGPP. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta4, +and the previous version, bash-2.04-beta3. + +1. Changes to Bash + +a. A couple of changes were made to the redirection to attempt to avoid + race conditions and malicious file replacement. + +2. A change was made to the string evaluation code (used for command + substitution, `eval', and the `.' builtin) to fix an obscure core + dump on alpha machines. + +3. A bug that caused $LINENO to be wrong when executing arithmetic for + commands was fixed. + +4. A couple of memory leaks in the programmable completion code were fixed. + +5. A bug that could cause a core dump by freeing memory twice during a call + to `eval' if `set -u' had been enabled and an undefined variable was + referenced was fixed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta3, +and the previous version, bash-2.04-beta2. + +1. Changes to Bash + +a. Bash should run the appropriate startup files when invoked by ssh2. + +b. Fixed a bug in the parsing of conditional commands that could cause a + core dump. + +c. Fixed a bug in parsing job specifications that occasionally caused + core dumps when an out-of-range job was referenced. + +d. Fixed the `type' and `command' builtins to do better reporting of + commands that are not found in $PATH or the hash table. + +e. Fixed a POSIX.2 compliance problem in the command builtin -- commands + are supposed to be reported as full pathnames. + +f. The `echo' builtin now returns failure if a write error occurs. + +g. Fixed a bug which caused the locale to not be reset correctly when + LC_ALL was unset. + +h. Changed description of `getopts' in man page and reference manual to make + it clear that option characters may be characters other than letters. + +i. If the shell exits while in a function, make sure that any trap on EXIT + doesn't think the function is still executing. + +j. Bashbug now tries harder to find a usable editor if $EDITOR is not set, + rather than simply defaulting to `emacs'. + +k. Changes to the scripts that guess and canonicalize the system type, from + the latest `automake' distribution via Debian. + +l. When using named pipes for process substitution, make sure the file + descriptors opened for reading are set to non-blocking mode. + +m. Fixed a bug that caused termination of pipelines that are killed by a + signal to not be reported in some cases. + +n. When not in literal-history mode, shell comment lines are not added to + the history list. + +o. When running in POSIX.2 mode, bash no longer performs word splitting on + the expanded value of the word supplied as the filename argument to + redirection operators. + +p. The prompt string decoding code now backslash-quotes only characters that + are special within double quotes when expanding the \w and \W escape + sequences. + +q. Fixed a bug in the prompt decoding code that could cause a non-interactive + shell to seg fault if `\u' was used in PS4 and the shell was in xtrace + mode. + +r. Fixed a bug that caused function definitions to be printed with any + redirections that should be attached to the entire function before the + closing brace. + +s. Changed the tilde expansion code for Cygwin systems to avoid creating + pathnames beginning with `//' if $HOME == `/'. + +t. Fixed a couple of autoconf tests to avoid creating files with fixed names + in /tmp. + +u. The `trap' and `kill' builtins now know the names of the POSIX.1b real- + time signals on systems which support them. + +2. Changes to Readline + +a. Fixed a problem with the single-quote quoting function that could cause + buffer overflows. + +b. Fixed a bug that caused incorrect `stat characters' to be printed if + the files being completed were in the root directory and visible-stats + was enabled. + +3. New Features in Bash + +a. There is a new `rbash.1' manual page, from the Debian release. + +b. The `--enable-usg-echo-default' option to `configure' has been renamed to + `--enable-xpg-echo-default'. The old option is still there for backwards + compatibility. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta2, +and the previous version, bash-2.04-beta1. + +1. Changes to Bash + +a. Fixed a bug that could cause pipes to be closed inappropriately in + some obscure cases. + +b. Fixed a bug that caused creation of the exported environment to clobber + the current command string if there were any exported shell functions. + +c. Some changes were made to reduce bash's memory usage. + +d. Fixed a problem with programmable completion and filenames to be + completed containing quote characters. + +e. Changed the code the removes named pipes created for the <(...) and >(...) + expansions to defer removal until after any current shell function has + finished executing. + +f. Fixed a bug in `select' which caused it to not handle the `continue' + builtin correctly. + +g. Autoconf tests added for cygwin32 and mingw32. + +2. New Features in Bash + +a. The `--with-bash-malloc' configure option replaces `--with-gnu-malloc' + (which is still there for backwards compatibility). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta1, +and the previous version, bash-2.04-alpha1. + +1. Changes to Bash + +a. Fixed a bug in the programmable completion code that occurred when + trying to complete command lines containing a `;' or `@'. + +b. The file descriptor from which the shell is reading a script is now + moved to a file descriptor above the user-addressible range. + +c. Changes to `printf' so that it can handle integers beginning with 0 + or 0x as octal and hex, respectively. + +d. Fixes to the programmable completion code so it handles nonsense like + `compgen -C xyz' gracefully. + +e. The shell no longer modifies the signal handler for SIGPROF, allowing + profiling again on certain systems. + +f. The shell checks for a new window size, if the user has requested it, + after a process exits due to a signal. + +g. Fixed a bug with variables with null values in a program's temporary + environment and the bash getenv() replacement. + +h. `declare' and the other builtins that take variable assignments as + arguments now honor `set -a' and mark modified variables for export. + +i. Some changes were made for --dump-po-strings mode when writing strings + with embedded newlines. + +j. The code that caches export strings from the initial environment now + duplicates the string rather than just pointing into the environment. + +k. The filename completion quoting code now uses single quotes by default + if the filename being completed contains newlines, since \<newline> + has a special meaning to the parser. + +l. Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and + u_int32_t, respectively to avoid conflicts on certain Unix versions. + +m. Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x. + +n. Fixed a problem with hostname-to-ip-address translation in the + /dev/(tcp|udp)/hostname/port redirection code. + +o. The texinfo manual has been reorganized slightly. + +p. Filename generation (globbing) range comparisons in bracket expressions + no longer use strcoll(3) even if it is available, since it has unwanted + effects in certain locales. + +q. Fixed a cosmetic problem in the source that caused the shell to not + compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was. + +r. Fixed a bug in the here-document code tripped when the file descriptor + opened to the file containing the text of the here document was the + same as a redirector specified by the user. + +s. Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline' + in `time ! pipeline'. + +t. Fixed a bug with the `wait' builtin which manifested itself when an + interrupt was received while the shell was waiting for asynchronous + processes in a shell script. + +u. Fixed the DEBUG trap code so that it has the correct value of $?. + +v. Fixed a bug in the parameter pattern substitution code that could cause + the shell to attempt to free unallocated memory if the pattern started + with `/' and an expansion error occurs. + +w. Fixed a bug in the positional parameter substring code that could + cause the shell to loop freeing freed memory. + +x. Fixed a bug in the positional parameter pattern substitution code so + that it correctly handles null replacement strings with a pattern + string prefixed with `%' or `#'. + +y. The shell no longer attempts to import functions from the environment if + started with `-n'. + +z. Fixed a bug that caused `return' in a command substitution executed in + a shell function to return from the function in a subshell and continue + execution. + +aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell + is restricted. + +bb. The wait* job control functions now behave better if called when there + are no unwaited-for children. + +cc. Command substitution no longer unconditionally disables job control in + the subshell started to run the command. + +dd. A bug was fixed that occasionally caused traps to mess up the parser + state. + +ee. `bashbug' now honors user headers in the mail message it sends. + +ff. A bug was fixed that caused the `:p' history modifier to not print the + history expansion if the `histverify' option was set. + +2. Changes to Readline + +a. Fixed a bug in the redisplay code for lines with more than 256 line + breaks. + +b. A bug was fixed which caused invisible character markers to not be + stripped from the prompt string if the terminal was in no-echo mode. + +c. Readline no longer tries to get the variables it needs for redisplay + from the termcap entry if the calling application has specified its + own redisplay function. Readline treats the terminal as `dumb' in + this case. + +d. Fixes to the SIGWINCH code so that a multiple-line prompt with escape + sequences is redrawn correctly. + +3. New Features in Bash + +a. `bashbug' now accepts `--help' and `--version' options. + +b. There is a new `xpg_echo' option to `shopt' that controls the behavior + of echo with respect to backslash-escaped characters at runtime. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-alpha1, +and the previous version, bash-2.04-devel. + +1. Changes to Bash + +a. Fixed a bug that could cause core dumps when performing substring + expansion. + +b. Shared object configuration changes for: Solaris, OSF/1 + +c. The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities + for pathname expansion now understands GLOBIGNORE. + +d. The code that implements `eval' was changed to save the value of the + current prompt, so an eval in a shell function called by the programmable + completion code will not change the prompt to $PS2. + +e. Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to + config-top.h. If this is defined, all login shells will read the + startup files, not just interactive and non-interactive started with + the `--login' option. + +f. Fixed a bug that caused the expansion code to occasionally dump core if + IFS contained characters > 128. + +g. Fixed a problem with the grammar so that a newline is not required + after the `))' in the new-style arithmetic for statement; a semicolon + may be used as expected. + +h. Variable indirection may now reference the shell's special variables. + +i. The $'...' and $"..." constructs are now added to the history correctly + if they contain newlines and command-oriented history is enabled. + +j. It is now an error to try to assign a value to a function-local copy + of a readonly shell variable (declared with the `local' builtin). + +2. Changes to Readline + +a. The history file code now uses O_BINARY mode when reading and writing + the history file on cygwin32. + +3. New Features in Bash + +a. A new programmable completion facility, with two new builtin commands: + complete and compgen. + +b. configure has a new option, `--enable-progcomp', to compile in the + programmable completion features (enabled by default). + +c. `shopt' has a new option, `progcomp', to enable and disable programmable + completion at runtime. + +d. Unsetting HOSTFILE now clears the list of hostnames used for completion. + +4. New Features in Readline + +a. A new variable, rl_gnu_readline_p, always 1. The intent is that an + application can verify whether or not it is linked with the `real' + readline library or some substitute. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-devel, +and the previous version, bash-2.03-release. + +1. Changes to Bash + +a. System-specific configuration and source changes for: Interix, Rhapsody + +b. Fixed a bug in execute_cmd.c that resulted in a compile-time error if + JOB_CONTROL was not defined. + +c. An obscure race condition in the trap code was fixed. + +d. The string resulting from $'...' is now requoted to avoid any further + expansion. + +e. The $'...' quoting syntax now allows backslash to escape a single quote, + for ksh-93 compatibility. + +f. The $"..." quoting syntax now escapes backslashes and double quotes in + the translated string when displaying them with the --dump-po-strings + option. + +g. `echo -e' no longer converts \' to '. + +h. Fixes were made to the extended globbing code to handle embedded (...) + patterns better. + +i. Some improvements were made to the code that unsets `nodelay' mode on + the file descriptor from which bash is reading input. + +j. Some changes were made to the replacement termcap library for better + operation on MS-DOS. + +k. Some changes were made to the tilde expansion code to handle backslash + as a pathname separator on MS-DOS. + +l. The source has been reorganized a little bit -- there is now an `include' + subdirectory, and lib/posixheaders has been removed. + +m. Improvements were made to the `read' builtin so that it makes many + fewer read(2) system calls. + +n. The expansion of $- will include `c' and `s' when those options are + supplied at shell invocation. + +o. Several improvments were made to the completion code: variable completion + now works better when there are unterminated expansions, command + completion understands quotes better, and completion now works in certain + unclosed $(... constructs. + +p. The arithmetic expansion code was fixed to not need the value of a + variable being assigned a value (fixes the "ss=09; let ss=10" bug). + +q. Some changes were made to make exported environment creation faster. + +r. The html documentation will be installed into $(htmldir) if that variable + has a value when `make install' is run. + +s. Fixed a bug that would cause the bashrc file to be sourced inappropriately + when bash is started by sshd. + +t. The SSH_CLIENT environment variable is no longer auto-exported. + +u. A bug that caused redirections with (...) subshells to be performed in + the wrong order was fixed. + +v. A bug that occasionally caused inappropriate expansion of assignment + statements in compound array assignments was fixed. + +w. The code that parses the words in a compound array assignment was + simplified considerably and should work better now. + +x. Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant + when a user attempts to retrieve the status of a terminated background + process. + +y. Fixes to the `printf' builtin so that it doesn't try to expand all + backslash escape sequences in the format string before parsing it for + % format specifiers. + +2. Changes to Readline + +a. The history library tries to truncate the history file only if it is a + regular file. + +b. A bug that caused _rl_dispatch to address negative array indices on + systems with signed chars was fixed. + +c. rl-yank-nth-arg now leaves the history position the same as when it was + called. + +d. Changes to the completion code to handle MS-DOS drive-letter:pathname + filenames. + +e. Completion is now case-insensitive by default on MS-DOS. + +f. Fixes to the history file manipulation code for MS-DOS. + +g. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS. + +h. Some fixes were made to the redisplay code for better operation on MS-DOS. + +i. The quoted-insert code will now insert tty special chars like ^C. + +j. A bug was fixed that caused the display code to reference memory before + the start of the prompt string. + +k. More support for __EMX__ (OS/2). + +l. A bug was fixed in readline's signal handling that could cause infinite + recursion in signal handlers. + +m. A bug was fixed that caused the point to be less than zero when rl_forward + was given a very large numeric argument. + +n. The vi-mode code now gets characters via the application-settable value + of rl_getc_function rather than calling rl_getc directly. + +3. New Features in Bash + +a. The history builtin has a `-d offset' option to delete the history entry + at position `offset'. + +b. The prompt expansion code has two new escape sequences: \j, the number of + active jobs; and \l, the basename of the shell's tty device name. + +c. The `bind' builtin has a new `-x' option to bind key sequences to shell + commands. + +d. There is a new shell option, no_empty_command_completion, which, when + enabled, disables command completion when TAB is typed on an empty line. + +e. The `help' builtin has a `-s' option to just print a builtin's usage + synopsys. + +f. There are several new arithmetic operators: id++, id-- (variable + post-increment/decrement), ++id, --id (variabl pre-increment/decrement), + expr1 , expr2 (comma operator). + +g. There is a new ksh-93 style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done + +h. The `read' builtin has a number of new options: + -t timeout only wait timeout seconds for input + -n nchars only read nchars from input instead of a full line + -d delim read until delim rather than newline + -s don't echo input chars as they are read + +i. The redirection code now handles several filenames specially: + /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or + not they are present in the file system. + +j. The redirection code now recognizes pathnames of the form + /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket + of the appropriate type to the specified port on the specified host. + +k. The ksh-93 ${!prefix*} expansion, which expands to the names of all + shell variables whose names start with prefix, has been implemented. + +l. There is a new dynamic variable, FUNCNAME, which expands to the name of + a currently-executing function. Assignments to FUNCNAME have no effect. + +m. The GROUPS variable is no longer readonly; assignments to it are silently + discarded. This means it can be unset. + +4. New Features in Readline + +a. Parentheses matching is now always compiled into readline, and enabled + or disabled when the value of the `blink-matching-paren' variable is + changed. + +b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename. + +c. MS-DOS systems now use ~/_history as the default history file. + +d. history-search-{forward,backward} now leave the point at the end of the + line when the string to search for is empty, like + {reverse,forward}-search-history. + +e. history-search-{forward,backward} now leave the last history line found + in the readline buffer if the second or subsequent search fails. + +f. New function for use by applications: rl_on_new_line_with_prompt, used + when an application displays the prompt itself before calling readline(). + +g. New variable for use by applications: rl_already_prompted. An application + that displays the prompt itself before calling readline() must set this to + a non-zero value. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-release, +and the previous version, bash-2.03-beta2. + +1. Changes to Bash + +a. A file descriptor leak in the `fc' builtin was fixed. + +b. A bug was fixed in the `read' builtin that caused occasional spurious + failures when using `read -e'. + +c. The version code needed to use the value of the cpp variable + CONF_MACHTYPE rather than MACHTYPE. + +d. A new test was added to exercise the command printing and copying code. + +e. A bug was fixed that caused `time' to be recognized as a reserved word + if it was the first pattern in a `case' statement pattern list. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-beta2, +and the previous version, bash-2.03-beta1. + +1. Changes to Bash + +a. Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2. + +b. config.{guess,sub} support added for the NEC SX4. + +c. Changed some of the cross-compiling sections of the configure macros in + aclocal.m4 so that configure won't abort. + +d. Slight changes to how the HTML versions of the bash and readline manuals + are generated. + +e. Fixed conditional command printing to avoid interpreting printf `%'-escapes + in arguments to [[. + +f. Don't include the bash malloc on all variants of the alpha processor. + +g. Changes to configure to make --enable-profiling work on Solaris 2.x. + +h. Fixed a bug that manifested itself when shell functions were called + between calls to `getopts'. + +i. Fixed pattern substitution so that a bare `#'as a pattern causes the + replacement string to be prefixed to the search string, and a bare + `%' causes the replacement string to be appended to the search string. + +j. Fixed a bug in the command execution code that caused child processes + to occasionally have the wrong value for $!. + +2. Changes to Readline + +a. Added code to the history library to catch history substitutions using + `&' without a previous history substitution or search having been + performed. + +3. New Features in Bash + +4. New Features in Readline + +a. New bindable variable: `isearch-terminators'. + +b. New bindable function: `forward-backward-delete-char' (unbound by default). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-beta1, +and the previous version, bash-2.03-alpha. + +1. Changes to Bash + +a. A change was made to the help text for `{...}' to make it clear that a + semicolon is required before the closing brace. + +b. A fix was made to the `test' builtin so that syntax errors cause test + to return an exit status > 1. + +c. Globbing is no longer performed on assignment statements that appear as + arguments to `assignment builtins' such as `export'. + +d. System-specific configuration changes were made for: Rhapsody, + AIX 4.2/gcc, BSD/OS 4.0. + +e. New loadable builtins: ln, unlink. + +f. Some fixes were made to the globbing code to handle extended glob patterns + which immediately follow a `*'. + +g. A fix was made to the command printing code to ensure that redirections + following compound commands have a space separating them from the rest + of the command. + +h. The pathname canonicalization code was changed to produce fewer leading + `//' sequences, since those are interpreted as network file system + pathnames on some systems. + +i. A fix was made so that loops containing `eval' commands in commands passed + to `bash -c' would not exit prematurely. + +j. Some changes were made to the job reaping code when the shell is not + interactive, so the shell will retain exit statuses longer for examination + by `wait'. + +k. A fix was made so that `jobs | command' works again. + +l. The erroneous compound array assignment var=((...)) is now a syntax error. + +m. A change was made to the dynamic loading code in `enable' to support + Tenon's MachTen. + +n. A fix was made to the globbing code so that extended globbing patterns + will correctly match `.' in a bracket expression. + +2. Changes to Readline + +a. A fix was made to the completion code in which a typo caused the wrong + value to be passed to the function that computed the longest common + prefix of the list of matches. + +b. The completion code now checks the value of rl_filename_completion_desired, + which is set by application-supplied completion functions to indicate + that filename completion is being performed, to decide whether or not to + call an application-supplied `ignore completions' function. + +3. New Features in Bash + +a. A change was made to the startup file code so that any shell begun with + the `--login' option, even non-interactive shells, will source the login + shell startup files. + +4. New Features in Readline + +a. A new variable, rl_erase_empty_line, which, if set by an application using + readline, will cause readline to erase, prompt and all, lines on which the + only thing typed was a newline. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-alpha, +and the previous version, bash-2.02.1-release. + +1. Changes to Bash + +a. System-specific configuration changes were made for: Irix 6.x, Unixware 7. + +b. The texi2dvi and texi2html scripts were updated to the latest versions + from the net. + +c. The configure tests that determine which native type is 32 bits were + changed to not require a compiled program. + +d. Fixed a bug in shell_execve that could cause memory to be freed twice + after a failed exec. + +e. The `printf' test uses `diff -a' if it's available to prevent confusion + due to the non-ascii output. + +f. Shared object configuration is now performed by a shell script, + support/shobj-conf, which generates values to be substituted into + makefiles by configure. + +g. Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a + return value. + +h. Changes were made to `ulimit' to work around HPUX 9.x's peculiar + handling of RLIMIT_FILESIZE. + +i. Some new loadable builtins were added: id, printenv, sync, whoami, push, + mkdir. `pushd', `popd', and `dirs' can now be built as regular or + loadable builtins from the same source file. + +j. Changes were made to `printf' to handle NUL bytes in the expanded format + string. + +k. The various `make clean' Makefile targets now descend into lib/sh. + +l. The `type' builtin was changed to use the internal `getopt' so that things + like `type -ap' work as expected. + +m. There is a new configuration option, --with-installed-readline, to link + bash with a locally-installed version of readline. Only readline version + 4.0 and later releases can support this. Shared and static libraries + are supported. The installed include files are used. + +n. There is a new autoconf macro used to find which basic type is 64 bits. + +o. Dynamic linking and loadable builtins should now work on SCO 3.2v5*, + AIX 4.2 with gcc, Unixware 7, and many other systems using gcc, where + the `-shared' options works correctly. + +p. A bug was fixed in the bash filename completion code that caused memory to + be freed twice if a directory name containing an unset variable was + completed and the -u option was set. + +q. The prompt expansion code now quotes the `$' in the `\$' expansion so it + is not processed by subsequent parameter expansion. + +r. Fixed a parsing bug that caused a single or double quote after a `$$' to + trigger ANSI C expansion or locale translation. + +s. Fixed a bug in the globbing code that caused quoted filenames containing + no globbing characters to sometimes be incorrectly expanded. + +t. Changes to the default prompt strings if prompt string decoding is not + compiled into the shell. + +u. Added `do', `then', `else', `{', and `(' to the list of keywords that may + precede the `time' reserved word. + +v. The shell may now be cross-built for BeOS as well as cygwin32. + +w. The conditional command execution code now treats `=' the same as `==' + for deciding when to perform pattern matching. + +x. The `-e' option no longer causes the shell to exit if a command exits + with a non-zero status while running the startup files. + +y. The `printf' builtin no longer dumps core if a modifier is supplied in + the format string without a conversion character (e.g. `%h'). + +z. Array assignments of the form a=(...) no longer show up in the history + list. + +aa. The parser was fixed to obey the POSIX.2 rules for finding the closing + `}' in a ${...} expression. + +bb. The history file is now opened with mode 0600 rather than 0666, so bash + no longer relies on the user's umask being set appropriately. + +cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now + relies on proper behavior from the C library. + +dd. Minor changes were made to allow quoted variable expansions using + ${...} to be completed correctly if there is no closing `"'. + +ee. Changes were made to builtins/Makefile.in so that configuring the shell + with `--enable-profiling' works right and builtins/mkbuiltins is + generated. + +2. Changes to Readline + +a. The version number is now 4.0. + +b. There is no longer any #ifdef SHELL code in the source files. + +c. Some changes were made to the key binding code to fix memory leaks and + better support Win32 systems. + +d. Fixed a silly typo in the paren matching code -- it's microseconds, not + milliseconds. + +e. The readline library should be compilable by C++ compilers. + +f. The readline.h public header file now includes function prototypes for + all readline functions, and some changes were made to fix errors in the + source files uncovered by the use of prototypes. + +g. The maximum numeric argument is now clamped at 1000000. + +h. Fixes to rl_yank_last_arg to make it behave better. + +i. Fixed a bug in the display code that caused core dumps if the prompt + string length exceeded 1024 characters. + +j. The menu completion code was fixed to properly insert a single completion + if there is only one match. + +k. A bug was fixed that caused the display code to improperly display tabs + after newlines. + +3. New Features in Bash + +a. New `shopt' option, `restricted_shell', indicating whether or not the + shell was started in restricted mode, for use in startup files. + +b. Filename generation is now performed on the words between ( and ) in + array assignments (which it probably should have done all along). + +c. OLDPWD is now auto-exported, as POSIX.2 seems to require. + +d. ENV and BASH_ENV are read-only variables in a restricted shell. + +4. New Features in Readline + +a. Many changes to the signal handling: + o Readline now catches SIGQUIT and cleans up the tty before returning; + o A new variable, rl_catch_signals, is available to application writers + to indicate to readline whether or not it should install its own + signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, + SIGTTIN, and SIGTTOU; + o A new variable, rl_catch_sigwinch, is available to application + writers to indicate to readline whether or not it should install its + own signal handler for SIGWINCH, which will chain to the calling + applications's SIGWINCH handler, if one is installed; + o There is a new function, rl_free_line_state, for application signal + handlers to call to free up the state associated with the current + line after receiving a signal; + o There is a new function, rl_cleanup_after_signal, to clean up the + display and terminal state after receiving a signal; + o There is a new function, rl_reset_after_signal, to reinitialize the + terminal and display state after an application signal handler + returns and readline continues + +b. There is a new function, rl_resize_terminal, to reset readline's idea of + the screen size after a SIGWINCH. + +c. New public functions: rl_save_prompt and rl_restore_prompt. These were + previously private functions with a `_' prefix. + +d. New function hook: rl_pre_input_hook, called just before readline starts + reading input, after initialization. + +e. New function hook: rl_display_matches_hook, called when readline would + display the list of completion matches. The new function + rl_display_match_list is what readline uses internally, and is available + for use by application functions called via this hook. + +f. New bindable function, delete-char-or-list, like tcsh. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02.1-release, +and the previous version, bash-2.02-release. + +1. Changes to Bash + +a. A bug that caused the bash readline support to not compile unless aliases + and csh-style history were configured into the shell was fixed. + +b. Fixed a bug that could cause a core dump when here documents contained + more than 1000 characters. + +c. Fixed a bug that caused a CDPATH entry of "" to not be treated the same + as the current directory when in POSIX mode. + +d. Fixed an alignment problem with the memory returned by the bash malloc, + so returned memory is now 64-bit aligned. + +e. Fixed a bug that caused command substitutions executed within pipelines + to put the terminal in the wrong process group. + +f. Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop, + Unixware 2, and Unixware 7. + +g. Fixes to the pattern matching code to make it work correctly for eight-bit + characters. + +h. Fixed a problem that occasionally caused the shell to display the wrong + value for the new working directory when changing to a directory found + in $CDPATH when in physical mode. + +i. Fixed a bug that caused core dumps when using conditional commands in + shell functions. + +j. Fixed a bug that caused the printf builtin to loop forever if the format + string did not consume any of the arguments. + +k. Fixed a bug in the parameter expansion code that caused "$@" to be + incorrectly split if $IFS did not contain a space character. + +l. Fixed a bug that could cause a core dump when completing hostnames if + the number of matching hostnames was an exact multiple of 16. + +m. Fixed a bug that caused the shell to fork too early when a command + such as `%2 &' was given. + +2. Changes to Readline + +a. Fixed a problem with redisplay that showed up when the prompt string was + longer than the screen width and the prompt contained invisible characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-release, +and the previous version, bash-2.02-beta2. + +1. Changes to Bash + +a. A bug was fixed that caused the terminal process group to be set + incorrectly when performing command substitution of builtins in a + pipeline. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-beta2, +and the previous version, bash-2.02-beta1. + +1. Changes to Bash + +a. Attempting to `wait' for stopped jobs now generates a warning message. + +b. Pipelines which exit due to SIGPIPE in non-interactive shells are now + not reported if the shell is compiled -DDONT_REPORT_SIGPIPE. + +c. Some changes were made to builtins/psize.sh and support/bashbug.sh to + attempt to avoid some /tmp file races and surreptitious file + substitutions. + +d. Fixed a bug that caused the shell not to compile if configured with + dparen arithmetic but without aliases. + +e. Fixed a bug that caused the input stream to be switched when assigning + empty arrays with `bash -c'. + +f. A bug was fixed in the readline expansion glue code that caused bash to + dump core when expanding lines with an unclosed single quote. + +g. A fix was made to the `cd' builtin so that using a non-empty directory + from $CDPATH results in an absolute pathname of the new current working + directory to be displayed after the current directory is changed. + +h. Fixed a bug in the variable assignment code that caused the shell to + dump core when referencing an unset variable with `set -u' enabled in + an assignment statement preceding a command. + +i. Fixed a bug in the exit trap code that caused reserved words to not be + recognized under certain circumstances. + +j. Fixed a bug in the parameter pattern substitution code so that quote + removal is performed. + +k. The shell should now configure correctly on Apple Rhapsody systems. + +l. The `kill' builtin now prints a usage message if it is not passed any + arguments. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-beta1, +and the previous version, bash-2.02-alpha1. + +1. Changes to Bash + +a. A few compilation bugs were fixed in the new extended globbing code. + +b. Executing arithmetic commands now sets the command name to `((' so + error messages look right. + +c. Fixed some build problems with various configuration options. + +d. The `printf' builtin now aborts immediately if an illegal format + character is encountered. + +e. The code that creates here-documents now behaves better if the file it's + trying to create already exists for some reason. + +f. Fixed a problem with the extended globbing code that made patterns like + `x+*' expand incorrectly. + +g. The prompt string expansion code no longer quotes tildes with backslashes. + +h. The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in + the presence of lstat(2) failures. + +i. Fixed a bug with strsub() that caused core dumps when executing `fc -s'. + +j. The mail checking code now ensures that it has a valid default mailpath. + +k. A bug was fixed that caused local variables to be unset inappropriately + when sourcing a script from within another sourced script. + +l. A bug was fixed in the history saving code so that functions are saved + in the history list correctly if `cmdhist' is enabled, but `lithist' + is not. + +m. A bug was fixed that caused printf overflows when displaying error + messages. + +n. It should be easier to build the loadble builtins in examples/loadables, + though some manual editing of the generated Makefile is still required. + +o. The user's primary group is now always ${GROUPS[0]}. + +p. Some updates were made to support/config.guess from the GNU master copy. + +q. Some changes were made to the autoconf support for Solaris 2.6 large + files. + +r. The `command' builtins now does the right thing when confstr(3) cannot + find a value for _CS_PATH. + +s. Extended globbing expressions like `*.!(c)' are not history expanded if + `extglob' is enabled. + +t. Using the `-P' option to `cd' will force the value that is assigned to + PWD to not contain any symbolic links. + +2. Changes to Readline + +a. The code that prints completion listings now behaves better if one or + more of the filenames contains non-printable characters. + +b. The time delay when showing matching parentheses is now 0.5 seconds. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-alpha1, +and the previous version, bash-2.01.1-release. + +1. Changes to Bash + +a. OS-specific configuration changes for: BSD/OS 3.x, Minix 2.x, + Solaris 2.6, SINIX SVR4. + +b. Changes were made to the generated `info' files so that `install-info' + works correctly. + +c. PWD is now auto-exported. + +d. A fix was made to the pipeline code to make sure that the shell forks + to execute simple commands consisting solely of assignment statements. + +e. Changes to the test suite for systems with 14-character filenames. + +f. The default sizes of some internal hash tables have been made smaller + to reduce the shell's memory footprint. + +g. The `((...))' arithmetic command is now executed directly instead of + being translated into `let "..."'. + +h. Fixes were made to the expansion code so that "$*", "$@", "${array[@]}", + and "${array[@]}" expand correctly when IFS does not contain a space + character, is unset, or is set to NULL. + +i. The indirect expansion code (${!var}) was changed so that the only + valid values of `var' are variable names, positional parameters, `#', + `@', and `*'. + +j. An arithmetic expression error in a $((...)) expansion now causes a + non-interactive shell running in posix mode to exit. + +k. Compound array assignment now splits the words within the parentheses + on shell metacharacters like the parser would before expansing them + and performing the assignment. This is for compatibility with ksh-93. + +l. The internal shell backslash-quoting code (used in the output of `set' + and completion) now quotes tildes if they appear at the start of the + string or after a `=' or `:'. + +m. A couple of bugs with `shopt -o' were fixed. + +n. `bash +o' now displays the same output as `set +o' before starting an + interactive shell. + +o. A bug that caused command substitution and the `eval' builtin to + occasionally free memory twice when an error was encountered was fixed. + +p. The filename globbing code no longer requires read permission for a + directory when the filename to be matched does not contain any globbing + characters, as POSIX.2 specifies. + +q. A bug was fixed so that the job containing the last asynchronous + process is not removed from the job table until a `wait' is executed + for that process or another asynchronous process is started. This + satisfies a POSIX.2 requirement. + +r. A `select' bug was fixed so that a non-numeric user response is treated + the same as a numeric response that is out of range. + +s. The shell no longer parses the value of SHELLOPTS from the environment + if it is restricted, running setuid, or running in `privileged mode'. + +t. Fixes were made to enable large file support on systems such as + Solaris 2.6, where the size of a file may be larger than can be held + in an `int'. + +u. The filename hashing code was fixed to not add `./' to the beginning of + filenames which already begin with `./'. + +v. The configure script was changed so that the GNU termcap library is not + compiled in if `prefer-curses' has been specified. + +w. HISTCONTROL and HISTIGNORE are no longer applied to the second and + subsequent lines of a multi-line command. + +x. A fix was made to `disown' so that it does a better job of catching + out-of-range jobs. + +y. Non-interactive shells no longer report the status of processes terminated + due to SIGINT, even if the standard output is a terminal. + +z. A bug that caused the output of `jobs' to have extra carriage returns + was fixed. + +aa. A bug that caused PIPESTATUS to not be set when builtins or shell + functions were executed in the foreground was fixed. + +bb. Bash now attempts to detect when it is being run by sshd, and treats + that case identically to being run by rshd. + +cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell + options was changed was fixed. + +dd. The `kill' builtin now disallows empty or missing process id arguments + instead of treating them as identical to `0', which means the current + process. + +ee. `var=value declare -x var' now behaves identically to + `var=value export var'. Similarly for `var=value declare -r var' and + `var=value readonly var'. + +ff. A few memory leaks were fixed. + +gg. `alias' and `unalias' now print error messages when passed an argument + that is not an alias for printing or deletion, even when the shell is + not interactive, as POSIX.2 specifies. + +hh. `alias' and `alias -p' now return a status of 0 when no aliases are + defined, as POSIX.2 specifes. + +ii. `cd -' now prints the pathname of the new working directory if the shell + is interactive. + +jj. A fix was made so that the code that binds $PWD now copes with getcwd() + returning NULL. + +kk. `unset' now checks whether or not a function name it's trying to unset + is a valid shell identifier only when the shell is running in posix mode. + +ll. A change was made to the code that generates filenames for here documents + to make them less prone to name collisions. + +mm. The parser was changed so that `time' is recognized as a reserved word + only at the beginning of a pipeline. + +nn. The pathname canonicalization code was changed so that `//' is converted + into `/', but all other pathnames beginning with `//' are left alone, as + POSIX.2 specifies. + +oo. The `logout' builtin will no longer exit a non-interactive non-login + shell. + +2. Changes to Readline + +a. Fixed a problem in the readline test program rltest.c that caused a core + dump. + +b. The code that handles parser directives in inputrc files now displays + more error messages. + +c. The history expansion code was fixed so that the appearance of the + history comment character at the beginning of a word inhibits history + expansion for that word and the rest of the input line. + +3. New Features in Bash + +a. A new version of malloc, based on the older GNU malloc, that has many + changes, is more page-based, is more conservative with memory usage, + and does not `orphan' large blocks when they are freed. + +b. A new version of gmalloc, based on the old GLIBC malloc, with many + changes and range checking included by default. + +c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic + Regular Expression matching, including character classes, collating + symbols, equivalence classes, and support for case-insensitive pattern + matching. + +d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been + implemented, controlled by a new `shopt' option, `extglob'. + +e. There is a new ksh-like `[[' compound command, which implements + extended `test' functionality. + +f. There is a new `printf' builtin, implemented according to the POSIX.2 + specification. + +g. There is a new feature for command substitution: $(< filename) now expands + to the contents of `filename', with any trailing newlines removed + (equivalent to $(cat filename)). + +h. There are new tilde prefixes which expand to directories from the + directory stack. + +i. There is a new `**' arithmetic operator to do exponentiation. + +j. There are new configuration options to control how bash is linked: + `--enable-profiling', to allow bash to be profiled with gprof, and + `--enable-static-link', to allow bash to be linked statically. + +k. There is a new configuration option, `--enable-cond-command', which + controls whether or not the `[[' command is included. It is on by + default. + +l. There is a new configuration option, `--enable-extended-glob', which + controls whether or not the ksh extended globbing feature is included. + It is enabled by default. + +m. There is a new configuration #define in config.h.top that, when enabled, + will cause all login shells to source /etc/profile and one of the user- + specific login shell startup files, whether or not the shell is + interactive. + +n. There is a new invocation option, `--dump-po-strings', to dump + a shell script's translatable strings ($"...") in GNU `po' format. + +o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive + pattern matching when globbing filenames and using the `case' construct. + +p. There is a new `shopt' option, `huponexit', which, when enabled, causes + the shell to send SIGHUP to all jobs when an interactive login shell + exits. + +q. `bind' has a new `-u' option, which takes a readline function name as an + argument and unbinds all key sequences bound to that function in a + specified keymap. + +r. `disown' now has `-a' and `-r' options, to limit operation to all jobs + and running jobs, respectively. + +s. The `shopt' `-p' option now causes output to be displayed in a reusable + format. + +t. `test' has a new `-N' option, which returns true if the filename argument + has been modified since it was last accessed. + +u. `umask' now has a `-p' option to print output in a reusable format. + +v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...' + translation code. It expands to the character whose ascii code is NNN + in hexadecimal. + +w. The prompt string expansion code has a new `\r' escape sequence. + +x. The shell may now be cross-compiled for the CYGWIN32 environment on + a Unix machine. + +4. New Features in Readline + +a. There is now an option for `iterative' yank-last-arg handline, so a user + can keep entering `M-.', yanking the last argument of successive history + lines. + +b. New variable, `print-completions-horizontally', which causes completion + matches to be displayed across the screen (like `ls -x') rather than up + and down the screen (like `ls'). + +c. New variable, `completion-ignore-case', which causes filename completion + and matching to be performed case-insensitively. + +d. There is a new bindable command, `magic-space', which causes history + expansion to be performed on the current readline buffer and a space to + be inserted into the result. + +e. There is a new bindable command, `menu-complete', which enables tcsh-like + menu completion (successive executions of menu-complete insert a single + completion match, cycling through the list of possible completions). + +f. There is a new bindable command, `paste-from-clipboard', for use on Win32 + systems, to insert the text from the Win32 clipboard into the editing + buffer. + +g. The key sequence translation code now understands printf-style backslash + escape sequences, including \NNN octal escapes. These escape sequences + may be used in key sequence definitions or macro values. + +h. An `$include' inputrc file parser directive has been added. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01.1-release, +and the previous version, bash-2.01-release. + +1. Changes to Bash + +a. The select command was fixed to check the validity of the user's + input more strenuously. + +b. A bug was fixed that prevented `time' from timing commands correctly + when supplied as an argument to `bash -c'. + +c. A fix was made to the mail checking code to keep from adding the same + mail file to the list of files to check multiple times when parsing + $MAILPATH. + +d. Fixed an off-by-one error in the tilde expansion library. + +e. When using the compound array assignment syntax, the old value of + the array is cleared before assigning the new value. + +f. Fixed a bug that could cause a core dump when a trap handler was reset + to the default in the trap command associated with that signal. + +g. Fixed a bug in the locale code that occurred when assigning a value + to LC_ALL. + +h. A change was made to the parser so that words of the form xxx=(...) + are not considered compound assignment statements unless there are + characters before the `='. + +i. A fix was made to the command tracing code to correctly quote each + word of output. + +j. Some changes were made to the bash-specific autoconf tests to make them + more portable. + +k. Completion of words with globbing characters now correctly quotes the + result. + +l. The directory /var/spool/mail is now preferred to /usr/spool/mail when + configure is deciding on the default mail directory. + +m. The brace completion code was fixed to not quote the `{' and `}'. + +n. Some fixes were made to make $RANDOM more random in subshells. + +o. System-specific changes were made to configure for: SVR4.2 + +p. Changes were made so that completion of words containing globbing chars + substitutes the result only if a single filename was matched. + +q. The window size is now recomputed after a job is stopped with SIGTSTP if + the user has set `checkwinsize' with `shopt'. + +r. When doing substring expansion, out-of-range substring specifiers now + cause nothing to be substituted rather than an expansion error. + +s. A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' -- + only `EXIT' and `DEBUG' are accepted. + +t. The display of trapped signals now uses the signal number if signals + for which bash does not know the name are trapped. + +u. A fix was made so that `bash -r' does not turn on restricted mode until + after the startup files are executed. + +v. A bug was fixed that occasionally caused a core dump when a variable + found in the temporary environment of export/declare/readonly had a + null value. + +w. A bug that occasionally caused unallocated memory to be passed to free() + when doing arithmetic substitution was fixed. + +x. A bug that caused a buffer overrun when expanding a prompt string + containing `\w' and ${#PWD} exceeded PATH_MAX was fixed. + +y. A problem with the completion code that occasionally caused it to + refer to a character before the beginning of the readline line buffer + was fixed. + +z. A bug was fixed so that the `read' builtin restarts reads when + interrupted by signals other than SIGINT. + +aa. Fixed a bug that caused a command to be freed twice when there was + an evaluation error in the `eval' command. + +2. Changes to Readline + +a. Added a missing `extern' to a declaration in readline.h that kept + readline from compiling cleanly on some systems. + +b. The history file is now opened with mode 0600 when it is written for + better security. + +c. Changes were made to the SIGWINCH handling code so that prompt redisplay + is done better. + +d. ^G now interrupts incremental searches correctly. + +e. A bug that caused a core dump when the set of characters to be quoted + when completing words was empty was fixed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-release, +and the previous version, bash-2.01-beta2. + +1. Changes to Bash + +a. The `distclean' target should remove the `printenv' executable if it + has been created. + +b. The test suite was changed slightly to ensure that the error messages + are printed in English. + +c. A bug that caused the shell to dump core when a filename containing a + `/' was passed to `hash' was fixed. + +d. Pathname canonicalization now leaves a leading `//' intact, as POSIX.1 + requires. + +e. A memory leak when completing commands was fixed. + +f. A memory leak that occurred when checking the hash table for commands + with relative paths was fixed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-beta2, +and the previous version, bash-2.01-beta1. + +1. Changes to Bash + +a. The `ulimit' builtin translates RLIM_INFINITY to the hard limit only if + the current (soft) limit is less than or equal to the hard limit. + +b. Fixed a bug that caused the bash emulation of strcasecmp to produce + incorrect results. + +c. A bug that caused memory to be freed twice when a trap handler resets + the trap more than once was fixed. + +d. A bug that caused machines where sizeof (pointer) > sizeof (int) to + fail (and possibly dump core) when trying to unwind-protect a null + pointer was fixed. + +e. The startup files should not be run with job control enabled. This fix + allows SIGINT to once again interrupt startup file execution. + +f. Bash should not change the SIGPROF handler if it is set to something + other than SIG_DFL. + +g. The completion code that provides bash-specific completions for readline + now quotes characters that the readline code would treat as word break + characters if they appear in a file name. + +h. The completion code now correctly quotes filenames containing a `!', + even if the user attempted to use double quotes when attempting + completion. + +i. A bug that caused the shell to dump core when `disown' was called without + arguments and there was no current job was fixed. + +j. A construct like $((foo);bar) is now processed as a command substitution + rather than as a bad arithmetic substitution. + +k. A couple of bugs that caused `fc' to not obey the `cmdhist' and `lithist' + shell options when editing and re-executing a series of commands were + fixed. + +l. A fix was made to the grammar -- the list of commands between `do' and + `done' in the body of a `for' command should be treated the same as a + while loop. + +2. Changes to Readline + +a. A couple of bugs that caused the history search functions to attempt to + free a NULL pointer were fixed. + +b. If the C library provides setlocale(3), readline does not need to look + at various environment variables to decide whether or not to go into + eight-bit mode automatically -- just check whether the current locale + is not `C' or `POSIX'. + +c. If the filename completion function finds that a directory was not closed + by a previous (interrupted) completion, it closes the directory with + closedir(). + +3. New Features in Bash + +a. New bindable readline commands: history-and-alias-expand-line and + alias-expand-line. The code was always in there, there was just no + way to execute it. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-beta1, +and the previous version, bash-2.01-alpha1. + +1. Changes to Bash + +a. Fixed a problem that could cause file descriptors used for process + substitution to conflict with those used explicitly in redirections. + +b. Made it easier to regenerate configure if the user changes configure.in. + +c. ${GROUPS[0]} should always be the primary group, even on systems without + multiple groups. + +d. Spelling correction is no longer enabled by default. + +e. Fixes to quoting problems in `bashbug'. + +f. OS-specific configuration changes were made for: Irix 6. + +g. OS-specific code changes were made for: QNX. + +h. A more meaningful message is now printed when the file in /tmp for a + here document cannot be created. + +i. Many changes to the shell's variable initialization code to speed + non-interactive startup. + +j. Changes to the non-job-control code so that it does not try to open + /dev/tty. + +k. The output of `set' and `export' is once again sorted, as POSIX wants. + +l. Fixed a problem caused by a recursive call reparsing the value of + $SHELLOPTS. + +m. The tilde code no longer calls getenv() when it's compiled as part of + the shell, which should eliminate problems on systems that cannot + redefine getenv(), like the NeXT OS. + +n. Fixed a problem that caused `bash -o' or `bash +o' to not list all + the shell options. + +o. Fixed `ulimit' to convert RLIM_INFINITY to the appropriate hard limit + only if the hard limit is greater than the current (soft) limit. + +p. Fixed a problem that arose when building bash in a different directory + than the source and y.tab.[ch] were remade with something other than + bison. This came up most often on NetBSD. + +q. Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated + an unfinished command completion (`/), which generated errors. + +r. The bash special tilde expansions (~-, ~+) are now attempted before + calling the standard tilde expansion code, which should eliminate the + problems people have been seeing with this on Solaris 2.5.1. + +s. Added support for <stdarg.h> to places where it was missing. + +t. Changed the code that reads the output of a command substitution to not + go through stdio. This reduces the memory requirements and is faster. + +u. A number of changes to speed up export environment creation were made. + +v. A number of memory leaks were fixed as the result of running the test + scripts through Purify. + +w. Fixed a bug that caused subshells forked to interpret executable + scripts without a leading `#!' to not reinitialize the values of + the shell options. + +2. Changes to Readline + +a. History library has less `#ifdef SHELL' code -- abstracted stuff out + into application-specific function hooks. + +b. Readline no longer calls getenv() if it's compiled as part of the shell, + which should eliminate problems on systems that cannot redefine getenv(), + like the NeXT OS. + +c. Fixed translation of ESC when `untranslating' macro values. + +d. The region kill operation now fixes the mark if it ends up beyond the + boundaries of the line after the region is deleted. + +3. New Features in Bash + +a. New argument for `configure': `--with-curses'. This can be used to + override the selection of the termcap library on systems where it is + deficient. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-alpha1, +and the previous version, bash-2.0-release. + +1. Changes to Bash + +a. System-specific configuration changes for: FreeBSD, SunOS4, Irix, + MachTen, QNX 4.2, Harris Night Hawk, SunOS5. + +b. System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2, + HP-UX, AIX 4.2. + +c. A bug that caused the exec builtin to fail because the full pathname of + the command could not be found was fixed. + +d. The code that performs output redirections is now more resistant to + race conditions and possible security exploits. + +e. A bug that caused the shell to dump core when performing pattern + substitutions on variable values was fixed. + +f. More hosts are now recognized by the auto-configuration mechanism + (OpenBSD, QNX, others). + +g. Assignments to read-only variables that attempt to convert them to + arrays are now errors. + +h. A bug that caused shell scripts using array assignments in POSIX mode + to exit after the assignment was performed was fixed. + +i. The substring expansion code is now more careful about running off the + ends of the expanded variable value. + +j. A bug that caused completion to fail if a backquoted command substitution + appeared anywhere on the line was fixed. + +k. The `source' builtin no longer turns off history if it has been enabled + in a non-interactive shell. + +l. A bug that caused the shell to crash when `disown' was given a pid + instead of a job number was fixed. + +m. The `cd' spelling correction code will not try to change to `.' if no + directory entries match a single-character argument. + +n. A bad variable name supplied to `declare', `export', or `readonly' no + longer causes a non-interactive shell in POSIX mode to exit. + +o. Some fixes were made to the test suite to handle peculiarities of + various Unix versions. + +p. The bash completion code now quotes characters that readline would + treat as word breaks for completion but are not shell metacharacters. + +q. Bad options supplied at invocation now cause a usage message to be + displayed. + +r. Fixes were made to the code that handles DEBUG traps so that the trap + string is not freed inappropriately. + +s. Some changes were made to the bash debugger in examples/bashdb -- it + should be closer to working now. + +t. A problem that caused the default filename used for mail checking to be + wrong was fixed. + +u. A fix was made to the `echo' builtin so that NUL characters printed with + `echo -e' do not cause the output to be truncated. + +v. A fix was made to the job control code so that the shell behaves better + when monitor mode is enabled in a non-interactive shell. + +w. Bash no longer catches all of the terminating signals in a non- + interactive shell until a trap is set on EXIT, which should result in + quicker startup. + +x. A fix was made to the command timing code so that `time' can be used in + a loop. + +y. A fix was made to the parser so that `((cmd); cmd2)' is now parsed as + a nested subshell rather than strictly as an (erroneous) arithmetic + command. + +z. A fix was made to the globbing code so that it correctly matches quoted + filenames beginning with a `.'. + +aa. A bug in `fc' that caused some multi-line commands to not be stored as + one command in the history when they were re-executed after editing + (with `fc -e') was fixed. + +bb. The `ulimit' builtin now attempts to catch some classes of integer + overflows. + +cc. The command-oriented-history code no longer attempts to add `;' + inappropriately when a newline appears while reading a $(...) command + substitution. + +dd. A bug that caused the shell to dump core when `help --' was executed + was fixed. + +ee. A bug that caused the shell to crash when an unset variable appeared + in the body of a here document after `set -u' had been executed was + fixed. + +ff. Implicit input redirections from /dev/null for asynchronous commands + are now handled better. + +gg. A bug that caused the shell to fail to compile when configured with + `--disable-readline' was fixed. + +hh. The globbing code should now be interruptible. + +ii. Bash now notices when the `kill' builtin is used to send SIGCONT to a + stopped job and adjusts the data structures accordingly, as if `bg' had + been executed instead. + +jj. A bug that caused the shell to crash when mixing calls to `getopts' + and `shift' on the same set of positional parameters was fixed. + +kk. The command printing code now preserves the `-p' flag to `time'. + +ll. The command printing code now handles here documents better when there + are other redirections associated with the command. + +mm. The special glibc environment variable (NNN_GNU_nonoption_argv_flags_) + is no longer placed into the environment of executed commands -- users + of glibc had too many problems with it. + +nn. Reorganized the code that generates signames.h. The signal_names list + is now more complete but may be slightly different (SIGABRT is favored + over SIGIOT, for example). The preferred signal names are those + listed in the POSIX.2 standard. + +oo. `bashbug' now uses a filename shorter than 14 characters for its + temporary file, and asks for confirmation before sending the bug + report. + +pp. A bug that caused TAB completion in vi editing mode to not be turned + off when `set -o posix' was executed or back on when `set +o posix' + was executed was fixed. + +qq. A bug in the brace expansion code that caused brace expansions appearing + in new-style $(...) command substitutions to be inappropriately expanded + was fixed. + +rr. A bug in the readline hook shell-expand-line that could cause memory to + be inappropriately freed was fixed. + +ss. A bug that caused some arithmetic expressions containing `&&' and `||' + to be parsed with the wrong precedence has been fixed. + +tt. References to unbound variables after `set -u' has been executed now + cause the shell to exit immediately, as they should. + +uu. A bug that caused the shell to exit inappropriately when `set -e' had + been executed and a command's return status was being inverted with the + `!' reserved word was fixed. + +vv. A bug that could occasionally cause the shell to crash with a + divide-by-zero error when timing a command was fixed. + +ww. A bug that caused parameter pattern substitution to leave stray + backslashes in the replacement string when the expression is in + double quotes was fixed. + +xx. The `break' and `continue' builtins now break out of all loops when an + invalid count argument is supplied. + +yy. Fixed a bug that caused PATH to be set to the empty string if + `command -p' is executed with PATH unset. + +zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix, + as POSIX specifies. + +aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS + if there were no shell options set. + +bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX + mode, their output is as POSIX.2 specifies. + +ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually + creates an array variable. + +ddd. Fixed a bug that prevented `time' from correctly timing background + pipelines. + +2. Changes to Readline + +a. A bug that caused an extra newline to be printed when the cursor was on + an otherwise empty line was fixed. + +b. An instance of memory being used after it was freed was corrected. + +c. The redisplay code now works when the prompt is longer than the screen + width. + +d. `dump-macros' is now a bindable name, as it should have been all along. + +e. Non-printable characters are now expanded when displaying macros and + their values. + +f. The `dump-variables' and `dump-macros' commands now output a leading + newline if they're called as the result of a key sequence, rather + than directly by an application. + +3. New Features in Bash + +a. There is a new builtin array variable: GROUPS, the set of groups to which + the user belongs. This is used by the test suite. + +4. New Features in Readline + +a. If a key sequence bound to `universal-argument' is read while reading a + numeric argument started with `universal-argument', it terminates the + argument but is otherwise ignored. This provides a way to insert multiple + instances of a digit string, and is how GNU emacs does it. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-release, +and the previous version, bash-2.0-beta3. + +1. Changes to Bash + +a. Fix to the `getopts' builtin so that it does the right thing when a + required option argument is not present. + +b. The completion code now updates the common prefix of matched names + after FIGNORE processing is done, since any names that were removed + may have changed the common prefix. + +c. Fixed a bug that made messages in MAILPATH entries not work correctly. + +d. Fixed a serious documentation error in the description of the new + ${parameter:offset[:length]} expansion. + +e. Fixes to make parameter substring expansion ({$param:offset[:length]}) + work when within double quotes. + +f. Fixes to make ^A (CTLESC) survive an unquoted expansion of positional + parameters. + +g. Corrected a misspelling of `unlimited' in the output of `ulimit'. + +h. Fixed a bug that caused executable scripts without a leading `#!' to + occasionally pick up the wrong set of positional parameters. + +i. Linux systems now have a working `ulimit -v', using RLIMIT_AS. + +j. Updated config.guess so that many more machine types are recognized. + +k. Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]} + expansion. + +l. If the shell is named `-su', and `-c command' is supplied, read and + execute the login shell startup files even though the shell is not + interactive. This is to support the `-' option to `su'. + +m. Fixed a bug that caused core dumps when the DEBUG trap was ignored + with `trap "" DEBUG' and a shell function was subsequently executed. + +n. Fixed a bug that caused core dumps in the read builtin when IFS was + set to the null string and the input had leading whitespace. + +2. Changes to Readline + +a. Fixed a bug that caused a numeric argument of 1024 to be ignored when + inserting text. + +b. Fixed the display code so that the numeric argument is displayed as it's + being entered. + +c. Fixed the numeric argument reading code so that `M-- command' is + equivalent to `M--1 command', as the prompt implies. + +3. New Features in Bash + +a. `ulimit' now sets both hard and soft limits and reports the soft limit + by default (when neither -H nor -S is specified). This is compatible + with versions of sh and ksh that implement `ulimit'. + +b. Integer constants have been extended to base 64. + +4. New Features in Readline + +a. The `home' and `end' keys are now bound to beginning-of-line and + end-of-line, respectively, if the corresponding termcap capabilities + are present. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta3, +and the previous version, bash-2.0-beta2. + +1. Changes to Bash + +a. System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX. + +b. When in POSIX mode, variable assignments preceding a special builtin + persist in the shell environment after the builtin completes. + +c. Changed all calls to getwd() to getcwd(). Improved check for systems + where the libc getcwd() calls popen(), since that breaks on some + systems when job control is being used. + +d. Fixed a bug that caused seg faults when executing scripts with the + execute bit set but without a leading `#!'. + +e. The environment passed to executed commands is never sorted. + +f. A bug was fixed in the code that expands ${name[@]} to the number of + elements in an array variable. + +g. A bug was fixed in the array compound assignment code ( A=( ... ) ). + +h. Window size changes now correctly propagate down to readline if + the shopt `checkwinsize' option is enabled. + +i. A fix was made in the code that expands to the length of a variable + value (${#var}). + +j. A fix was made to the command builtin so that it did not turn on the + `no fork' flag inappropriately. + +k. A fix was made to make `set -n' work more reliably. + +l. A fix was made to the job control initialization code so that the + terminal process group is set to the shell's process group if the + shell changes its own process group. + +2. Changes to Readline + +a. System-specific changes for: SCO 3.2v[45]. + +b. The behavior of the vi-mode `.' when redoing an `i' command was changed + to insert the text previously inserted by the `i' command rather than + simply entering insert mode. + +3. New features in Bash + +a. There is a new version of the autoload function package, in + examples/functions/autoload.v2, that uses arrays and provides more + functionality. + +b. Support for LC_COLLATE and locale-specific sorting of the results of + pathname expansion if strcoll() is available. + +4. New Features in Readline + +a. Support for locale-specific sorting of completion possibilities if + strcoll() is available. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta2, +and the previous version, bash-2.0-beta1. + +1. Changes to Bash + +a. `pushd -' is once again equivalent to `pushd $OLDPWD'. + +b. OS-specific changes for: SCO 3.2v[45]. + +c. A change was made to the fix for the recently-reported security hole + when reading characters with octal value 255 to make it work better on + systems with restartable system calls when not using readline. + +d. Some changes were made to the test suite so that it works if you + configure bash with --enable-usg-echo-default. + +e. A fix was made to the parsing of conditional arithmetic expressions. + +f. Illegal arithmetic bases now cause an arithmetic evaluation error rather + than being silently reset. + +g. Multiple arithmetic bases now cause an arithmetic evaluation error + instead of being ignored. + +h. A fix was made to the evaluation of ${param?word} to conform to POSIX.2. + +i. A bug that sometimes caused array indices to be evaluated twice (which + would cause errors when they contained assignment statements) was fixed. + +j. `ulimit' was rewritten to avoid problems with getrlimit(2) returning + unsigned values and to simplify the code. + +k. A bug in the command-oriented-history code that caused it to sometimes + put semicolons after right parens inappropriately was fixed. + +l. The values inserted into the prompt by the \w and \W escape sequences + are now quoted to prevent further expansion. + +m. An interactive shell invoked as `sh' now reads and executes commands + from the file named by $ENV when it starts up. If it's a login shell, + it does this after reading /etc/profile and ~/.profile. + +n. The file named by $ENV is never read by non-interactive shells. + +2. Changes to Readline + +a. A few changes were made to hide some macros and functions that should not + be public. + +b. An off-by-one error that caused seg faults in the history expansion code + was fixed. + +3. New Features in Bash + +a. The ksh-style ((...)) arithmetic command was implemented. It is exactly + identical to let "...". This is controlled by a new option to configure, + `--enable-dparen-arithmetic', which is on by default. + +b. There is a new #define available in config.h.top: SYS_BASH_LOGOUT. If + defined to a filename, bash reads and executes commands from that file + when a login shell exits. It's commented out by default. + +c. `ulimit' has a `-l' option that reports the maximum amount of data that + may be locked into memory on 4.4BSD-based systems. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta1, +and the previous version, bash-2.0-alpha4. + +1. Changes to Bash + +a. A bug that sometimes caused traps to be ignored on signals the + shell treats specially was fixed. + +b. The internationalization code was changed to track the values of + LC_* variables and call setlocale() as appropriate. The TEXTDOMAIN + and TEXTDOMAINDIR variables are also tracked; changes cause calls + to textdomain() and bindtextdomain(), if available. + +c. A bug was fixed that sometimes caused double-quoted strings to be + parsed incorrectly. + +d. Changes were made so that the siglist code compiles correctly on + Solaris 2.5. + +e. Added `:' to the set of characters that cause word breaks for the + completion code so that pathnames in assignments to $PATH can be + completed. + +f. The `select' command was fixed to print $PS3 to stderr. + +g. Fixed an error in the manual page section describing the effect that + setting and unsetting GLOBIGNORE has on the setting of the `dotglob' + option. + +h. The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC + on systems without gettimeofday() and resources. + +i. The getopt static variables are now initialized each time a subshell + is started, so subshells using `getopts' work right. + +j. A sign-extension bug that caused a possible security hole was fixed. + +k. The parser now reads characters between backquotes within a double- + quoted string as a single word, so double quotes in the backquoted + string don't terminate the enclosing double-quoted string. + +l. A bug that caused `^O' to work incorrectly when typed as the first + thing to an interactive shell was fixed. + +m. A rarely-exercised off-by-one error in the code that quotes variable + values was fixed. + +n. Some memory and file descriptor leaks encountered when running a + shell script that is executable but does not have a leading `#!' + were plugged. + +2. Changes to Readline + +a. A bug that sometimes caused incorrect results when trying to read + typeahead on systems without FIONREAD was fixed. + +3. New Features in Bash + +a. The command timing code now uses the value of the TIMEFORMAT variable + to format and display timing statistics. + +b. The `time' reserved word now accepts a `-p' option to force the + POSIX.2 output format. + +c. There are a couple of new and updated scripts to convert csh startup + files to bash format. + +d. There is a new builtin array variable: BASH_VERSINFO. The various + members hold the parts of the version information in BASH_VERSION, + plus the value of MACHTYPE. + +4. New Features in Readline + +a. Setting LANG to `en_US.ISO8859-1' now causes readline to enter + eight-bit mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-alpha4, +and the previous version, bash-2.0-alpha3. + +1. Changes to Bash + +a. There is better detection of rsh connections on Solaris 2. + +b. Assignments to read-only variables preceding a command name are now + variable assignment errors. Variable assignment errors cause + non-interactive shells running in posix mode to exit. + +c. The word tokenizer was rewritten to handle nested quotes and pairs + ('', "", ``, ${...}, $(...), $[...], $'...', $"...", <(...), >(...)) + correctly. Some of the parameter expansion code was updated as a + consequence. + +d. A fix was made to `test' when given three arguments so that a binary + operator is checked for first, before checking that the first argument + is `!'. + +e. 2''>/dev/null is no longer equivalent to 2>/dev/null. + +f. Parser error messages were regularized, and in most cases the name of + the shell script being read by a non-interactive shell is not printed + twice. + +g. A fix was made to the completion code so that it no longer removes the + text the user typed in some cases. + +h. The special glibc `getopt' environment variable is no longer put into + the environment on machines with small values of ARG_MAX. + +i. The expansion of ${...} now follows the POSIX.2 rules for finding the + closing `}'. + +j. The shell no longer displays spurious status messages for background + jobs in shell scripts that complete successfully when the script is + run from a terminal. + +k. `shopt -o' now correctly updates $SHELLOPTS. + +l. A bug that caused the $PATH searching code to return a non-executable + file even when an executable file with the same name appeared later in + $PATH was fixed. + +m. The shell now does tilde expansions on unquoted `:~' in assignment + statements when not in posix mode. + +n. Variable assignment errors when a command consists only of assignments + now cause non-interactive shells to exit when in posix mode. + +o. If the variable in a `for' or `select' command is read-only, or not a + legal shell identifier, a variable assignment error occurs. + +p. `test' now handles `-a' and `-o' as binary operators when three arguments + are supplied, and correctly parses `( word )' as equivalent to `word'. + +q. `test' was fixed so that file names of the form /dev/fd/NN mean the same + thing on all systems, even Linux. + +r. Fixed a bug in the globbing code that caused patterns with multiple + consecutive `*'s to not be matched correctly. + +s. Fixed a bug that caused $PS2 to not be printed when an interactive shell + not using readline is reading a here document. + +t. Fixed a bug that caused history expansion to be performed inappropriately + when a single-quoted string spanned more than one line. + +u. `getopts' now checks that the variable name passed by the user as the + second argument is a legal shell identifier and that the variable is + not read-only. + +v. Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it + encounters an error. + +w. Fixed `set' to display variable values in a form that can be re-read. + +x. Fixed a bug in the code that keeps track of whether or not local variables + have been declared at the current level of function nesting. + +y. Non-interactive shells in posix mode now exit if the name in a function + declaration is not a legal identifier. + +z. The job control code now ignores stopped children when the shell is not + interactive. + +aa. The `cd' builtin no longer attempts spelling correction on the directory + name if the shell is not interactive, regardless of the setting of the + `cdspell' option. + +bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2. + +cc. `time' now prints its output to stderr, as POSIX.2 specifies. + +2. Fixes to Readline + +a. After printing possible completions, all lines of a multi-line prompt + are redisplayed. + +b. Some changes were made to the terminal handling code in rltty.c to + work around AIX 4.2 bugs. + +3. New Features in Bash + +a. There is a new loadable builtin: sprintf, with calling syntax + sprintf var format [args] + This provides an easy way to simulate ksh left- and right-justified + variable values. + +b. The expansions of \h and \H in prompt strings were swapped. \h now + expands to the hostname up to the first `.', as in bash-1.14. + +4. New Features in Readline + +a. The bash-1.14 behavior when ^M is typed while doing an incremental + search was restored. ^J may now be used to terminate the search without + accepting the line. + +b. There is a new bindable variable: disable-completion. This inhibits + word completion and causes the completion character to be inserted as + if it had been bound to self-insert. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-alpha3, +and the previous version, bash-2.0-alpha2. + +There is now a file `COMPAT' included in the distribution that lists the +user-visible incompatibilities between 1.14 and 2.0. + +1. Changes to Bash + +a. Some work was done so that word splitting of the rhs of assignment + statements conforms more closely to historical practice. + +b. A couple of errant memory frees were fixed. + +c. A fix was made to the test builtin so it recognizes `<' and `>' as + binary operators. + +d. The GNU malloc in lib/malloc/malloc.c now scrambles memory as it's + allocated and freed. This is to catch callers that refer to freed + memory or assume something about newly-allocated memory. + +e. Fixed a problem with conversion to 12-hour time in the prompt + expansion code. + +f. Fixed a problem with configure's argument parsing order. Now you can + correctly turn on specific options after using --enable-minimal-config. + +g. The configure script now automatically disables the use of GNU malloc + on systems where it's appropriate (better than having people read the + NOTES file and do it manually). + +h. There are new prompt expansions (\v and \V) to insert version information + into the prompt strings. + +i. The default prompt string now includes the version number. + +j. Most of the builtins that take no options were changed to use the + internal getopt so they can produce proper error messages for -? + and incorrect options. + +k. Some system-specific changes were made for SVR4.2 and Solaris 2.5. + +l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of + MAXNAMLEN. + +m. A couple of problems caused by uninitialized variables were fixed. + +n. There are a number of new loadable builtin examples: logname, basename, + dirname, tty, pathchk, tee, head, and rmdir. All of these conform to + POSIX.2. + +o. Bash now notices changes in TZ and calls tzset() if present, so + changing TZ will alter the time printed by prompt expansions. + +p. The source was reorganized a bit so I don't have to wait so long for + some files to compile, and to facilitate the creation of a `shell + library' at some future point. + +q. Bash no longer turns off job control if called as `sh', since the + POSIX.2 spec includes job control as a standard feature. + +r. `bash -o posix' now works as intended. + +s. Fixed a problem with the completion code: when completing a filename + that contained globbing characters, if show-all-if-ambiguous was set, + the completion code would remove the user's text. + +t. Fixed ulimit so that (hopefully) the full range of limits is available + on HPUX systems. + +u. A new `shopt' option (`hostcomplete') enables and disables hostname + completion. + +v. The shell no longer attempts to save the history on an abort(), + which is usually called by programming_error(). + +w. The `-s' option to `fc' was changed to echo the command to be executed + to stderr instead of stdout. + +x. If the editor invoked by `fc -e' exits with a non-zero status, no + commands are executed. + +y. Fixed a bug that made the shopt `histverify' option work incorrectly. + +z. There is a new variable `MACHTYPE' whose value is the GNU-style + `cpu-company-system' system description as set by configure. (The + values of MACHTYPE and HOSTTYPE should really be swapped.) + +aa. The `ulimit' builtin now allows the maximum virtual memory size to be + set via setrlimit(2) if RLIMIT_VMEM is defined. + +bb. `bash -nc 'command'' no longer runs `command'. + +2. Changes to Readline + +a. Fixed a typo in the code that checked for FIONREAD in input.c. + +b. Fixed a bug in the code that outputs keybindings, so things like C-\ + are quoted properly. + +c. Fixed a bug in the inputrc file parsing code to handle the problems + caused by inputrc files created from the output of `bind -p' in + previous versions of bash. The problem was due to the bug fixed + in item b above. + +d. Readline no longer turns off the terminal's meta key, and turns it on + once the first time it's called. + +------------------------------------------------------------------------------ +This file documents the changes between this version, bash-2.0-alpha2, +and the previous version, bash-2.0-alpha. + +1. Changes to Bash + +a. The shell no longer thinks directories are executable. + +b. `disown' has a new option, `h', which inhibits the resending of SIGHUP + but does not remove the job from the jobs table. + +c. The varargs functions in error.c now use ANSI-C `stdarg' if available. + +d. The build process now treats the `build version' in .build as local to + the build directory, so different versions built from the same source + tree have different `build versions'. + +e. Some problems with the grammar have been fixed. (It used `list' in a few + productions where `compound_list' was needed. A `list' must be terminated + with a newline or semicolon; a `compound_list' need not be.) + +f. A fix was made to keep `wait' from hanging when waiting for all background + jobs. + +g. `bash --help' now writes its output to stdout, like the GNU Coding Standards + specify, and includes the machine type (the value of MACHTYPE). + +h. `bash --version' now prints more information and exits successfully, like + the GNU Coding Standards specify. + +i. The output of `time' and `times' now prints fractional seconds with three + places after the decimal point. + +j. A bug that caused process substitutions to screw up the pipeline printed + by `jobs' was fixed. + +k. Fixes were made to the code that implements $'...' and $"..." so they + work as documented. + +l. The process substitution code now opens named pipes for reading with + O_NONBLOCK to avoid hanging. + +m. Fixes were made to the trap code so the shell cleans up correctly if the + trap command contains a `return' and we're executing a function or + sourcing a script with `.'. + +n. Fixes to doc/Makefile.in so that it doesn't try to remake all of the + documentation (ps, dvi, etc.) on a `make install'. + +o. Fixed an auto-increment error that caused bash -c args to sometimes dump + core. + +p. Fixed a bug that caused $HISTIGNORE to fail when the history line + contained globbing characters. + +2. Changes to Readline + +a. There is a new string variable, rl_library_version, available for use by + applications. The current value is "2.1". + +b. A bug encountered when expand-tilde was enabled and file completion was + attempted on a word beginning with `~/' was fixed. + +c. A slight change was made to the incremental search termination behavior. + ESC still terminates the search, but if input is pending or arrives + within 0.1 seconds (on systems with select(2)), it is used as a prefix + character. This is intented to allow users to terminate searches with + the arrow keys and get the behavior they expect. @@ -332,6 +332,20 @@ version and versions 2.0 and above. > operators to the `[[' command. This can be reverted to the previous behavior by setting one of the `compatNN' shopt options. +45. Command substitutions now remove the caller's trap strings when trap is + run to set a new trap in the subshell. Previous to bash-4.2, the old + trap strings persisted even though the actual signal handlers were reset. + +46. When in Posix mode, a single quote is not treated specially in a + double-quoted ${...} expansion, unless the expansion operator is + # or % or the new `//', `^', or `,' expansions. In particular, it + does not define a new quoting context. This is from Posix interpretation + 221. + +47. Posix mode shells no longer exit if a variable assignment error occurs + with an assignment preceding a command that is not a special builtin. + + Shell Compatibility Level ========================= @@ -360,6 +360,13 @@ compat40 set of the entire list to be aborted (in versions before bash-4.0, interrupting one command in a list caused the next to be executed) +compat41 set + - interrupting a command list such as "a ; b ; c" causes the execution + of the entire list to be aborted (in versions before bash-4.0, + interrupting one command in a list caused the next to be executed) + - when in posix mode, single quotes in the `word' portion of a + double-quoted parameter expansion define a new quoting context and + are treated specially ------------------------------------------------------------------------------- Copying and distribution of this file, with or without modification, diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index c00f5381..8f1760e1 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -9838,7 +9838,7 @@ doc/{bash.1,bashref.texi} execute_cmd.c - change execute_disk_command to return a status, instead of just leaving it in `last_command_exit_value', since the parent's return - value is sometimes uses (e.g., when a restricted shell refuses to + value is sometimes used (e.g., when a restricted shell refuses to run a command with a `/'). Fixes bug reported by David Pitt <David.Pitt@anz.com> @@ -10474,3 +10474,111 @@ execute_cmd.c saved_redirects is non-null in the `command exec' case. Fixes sh -c 'command exec; exit 1' hanging bug uncovered by FreeBSD sh test cases + + 10/18 + ----- +subst.c + - when in posix mode, shell should not exit if a variable assignment + error (e.g., assigning to readonly variable) occurs preceding a + command that is not a special builtin. Fixes bug uncovered by + FreeBSD sh test cases + - when in posix mode, the ${!?} and ${!#} expansions are not indirect + expansions, but posix word expansions involving the `!' variable + +parse.y + - fix parse_comsub so that it does not skip backslash-newline when + parsing a comment + + 10/19 + ----- +subst.c + - fix parameter_brace_expand so that an attempt to use the % or # + expansions on an unset variable with -u set will cause a non- + interactive shell to abort. Posix change + - fix parameter_brace_expand so that an attempt to use pattern + substitution or case modification expansions on an unset variable + with -u set will cause and unbound variable error and make a + non-interactive shell abort + - change parameter_brace_expand_length to return INTMAX_MIN if a + positional parameter is unset and -u is set + - if parameter_brace_expand_length returns INTMAX_MIN when -u is set, + treat it as an unbound variable error and make a non-interactive + shell abort. Posix change + - change parameter_brace_expand_length to return INTMAX_MIN if an + implicit reference to array[0] is made ${#array} and array[0] is + not set when -u is set + + 10/20 + ----- +builtins/cd.def + - Posix 2008 says that if no matching directories are found in $CDPATH, + use the directory name passed as an operand and go on. Posix change + +doc/bashref.texi + - change Posix mode section with latest additions and removals + + 11/4 + ---- +lib/readline/complete.c + - fix rl_menu_complete and rl_old_menu_complete to keep incrementing + match_list_index by match_list_size as long as it's < 0. Fixes + bug reported by jeenuv@gmail.com + +braces.c + - make mkseq() take intmax_t arguments for sequence start and end + and make sure it's passed intmax_t values. Fixes bug reported by + Pete Gregory <pg@bushlitt.org> + +sig.c + - if termsig_handler is called when terminate_immediately == 1, + assume we're being called as a signal handler and set + history_lines_this_session to 0 to inhibit history file being + written on shell exit. Fixes long-standing bug most recently + observed by Andreas Schwab <schwab@linux-m68k.org> + + 11/5 + ---- +redir.c + - add_undo_close_redirect now returns int, 0 on success, non-zero on + failure. Currently always succeeds + - new macro REDIRECTION_ERROR to make do_redirection_internal return + value of errno + - change do_redirection_internal to call REDIRECTION_ERROR after + saving file descriptor and make do_redirection_internal return error + if add_undo_redirect or add_undo_close redirect fails. This makes + failure to save a file descriptor a redirection error and the shell + behaves appropriately. Fixes bug reported by Eric Blake + <eblake@redhat.com> + +bashline.c + - modify bash_forward_shellword to correctly handle quoted strings, + especially if point is in a quoted string when function is invoked. + Fixes bug reported by Daniel Colascione <dan.colascione@gmail.com> + +configure.in + - change version to 4.2-alpha + + 11/7 + ---- +lib/readline/text.c + - in rl_insert, if we're not in the multibyte code path, don't try to + optimize and insert all of the available typeahead input if we're + reading input from a macro. Fixes bug reported by Andre Majorel + <aym-ung@teaser.fr> + +lib/readline/text.c + - break out multibyte guts of rl_forward_char into a separate function + _rl_forward_char_internal that does nothing but calculate the new + value of point + - change rl_forward_char to call _rl_forward_char_internal instead of + having equivalent code inline + +lib/readline/rlprivate.h + - new extern declaration for _rl_forward_char_internal + +lib/readline/vi_mode.c + - change _rl_vi_append_forward to call _rl_forward_char_internal to + set rl_point, instead of calling rl_forward_char. When at the end + of the line, rl_forward_char will ring the bell. Fixes debian + bash bug 601042, reported by Alan J. Greenberger <alanjg@ptd.net> + diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~ index 45991fbe..ff5d4e54 100644 --- a/CWRU/CWRU.chlog~ +++ b/CWRU/CWRU.chlog~ @@ -9838,7 +9838,7 @@ doc/{bash.1,bashref.texi} execute_cmd.c - change execute_disk_command to return a status, instead of just leaving it in `last_command_exit_value', since the parent's return - value is sometimes uses (e.g., when a restricted shell refuses to + value is sometimes used (e.g., when a restricted shell refuses to run a command with a `/'). Fixes bug reported by David Pitt <David.Pitt@anz.com> @@ -10513,3 +10513,70 @@ subst.c builtins/cd.def - Posix 2008 says that if no matching directories are found in $CDPATH, use the directory name passed as an operand and go on. Posix change + +doc/bashref.texi + - change Posix mode section with latest additions and removals + + 11/4 + ---- +lib/readline/complete.c + - fix rl_menu_complete and rl_old_menu_complete to keep incrementing + match_list_index by match_list_size as long as it's < 0. Fixes + bug reported by jeenuv@gmail.com + +braces.c + - make mkseq() take intmax_t arguments for sequence start and end + and make sure it's passed intmax_t values. Fixes bug reported by + Pete Gregory <pg@bushlitt.org> + +sig.c + - if termsig_handler is called when terminate_immediately == 1, + assume we're being called as a signal handler and set + history_lines_this_session to 0 to inhibit history file being + written on shell exit. Fixes long-standing bug most recently + observed by Andreas Schwab <schwab@linux-m68k.org> + + 11/5 + ---- +redir.c + - add_undo_close_redirect now returns int, 0 on success, non-zero on + failure. Currently always succeeds + - new macro REDIRECTION_ERROR to make do_redirection_internal return + value of errno + - change do_redirection_internal to call REDIRECTION_ERROR after + saving file descriptor and make do_redirection_internal return error + if add_undo_redirect or add_undo_close redirect fails. This makes + failure to save a file descriptor a redirection error and the shell + behaves appropriately. Fixes bug reported by Eric Blake + <eblake@redhat.com> + +bashline.c + - modify bash_forward_shellword to correctly handle quoted strings, + especially if point is in a quoted string when function is invoked. + Fixes bug reported by Daniel Colascione <dan.colascione@gmail.com> + +configure.in + - change version to 4.2-alpha + + 11/7 + ---- +lib/readline/text.c + - in rl_insert, if we're not in the multibyte code path, don't try to + optimize and insert all of the available typeahead input if we're + reading input from a macro. Fixes bug reported by Andre Majorel + <aym-ung@teaser.fr> + - break out multibyte guts of rl_forward_char into a separate function + _rl_forward_char_internal that does nothing but calculate the new + value of point + - change rl_forward_char to call _rl_forward_char_internal instead of + having equivalent code inline + +lib/readline/rlprivate.h + - new extern declaration for _rl_forward_char_internal + +lib/readline/vi_mode.c + - change _rl_vi_append_forward to call _rl_forward_char_internal to + set rl_point, instead of calling rl_forward_char. When at the end + of the line, rl_forward_char will ring the bell. Fixes debian + bash bug 601042, reported by Alan J. Greenberger <alanjg@ptd.net> + @@ -948,6 +948,10 @@ tests/posix2.tests f tests/posix2.right f tests/posixexp.tests f tests/posixexp.right f +tests/posixexp1.sub f +tests/posixexp2.sub f +tests/posixexp2.tests f +tests/posixexp2.right f tests/posixpat.tests f tests/posixpat.right f tests/posixpipe.tests f @@ -1043,6 +1047,7 @@ tests/run-nquote4 f tests/run-nquote5 f tests/run-posix2 f tests/run-posixexp f +tests/run-posixexp2 f tests/run-posixpat f tests/run-posixpipe f tests/run-precedence f @@ -929,6 +929,7 @@ tests/new-exp4.sub f tests/new-exp5.sub f tests/new-exp6.sub f tests/new-exp7.sub f +tests/new-exp8.sub f tests/new-exp.right f tests/nquote.tests f tests/nquote.right f @@ -947,6 +948,8 @@ tests/posix2.tests f tests/posix2.right f tests/posixexp.tests f tests/posixexp.right f +tests/posixexp1.sub f +tests/posixexp2.sub f tests/posixpat.tests f tests/posixpat.right f tests/posixpipe.tests f @@ -1,3 +1,99 @@ +This is a terse description of the new features added to bash-4.2 since +the release of bash-4.1. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a + leading #!. + +b. Subshells begun to execute command substitutions or run shell functions or + builtins in subshells do not reset trap strings until a new trap is + specified. This allows $(trap) to display the caller's traps and the + trap strings to persist until a new trap is set. + +c. `trap -p' will now show signals ignored at shell startup, though their + disposition still cannot be modified. + +d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences. + +e. declare/typeset has a new `-g' option, which creates variables in the + global scope even when run in a shell function. + +f. test/[/[[ have a new -v variable unary operator, which returns success if + `variable' has been set. + +g. Posix parsing changes to allow `! time command' and multiple consecutive + instances of `!' (which toggle) and `time' (which have no cumulative + effect). + +h. Posix change to allow `time' as a command by itself to print the elapsed + user, system, and real times for the shell and its children. + +j. $((...)) is always parsed as an arithmetic expansion first, instead of as + a potential nested command substitution, as Posix requires. + +k. A new FUNCNEST variable to allow the user to control the maximum shell + function nesting (recursive execution) level. + +l. The mapfile builtin now supplies a third argument to the callback command: + the line about to be assigned to the supplied array index. + +m. The printf builtin has as new %(fmt)T specifier, which allows time values + to use strftime-like formatting. + +n. There is a new `compat41' shell option. + +o. The cd builtin has a new Posix-mandated `-e' option. + +p. Negative subscripts to indexed arrays, previously errors, now are treated + as offsets from the maximum assigned index + 1. + +q. Negative length specifications in the ${var:offset:length} expansion, + previously errors, are now treated as offsets from the end of the variable. + +r. Parsing change to allow `time -p --'. + +s. Posix-mode parsing change to not recognize `time' as a keyword if the + following token begins with a `-'. This means no more Posix-mode + `time -p'. Posix interpretation 267. + +t. There is a new `lastpipe' shell option that runs the last command of a + pipeline in the current shell context. The lastpipe option has no + effect if job control is enabled. + +u. History expansion no longer expands the `$!' variable expansion. + +v. Posix mode shells no longer exit if a variable assignment error occurs + with an assignment preceding a command that is not a special builtin. + +w. Non-interactive mode shells exit if -u is enabled an an attempt is made + to use an unset variable with the % or # expansions, the `//', `^', or + `,' expansions, or the parameter length expansion. + +x. Posix-mode shells use the argument passed to `.' as-is if a $PATH search + fails, effectively searching the current directory. Posix-2008 change. + +2. New Features in Readline + +a. The history library does not try to write the history filename in the + current directory if $HOME is unset. This closes a potential security + problem if the application does not specify a history filename. + +b. New bindable variable `completion-display-width' to set the number of + columns used when displaying completions. + +c. New bindable variable `completion-case-map' to cause case-insensitive + completion to treat `-' and `_' as identical. + +d. There are new bindable vi-mode command names to avoid readline's case- + insensitive matching not allowing them to be bound separately. + +e. New bindable variable `menu-complete-display-prefix' causes the menu + completion code to display the common prefix of the possible completions + before cycling through the list, instead of after. + +------------------------------------------------------------------------------- This is a terse description of the new features added to bash-4.1 since the release of bash-4.0. As always, the manual page (doc/bash.1) is the place to look for complete descriptions. diff --git a/NEWS-4.2 b/NEWS-4.2 new file mode 100644 index 00000000..7df83d19 --- /dev/null +++ b/NEWS-4.2 @@ -0,0 +1,91 @@ + +1. New Features in Bash + +a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a + leading #!. + +b. Subshells begun to execute command substitutions or run shell functions or + builtins in subshells do not reset trap strings until a new trap is + specified. This allows $(trap) to display the caller's traps and the + trap strings to persist until a new trap is set. + +c. `trap -p' will now show signals ignored at shell startup, though their + disposition still cannot be modified. + +d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences. + +e. declare/typeset has a new `-g' option, which creates variables in the + global scope even when run in a shell function. + +f. test/[/[[ have a new -v variable unary operator, which returns success if + `variable' has been set. + +g. Posix parsing changes to allow `! time command' and multiple consecutive + instances of `!' (which toggle) and `time' (which have no cumulative + effect). + +h. Posix change to allow `time' as a command by itself to print the elapsed + user, system, and real times for the shell and its children. + +j. $((...)) is always parsed as an arithmetic expansion first, instead of as + a potential nested command substitution, as Posix requires. + +k. A new FUNCNEST variable to allow the user to control the maximum shell + function nesting (recursive execution) level. + +l. The mapfile builtin now supplies a third argument to the callback command: + the line about to be assigned to the supplied array index. + +m. The printf builtin has as new %(fmt)T specifier, which allows time values + to use strftime-like formatting. + +n. There is a new `compat41' shell option. + +o. The cd builtin has a new Posix-mandated `-e' option. + +p. Negative subscripts to indexed arrays, previously errors, now are treated + as offsets from the maximum assigned index + 1. + +q. Negative length specifications in the ${var:offset:length} expansion, + previously errors, are now treated as offsets from the end of the variable. + +r. Parsing change to allow `time -p --'. + +s. Posix-mode parsing change to not recognize `time' as a keyword if the + following token begins with a `-'. This means no more Posix-mode + `time -p'. Posix interpretation 267. + +t. There is a new `lastpipe' shell option that runs the last command of a + pipeline in the current shell context. The lastpipe option has no + effect if job control is enabled. + +u. History expansion no longer expands the `$!' variable expansion. + +v. Posix mode shells no longer exit if a variable assignment error occurs + with an assignment preceding a command that is not a special builtin. + +w. Non-interactive mode shells exit if -u is enabled an an attempt is made + to use an unset variable with the % or # expansions, the `//', `^', or + `,' expansions, or the parameter length expansion. + +x. Posix-mode shells use the argument passed to `.' as-is if a $PATH search + fails, effectively searching the current directory. Posix-2008 change. + +2. New Features in Readline + +a. The history library does not try to write the history filename in the + current directory if $HOME is unset. This closes a potential security + problem if the application does not specify a history filename. + +b. New bindable variable `completion-display-width' to set the number of + columns used when displaying completions. + +c. New bindable variable `completion-case-map' to cause case-insensitive + completion to treat `-' and `_' as identical. + +d. There are new bindable vi-mode command names to avoid readline's case- + insensitive matching not allowing them to be bound separately. + +e. New bindable variable `menu-complete-display-prefix' causes the menu + completion code to display the common prefix of the possible completions + before cycling through the list, instead of after. diff --git a/NEWS-4.2~ b/NEWS-4.2~ new file mode 100644 index 00000000..2b5ac32f --- /dev/null +++ b/NEWS-4.2~ @@ -0,0 +1,6886 @@ +This document details the changes between this version, bash-4.2-alpha, +and the previous version, bash-4.1-release. + +1. Changes to Bash + +a. Fixed a bug in the parser when processing alias expansions containing + quoted newlines. + +b. Fixed a memory leak in associative array expansion. + +c. Fixed a bug that caused quoted here-strings to be requoted when printed. + +d. Fixed a bug in arithmetic expansion that caused the index in an array + expansion to be evaluated twice under certain circumstances. + +e. Fixed several bugs with the expansion and display of variables that have + been given attributes but not values and are technically unset. + +f. Fixed a bug that caused core dumps when using filename completion that + expands to a filename containing a globbing character. + +g. Fixed a bug that caused assignment statements preceding a special builtin + when running in Posix mode to not persist after the builtin completed + when the special builtin was executed in a shell function without any + local variables. + +h. Fixed a bug that caused a command to remain in the hash table even after + `hash command' did not find anything if there was already an existing + hashed pathname. + +i. Fixed several bugs caused by executing unsafe functions from a signal + handler in the cases where a signal handler is executed immediately + rather than setting a flag for later execution. + +j. Fixed a bug that caused some internal flag variables to be set + incorrectly if `read -t' timed out. + +k. Fixed a Posix compatibility issue by making sure that a backslash escaping + a `}' within a double-quoted ${...} parameter expansion is removed as part + of the parameter expansion. + +l. Fixed a bug that caused execution of a trap to overwrite PIPESTATUS. + +m. Fixed a bug that caused here documents to not be displayed correctly + when attached to commands inside compound commands. + +n. Fixed a bug that caused the printf builtin to use the wrong precision + when using the `*' modifier. + +o. Fixed a bug that caused an arriving SIGCHLD to interrupt output functions + like those invoked by echo or printf. + +p. Changed to use a more robust mechanism than eaccess(2) when test is + checking filenames for execution permission. + +q. Fixed a bug that caused spurious semicolons to be added into the command + history in certain cases. + +r. Fixed a bug that caused the shell to free non-allocated memory when + unsetting element 0 of an associative array after it was assigned + implicitly. + +s. Fixed a bug that could cause the shell to dump core if using the `v' + vi editing command on a multi-line command. + +t. Fixed a bug that left FIFOs opened by process substitutions open long + enough to potentially cause file descriptor exhaustion when running a + shell function or shell builtin. + +u. Fixed a bug that caused the history expansion functions to not recognize + process substitution or extended glob patterns as single words. + +v. Fixed a bug that caused restricted shells to set a restricted command's + exit status incorrectly. + +w. Fixed a bug that caused bash to ignore the wrong set of filenames when + completing a command using the `complete-filename' readline command. + +x. Fixed a bug that caused a -PID argument following a -s sig or -n sig to + not be interpreted as a signal specification. + +y. Changed posix-mode behavior of a parse error in a `.' script or `eval' + command to exit the shell under Posix-specified conditions. Previous + versions printed a warning. + +z. Fixed a bug in \W prompt expansion that resulted in incorrect expansion + in the event of overlapping strings. + +aa. Fixed a bug that caused the := parameter expansion operator to return the + wrong value as the result of the expansion. + +bb. When in Posix mode, a single quote is not treated specially in a + double-quoted ${...} expansion, unless the expansion operator is + # or % or the non-Posix `//', `^', and `,'. In particular, it does + not define a new quoting context. This is from Posix interpretation 221. + +cc. Fixed a bug that inadvertently allowed program names containing slashes + to be entered into the command hash table. + +dd. Fixed a bug that caused the select builtin to incorrectly compute the + display width of the arguments in the presence of multibyte characters. + +ee. Fixed a bug that caused bash to not change the xtrace file descriptor if + BASH_XTRACEFD was found in the shell environment at startup. + +ff. Fixed a memory leak in the pattern removal parameter expansion. + +gg. Fixed a bug that caused SIGINT to fail to interrupt a nested loop if the + loop was in a pipeline. + +hh. Fixed a problem in $(...) parsing that caused the parser to add an extra + space to a here-document delimiter if the first word contained a `/'. + +ii. Fixed a bug that caused functions defined with the `function' reserved + word to require braces around the function body. + +jj. Fixed a bug that caused bash to dump core when a variable expansion being + used as an array subscript failed. + +kk. Fixed a bug that caused bash to dump core if the case-modification + expansions were used on a variable with a null value. + +ll. Fixed a bug that caused partially-quoted strings to be split incorrectly + if a variable with a null value was expanded within double quotes. + +mm. The pattern substitution word expansion has been sped up dramatically + when running in a locale with multibyte characters. + +nn. Fixed a bug that caused history -a to not write the correct lines to + the history file if all the new lines in the history list were added + since the last time the history file was read or written. + +oo. Fixed a bug that caused completion of a word with an unclosed `` command + substitution to set the prompt incorrectly. + +pp. Fixed a bug that caused extended globbing patterns in $HISTIGNORE or + $GLOBIGNORE to be incorrectly scanned. + +qq. Fixed a bug caused by closing file descriptors 3-20 on shell startup. The + shell now sets them to close-on-exec. + +rr. Fixed a bug that caused the exit status of `exec file' to be set incorrectly + if `file' was a directory. + +ss. Fixed a bug in the `.' builtin to make a non-interactive posix-mode shell + exit if the file argument to `.' is not found. Prefixing exec with + `command' makes the shell not exit. Posix requires this behavior. + +tt. Fixed a bug that caused `sh -c 'command exec; exit 1' to hang. + +uu. Fixed a bug in $(...) command substitution parsing that caused the shell + to treat backslash-newline incorrectly when parsing a comment. + +vv. Fixed bug that caused brace expansion sequence generation to misbehave + when supplied integers greater than 2**31 - 1. + +ww. Fixed a bug that caused failure to save file descriptors for redirections + to corrupt shell file descriptors. + +xx. Fixed a bug that caused bash-forward-shellword to not correctly handle + quoted strings. + +2. Changes to Readline + +a. Fixed a bug that caused the unconverted filename to be added to the list of + completions when the application specified filename conversion functions. + +b. Fixed a bug that caused the wrong filename to be passed to opendir when the + application has specified a filename dequoting function. + +c. Fixed a bug when repeating a character search in vi mode in the case where + there was no search to repeat. + +d. When show-all-if-ambiguous is set, the completion routines no longer insert + a common match prefix that is shorter than the text being completed. + +e. The full set of vi editing commands may now be used in callback mode. + +f. Fixed a bug that caused readline to not update its idea of the terminal + dimensions while running in `no-echo' mode. + +h. Fixed a bug that caused readline to dump core if an application called + rl_prep_terminal without setting rl_instream. + +i. Fixed a bug that caused meta-prefixed characters bound to incremental + search forward or backward to not be recognized if they were typed + subsequently. + +j. The incremental search code treats key sequences that map to the same + functions as (default) ^G, ^W, and ^Y as equivalent to those characters. + +k. Fixed a bug in menu-complete that caused it to misbehave with large + negative argument. + +l. Fixed a bug that caused vi-mode yank-last-arg to ring the bell when invoked + at the end of the line. + +3. New Features in Bash + +a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a + leading #!. + +b. Subshells begun to execute command substitutions or run shell functions or + builtins in subshells do not reset trap strings until a new trap is + specified. This allows $(trap) to display the caller's traps and the + trap strings to persist until a new trap is set. + +c. `trap -p' will now show signals ignored at shell startup, though their + disposition still cannot be modified. + +d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences. + +e. declare/typeset has a new `-g' option, which creates variables in the + global scope even when run in a shell function. + +f. test/[/[[ have a new -v variable unary operator, which returns success if + `variable' has been set. + +g. Posix parsing changes to allow `! time command' and multiple consecutive + instances of `!' (which toggle) and `time' (which have no cumulative + effect). + +h. Posix change to allow `time' as a command by itself to print the elapsed + user, system, and real times for the shell and its children. + +j. $((...)) is always parsed as an arithmetic expansion first, instead of as + a potential nested command substitution, as Posix requires. + +k. A new FUNCNEST variable to allow the user to control the maximum shell + function nesting (recursive execution) level. + +l. The mapfile builtin now supplies a third argument to the callback command: + the line about to be assigned to the supplied array index. + +m. The printf builtin has as new %(fmt)T specifier, which allows time values + to use strftime-like formatting. + +n. There is a new `compat41' shell option. + +o. The cd builtin has a new Posix-mandated `-e' option. + +p. Negative subscripts to indexed arrays, previously errors, now are treated + as offsets from the maximum assigned index + 1. + +q. Negative length specifications in the ${var:offset:length} expansion, + previously errors, are now treated as offsets from the end of the variable. + +r. Parsing change to allow `time -p --'. + +s. Posix-mode parsing change to not recognize `time' as a keyword if the + following token begins with a `-'. This means no more Posix-mode + `time -p'. Posix interpretation 267. + +t. There is a new `lastpipe' shell option that runs the last command of a + pipeline in the current shell context. The lastpipe option has no + effect if job control is enabled. + +u. History expansion no longer expands the `$!' variable expansion. + +v. Posix mode shells no longer exit if a variable assignment error occurs + with an assignment preceding a command that is not a special builtin. + +w. Non-interactive mode shells exit if -u is enabled an an attempt is made + to use an unset variable with the % or # expansions, the `//', `^', or + `,' expansions, or the parameter length expansion. + +x. Posix-mode shells use the argument passed to `.' as-is if a $PATH search + fails, effectively searching the current directory. Posix-2008 change. + +4. New Features in Readline + +a. The history library does not try to write the history filename in the + current directory if $HOME is unset. This closes a potential security + problem if the application does not specify a history filename. + +b. New bindable variable `completion-display-width' to set the number of + columns used when displaying completions. + +c. New bindable variable `completion-case-map' to cause case-insensitive + completion to treat `-' and `_' as identical. + +d. There are new bindable vi-mode command names to avoid readline's case- + insensitive matching not allowing them to be bound separately. + +e. New bindable variable `menu-complete-display-prefix' causes the menu + completion code to display the common prefix of the possible completions + before cycling through the list, instead of after. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.1-rc, +and the previous version, bash-4.1-beta. + +1. Changes to Bash + +a. Fixed a bug that caused printf to not return a partial value when it + encountered an error while converting an integer argument. + +b. Fixed a bug that caused setting one of the compatNN options to not + turn off the others. + +c. The (undocumented) --wordexp option is no longer included by default. + +d. Fixed a bug in conditional command execution that caused it to not + correctly ignore the exit status under certain circumstances. + +e. Added a configure-time check for correctly-working asprintf/snprintf. + +f. Fixed some problems with line number calculation and display when sourcing + a file in an interactive shell. + +g. Fixed a bug that caused the shell to crash when using `declare -A foo=bar'. + +h. Fixed a bug that caused an off-by-one error when calculating the directories + to display with the PROMPT_DIRTRIM option. + +2. Changes to Readline + +a. Fixed a bug that caused applications using the callback interface to not + react to SIGINT (or other signals) until another character arrived. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.1-beta, +and the previous version, bash-4.1-alpha. + +1. Changes to Bash + +a. Fixed a bug in mapfile that caused the shell to crash if it was passed the + name of an associative array. + +b. Fixed a bug that caused the shell to incorrectly split case patterns if + they contained characters in $IFS. + +c. Fixed a bug that caused the shell to set $? to the wrong value when using + a construct ending with a variable assignment with set -x enabled and PS4 + containing a command substitution. + +d. Fixed a bug that caused the shell to read commands incorrectly if an + expansion error occurred under certain conditions in a user-specified + subshell. + +e. Fixed a bug that caused the shell to set $? incorrectly if a parse error + occurred in an evaluation context ("eval", trap command, dot script, etc.) + +f. Fixed a bug that caused the shell to attempt command substitution + completion within a single-quoted string. + +g. Fixed a bug that caused the shell to insert an extra single quote during + word completion. + +h. Fixed a bug that caused the shell to crash if invoked with the environment + variable EMACS having a null value. + +i. Fixed a bug that caused bash to incorrectly report the presence of new + mail in a `maildir' environment. + +j. Fixed a bug that caused the shell to not recognize a here-document ending + delimiter inside a command substitution. + +k. Fixed a bug that caused the shell to crash when a a dynamic array variable + was assigned a scalar value. + +2. Changes to Readline + +3. New Features in Bash + +a. The mapfile/readarray builtin no longer stores the commands it invokes via + callbacks in the history list. + +b. There is a new `compat40' shopt option. + +c. The < and > operators to [[ do string comparisons using the current locale + only if the compatibility level is greater than 40 (set to 41 by default). + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.1-alpha, +and the previous version, bash-4.0-release. + +1. Changes to Bash + +a. Fixed bugs in the parser involving new parsing of the commands contained + in command substitution when the substitution is read. + +b. Fixed a bug that caused the shell to dump core when performing programmable + completion using a shell function. + +c. Fixed a bug in `mapfile' that caused it to invoke callbacks at the wrong + time. + +d. Fixed a bug that caused the shell to dump core when listing jobs in the + `exit' builtin. + +e. Fixed several bugs encountered when reading subscripts in associative + array assignments and expansions. + +f. Fixed a bug that under some circumstances caused an associative array to + be converted to an indexed array. + +g. Fixed a bug that caused syntax errors and SIGINT interrupts to not set + $? to a value > 128. + +h. Fixed a bug that caused the shell to remove FIFOs associated with process + substitution inside shell functions. + +i. Fixed a bug that caused terminal attributes to not be reset when the + `read' builtin timed out. + +j. Fixed a bug in brace expansion that caused unwanted zero padding of the + expanded terms. + +k. Fixed a bug that prevented the |& construct from working as intended when + used with a simple command with additional redirections. + +l. Fixed a bug with the case statment ;& terminator that caused the shell to + dereference a NULL pointer. + +m. Fixed a bug that caused assignment statements or redirections preceding + a simple command name to inhibit alias expansion. + +n. Fixed the behavior of `set -u' to conform to the latest Posix interpretation: + every expansion of an unset variable except $@ and $* will cause the + shell to exit. + +o. Fixed a bug that caused double-quoted expansions of $* inside word + expansions like ${x#$*} to not expand properly when $IFS is empty. + +p. Fixed a bug that caused traps to set $LINENO to the wrong value when they + execute. + +q. Fixed a bug that caused off-by-one errors when computing history lines in + the `fc' builtin. + +r. Fixed a bug that caused some terminating signals to not exit the shell + quickly enough, forcing the kernel to send the signal (e.g., SIGSEGV) + multiple times. + +s. Fixed a bug that caused the shell to attempt to add empty lines to the + history list when reading here documents. + +t. Made some internal changes that dramatically speeds up sequential indexed + array access. + +u. Fixed a bug that caused the shell to write past the end of a string when + completing a double-quoted string ending in a backslash. + +v. Fixed a bug that caused the shell to replace too many characters when a + pattern match was null in a ${foo//bar} expansion. + +w. Fixed bugs in the expansion of ** that caused duplicate directory names + and the contents of the current directory to be omitted. + +x. Fixed a bug that caused $? to not be set correctly when referencing an + unset variable with set -u and set -e enabled. + +y. Fixed a bug caused by executing an external program from the DEBUG trap + while a pipeline was running. The effect was to disturb the pipeline + state, occasionally causing it to hang. + +z. Fixed a bug that caused the ** glob expansion to dump core if it + encountered an unsearchable directory. + +aa. Fixed a bug that caused `command -v' and `command -V' to not honor the + path set by the -p option. + +bb. Fixed a bug that caused brace expansion to take place too soon in some + compound array assignments. + +cc. Fixed a bug that caused programmable completion functions' changes to + READLINE_POINT to not be reflected back to readline. + +dd. Fixed a bug that caused the shell to dump core if a trap was executed + during a shell assignment statement. + +ee. Fixed an off-by-one error when computing the number of positional + parameters for the ${@:0:n} expansion. + +ff. Fixed a problem with setting COMP_CWORD for programmable completion + functions that could leave it set to -1. + +gg. Fixed a bug that caused the ERR trap to be triggered in some cases where + `set -e' would not have caused the shell to exit. + +hh. Fixed a bug that caused changes made by `compopt' to not persist past the + completion function in which compopt was executed. + +ii. Fixed a bug that caused the list of hostname completions to not be cleared + when HOSTNAME was unset. + +jj. Fixed a bug that caused variable expansion in here documents to look in + any temporary environment. + +kk. Bash and readline can now convert file names between precomposed and + decomposed Unicode on Mac OS X ("keyboard" and file system forms, + respectively). This affects filename completion (using new + rl_filename_rewrite_hook), globbing, and readline redisplay. + +ll. The ERR and EXIT traps now see a non-zero value for $? when a parser + error after set -e has been enabled causes the shell to exit. + +mm. Fixed a bug that in brace expansion that caused zero-prefixed terms to + not contain the correct number of digits. + +nn. Fixed a bug that caused the shell to free non-allocated memory when + unsetting an associative array which had had a value implicitly assigned + to index "0". + +oo. Fixed a memory leak in the ${!prefix@} expansion. + +pp. Fixed a bug that caused printf to not correctly report all write errors. + +qq. Fixed a bug that caused single and double quotes to act as delimiters + when splitting a command line into words for programmable completion. + +rr. Fixed a bug that caused ** globbing that caused **/path/* to match every + directory, not just those matching `path'. + +ss. Fixed a bug that caused the shell to dump core when running `help' without + arguments if the terminal width was fewer than 7 characters. + +2. Changes to Readline + +a. The SIGWINCH signal handler now avoids calling the redisplay code if + one arrives while in the middle of redisplay. + +b. Changes to the timeout code to make sure that timeout values greater + than one second are handled better. + +c. Fixed a bug in the redisplay code that was triggered by a prompt + containing invisible characters exactly the width of the screen. + +d. Fixed a bug in the redisplay code encountered when running in horizontal + scroll mode. + +e. Fixed a bug that prevented menu completion from properly completing + filenames. + +f. Fixed a redisplay bug caused by a multibyte character causing a line to + wrap. + +g. Fixed a bug that caused key sequences of two characters to not be + recognized when a longer sequence identical in the first two characters + was bound. + +h. Fixed a bug that caused history expansion to be attempted on $'...' + single-quoted strings. + +i. Fixed a bug that caused incorrect redisplay when the prompt contained + multibyte characters in an `invisible' sequence bracketed by \[ and + \]. + +j. Fixed a bug that caused history expansion to short-circuit after + encountering a multibyte character. + +3. New Features in Bash + +a. Here-documents within $(...) command substitutions may once more be + delimited by the closing right paren, instead of requiring a newline. + +b. Bash's file status checks (executable, readable, etc.) now take file + system ACLs into account on file systems that support them. + +c. Bash now passes environment variables with names that are not valid + shell variable names through into the environment passed to child + processes. + +d. The `execute-unix-command' readline function now attempts to clear and + reuse the current line rather than move to a new one after the command + executes. + +e. `printf -v' can now assign values to array indices. + +f. New `complete -E' and `compopt -E' options that work on the "empty" + completion: completion attempted on an empty command line. + +g. New complete/compgen/compopt -D option to define a `default' completion: + a completion to be invoked on command for which no completion has been + defined. If this function returns 124, programmable completion is + attempted again, allowing a user to dynamically build a set of completions + as completion is attempted by having the default completion function + install individual completion functions each time it is invoked. + +h. When displaying associative arrays, subscripts are now quoted. + +i. Changes to dabbrev-expand to make it more `emacs-like': no space appended + after matches, completions are not sorted, and most recent history entries + are presented first. + +j. The [[ and (( commands are now subject to the setting of `set -e' and the + ERR trap. + +k. The source/. builtin now removes NUL bytes from the file before attempting + to parse commands. + +l. There is a new configuration option (in config-top.h) that forces bash to + forward all history entries to syslog. + +m. A new variable $BASHOPTS to export shell options settable using `shopt' to + child processes. + +n. There is a new confgure option that forces the extglob option to be + enabled by default. + +o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace + output to that file descriptor. + +p. If the optional left-hand-side of a redirection is of the form {var}, the + shell assigns the file descriptor used to $var or uses $var as the file + descriptor to move or close, depending on the redirection operator. + +q. The < and > operators to the [[ conditional command now do string + comparison according to the current locale. + +r. Programmable completion now uses the completion for `b' instead of `a' + when completion is attempted on a line like: a $(b c. + +s. Force extglob on temporarily when parsing the pattern argument to + the == and != operators to the [[ command, for compatibility. + +t. Changed the behavior of interrupting the wait builtin when a SIGCHLD is + received and a trap on SIGCHLD is set to be Posix-mode only. + +u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS + characters, ignoring delimiters like newline. + +4. New Features in Readline + +a. New bindable function: menu-complete-backward. + +b. In the vi insertion keymap, C-n is now bound to menu-complete by default, + and C-p to menu-complete-backward. + +c. When in vi command mode, repeatedly hitting ESC now does nothing, even + when ESC introduces a bound key sequence. This is closer to how + historical vi behaves. + +d. New bindable function: skip-csi-sequence. Can be used as a default to + consume key sequences generated by keys like Home and End without having + to bind all keys. + +e. New application-settable function: rl_filename_rewrite_hook. Can be used + to rewite or modify filenames read from the file system before they are + compared to the word to be completed. + +f. New bindable variable: skip-completed-text, active when completing in the + middle of a word. If enabled, it means that characters in the completion + that match characters in the remainder of the word are "skipped" rather + than inserted into the line. + +g. The pre-readline-6.0 version of menu completion is available as + "old-menu-complete" for users who do not like the readline-6.0 version. + +h. New bindable variable: echo-control-characters. If enabled, and the + tty ECHOCTL bit is set, controls the echoing of characters corresponding + to keyboard-generated signals. + +i. New bindable variable: enable-meta-key. Controls whether or not readline + sends the smm/rmm sequences if the terminal indicates it has a meta key + that enables eight-bit characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-release, +and the previous version, bash-4.0-rc1. + +1. Changes to Bash + +a. Changed the message printed when setlocale(3) fails to only include the + strerror error text if the call changes errno. + +b. Changed trap command execution to reset the line number before running a + trap (except DEBUG and RETURN traps). + +c. Fixed behavior of case-modifiying word expansions to not work on + individual words within a variable's value. + +d. Fixed a bug that caused mapfile to not be interruptible when run in an + interactive shell. + +e. Fixed a bug that caused mapfile to not run callbacks for the first line + read. + +f. Fixed a bug that caused mapfile to not honor EOF typed in an interactive + shell. + +g. Fixed the coprocess reaping code to not run straight from a signal handler. + +h. Fixed a bug that caused printf -b to ignore the first % conversion specifier + in the format string on 64-bit systems. + +i. Fixed a bug that caused incorrect word splitting when `:', `=', or `~' + appeared in $IFS. + +j. Fixed a bug that caused data corruption in the programmable completion code + when a shell function called from a completion aborted execution. + +k. Fixed a bug that caused the CPU usage reported by the `time' builtin to be + capped at 100%. + +l. Changed behavior of shell when -e option is in effect to reflect consensus + of Posix shell standardization working group. + +m. Fixed a bug introduced in bash-4.0-alpha that caused redirections to not + be displayed by `type' or `declare' when appearing in functions under + certain circumstances. + +2. Changes to Readline + +a. Fixed a bug that caused !(...) extended glob patterns to inhibit later + history expansion. + +b. Reworked the signal handling to avoid calling disallowed functions from a + signal handler. + +3. New Features in Bash + +a. `readarray' is now a synonym for `mapfile'. +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-rc1, +and the previous version, bash-4.0-beta2. + +1. Changes to Bash + +a. Fixed a bug that caused parsing errors when a $()-style command + substitution was follwed immediately by a quoted newline. + +b. Fixed a bug that caused extended shell globbing patterns beginning with + `*(' to not work when used with pattern substitution word expansions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-beta2, +and the previous version, bash-4.0-beta. + +1. Changes to Bash + +a. Fixed a bug that caused failed word expansions to set $? but not + PIPESTATUS. + +b. Changed filename completion to quote the tilde in a filename with a + leading tilde that exists in the current directory. + +c. Fixed a bug that caused a file descriptor leak when performing + redirections attached to a compound command. + +d. Fixed a bug that caused expansions of $@ and $* to not exit the shell if + the -u option was enabled and there were no posititional parameters. + +e. Fixed a bug that resulted in bash not terminating immediately if a + terminating signal was received while performing output. + +f. Fixed a bug that caused the shell to crash after creating 256 process + substitutions during word completion. + +2. Changes to Readline + +a. Fixed a bug that caused redisplay errors when using prompts with invisible + characters and numeric arguments to a command in a multibyte locale. + +b. Fixed a bug that caused redisplay errors when using prompts with invisible + characters spanning more than two physical screen lines. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-beta, +and the previous version, bash-4.0-alpha. + +1. Changes to Bash + +a. Fixed a typo that caused a variable to be used before initialization + while parsing Posix-style command substitutions. + +b. Fixed a bug that caused stray ^? when the expansion of a parameter used + as part of a pattern removal expansion is empty, but part of a non- + empty string. + +c. Fixed a bug that could cause strings not converted to numbers by strtol + to be treated as if the conversion had been successful. + +d. The `return' builtin now accepts no options and requires a `--' before + a negative return value, as Posix requires. + +e. Fixed a bug that caused local variables to be created with the empty + string for a value rather than no value. + +f. Changed behavior so the shell now acts as if it received an interrupt + when a pipeline is killed by SIGINT while executing a list. + +g. Fixed a bug that caused `declare var' and `typeset var' to initialize + `var' to the empty string. + +h. Changed `bind' builtin to print a warning but proceed if invoked when + line editing is not active. + +i. Fixed a bug that caused the shell to exit when the `errexit' option is + set and a command in a pipeline returns a non-zero exit status. + +j. Fixed a bug that caused the shell to not run the exit trap in a command + run with `bash -c' under some circumstances. + +k. Fixed a bug that caused parser errors to occasionally not set $? when + running commands with `eval'. + +l. Fixed a bug that caused stray control characters when evaluating compound + array assignments containing $'\x7f' escapes. + +m. Fixed a bug that caused redirections involving file descriptor 10 as the + target to behave incorrectly. + +n. Fixed a bug that could cause memory to be freed multiple times when + assigning to COMP_WORDBREAKS. + +o. Fixed a bug that could cause NULL pointer dereferences when COMP_WORDBREAKS + was unset. + +2. Changes to Readline + +3. New Features in Bash + +a. A value of 0 for the -t option to `read' now returns success if there is + input available to be read from the specified file descriptor. + +b. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged + mode. + +c. New bindable readline functions shell-forward-word and shell-backward-word, + which move forward and backward words delimited by shell metacharacters + and honor shell quoting. + +d. New bindable readline functions shell-backward-kill-word and shell-kill-word + which kill words backward and forward, but use the same word boundaries + as shell-forward-word and shell-backward-word. + +4. New Features in Readline + +a. If the kernel supports it, readline displays special characters + corresponding to a keyboard-generated signal when the signal is received. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-alpha, +and the previous version, bash-3.2-release. + +1. Changes to Bash + +a. Fixed several bugs in old-style `` command substitution parsing, including + comment parsing and quoted string handling. + +b. Fixed problems parsing arguments to the [[ command's =~ regular expression + matching operator: metacharacter and whitespace parsing. + +c. Fixed a bug that caused the shell to inappropriately reuse high-numbered + file descriptors it used internally. + +d. Fixed a bug in pattern replacement word expansions that caused a `/' as + the first character of an expanded pattern to be mistaken for a global + replacement specifier. + +e. Fixed several problems with the asprintf and snprintf replacement functions + that caused hangs and crashes. + +f. Fixed a bug in the calculation of the current and previous job that caused + it to refer to incorrect jobs. + +g. Fixed a bug in the check for the validity of a hashed command pathname that + caused unnecessary hash table deletions and additions. + +h. Fixed a bug that caused child processes to inherit the wrong value for $!. + +i. Fixed a bug that caused `.' to fail to read and execute commands from non- + regular files such as devices or named pipes. + +j. Fixed a bug in printf formatting for the %x and %X expansions that occurred + on some systems. + +k. Fixed a bug that caused the shell to crash when creating temporary files if + $TMPDIR named a non-writable directory. + +l. Fixed a bug that caused the shell to ignore $TMPDIR when creating temporary + files under some circumstances. + +m. Fixed a bug that caused named pipes created by process substitution to not + be cleaned up. + +n. Fixed a bug that caused HISTTIMEFORMAT to not be honored when it appeared + in the initial shell environment. + +o. Fixed several bugs in the expansion of $* and $@ (quoted and unquoted) + when IFS is null or contains non-whitespace characters; the same changes + apply to arrays subscripted with * or @. + +p. Fixed several problems with pattern substitution expansions on the + positional parameters and arrays subscripted with * or @ that occurred + when $IFS was set to the empty string. + +q. Made a change to the default locale initialization code that should + result in better behavior from the locale-aware library functions. + +r. Fixed a bug that caused compacting the jobs list to drop jobs. + +s. Fixed a bug that caused jumps back to the top-level processing loop from + a builtin command to leave the shell in an inconsistent state. + +t. Fixed a bug that caused characters that would be escaped internally to be + doubled when escaped with a backslash. + +u. Fixed the initialization of mailboxes to not cause maildirs to be read + (and stat(2) called for every message file) at shell startup. + +v. Fixed a bug that caused the shell to not display $PS2 when the read builtin + reads a line continued with a backslash. + +w. Fixed a bug that caused errors in word splitting when $IFS contained + characters used for internal quoting. + +x. Fixed bugs that caused problems with output from shell builtins not being + completely displayed on some systems. + +y. Fixed a bug that caused output to be lost when a redirection is acting on + the shell's output file descriptor. + +z. Fixed bugs caused by shell builtins not checking for all write errors. + +aa. Fixed a problem that caused the shell to dump core if expansions on the + pattern passed to the pattern removal word expansions resulted in expansion + errors. + +bb. Fixed a bug that caused bash to loop infinitely after creating and + waiting for 4096 jobs. + +cc. Fixed a bug that caused bash to lose the status of a background job under + certain circumstances. + +dd. Fixed a bug that caused bash to not look in the temporary environment + when performing variable lookup under certain circumstances. + +ee. Fixed a bug that caused bash to close file descriptors greater than 10 + when they were used in redirections. + +ff. Fixed a problem that caused the shell to attempt to read from the standard + input when called as `bash -i script'. + +gg. Fixed a memory leak and variable initialization problems when the -v option + was supplied to `printf' that could cause incorrect results. + +hh. Fixed a bug that caused the `read' builtin to count bytes when the -n option + was supplied, rather than (possibly multibyte) characters. + +ii. Fixed a bug when displaying a function due to not converting the function + to an external form. + +jj. Changed job control initialization to ensure that the shell has a tty + as its controlling terminal before enabling job control. + +kk. Fixed a bug with the `test' builtin that caused it to misinterpret + arguments beginning with `-' but containing more than one character. + +ll. Fixed bug that could cause the shell to dump core in certain cases where + a command sets the SIGINT disposition to the default. + +mm. Fixed a bug in the pattern replacement (affecting both word expansion + and the `fc' builtin) that occurred when the pattern and replacement + strings were empty. + +nn. Fixed a bug that caused an arithmetic evaluation error to disable all + further evaluation. + +oo. Fixed a bug in pathname expansion that caused it to interpret backslashes + in the pathname as quoting characters. + +pp. Fixed a bug in the replacement getcwd() implementation that could cause + memory to be overwritten. + +qq. When in Posix mode, the `ulimit' builtin now uses a block size of 512 for + the `-c' and `-f' options. + +rr. Brace expansion now allows process substitutions to pass through unchanged. + +ss. Fixed a problem in the command name completion code to avoid quoting + escaped special characters twice when the command name begins with a tilde. + +tt. Fixed a problem in the printf builtin that resulted in single-byte + output for the "'" escape, even when using multibyte characters. + +uu. Fixed a bug that caused the failure exit status to be lost when redirections + attached to a compound command failed. + +vv. Fixed a bug that caused the internal random number generator to not be + re-seeded correctly when creating a subshell. + +ww. Fixed a bug that could cause the bash replacement getcwd to overwrite + memory. + +xx. Fixed a bug that caused the shell to not receive SIGINT if it was sent + while the shell was waiting for a command substitution to terminate, and + make sure the exit status is correct when it does. + +yy. Fixed a bug that resulted in the second and subsequent children spawned + by a shell begun to run a command substitution being placed into the + wrong process group. + +zz. Fixed a bug that caused the results of successful tilde expansion to be + subject to pathname expansion and word splitting. + +aaa. Fixed a bug that could cause the shell to hang if it encountered an + error that caused it to jump back to the top processing loop during a + command substitution or `eval' command. + +bbb. Fixed a bug that caused the `read' builtin to use the tty's attributes + instead of those of the file descriptor passed with the -u option when + processing the -n and -d options. + +ccc. Fixed a bug that caused incorrect expansion of ${array[@]:foo} if the + first character of $IFS was not whitespace. + +ddd. Fixed a bug that occurred when scanning for the ending delimiter of a + ${parameter/pat/sub} expansion. + +eee. Fixed a bug that caused the shell to inappropriately expand command + substitutions in words when expanding directory names for completion. + +fff. Fixed a bug that caused the `fc' builtin to look too far back in the + history list under certain circumstances. + +ggg. Fixed a bug that caused a shell running in Posix mode to search $PWD for + a file specified as an argument to source/. when the file was not found + in $PATH. + +hhh. Fixed a bug that caused the shell to modify the case of a command word + found via command completion when the shell was performing case- + insensitive completion. + +iii. Fixed a bug that caused the shell to search $PATH for an argument to + source/. even when it contained a `/'. + +jjj. Fixed a bug that caused brace expansion to misorder expansions when the + locale did not have a collating order like aAbBcC...zZ. + +kkk. Fixed a bug that did not allow `set +o history' to have any effect when + run in a startup file or from a sourced file. + +lll. Fixed a bug with the precedence of the ?: conditional arithmetic operator. + +mmm. Fixed a bug that caused side effects of temporary variable assignments + to persist in the shell environment. + +nnn. Fixed a bug that caused the terminal to be left in non-canonical mode + when using editing commands that invoke the an editor on the current + command line. + +ooo. Fixed a bug that caused globbing characters and characters in $IFS to not + be quoted appropriately when displaying assignment statements. + +ppp. Fixed a bug that caused the `-e' option to be inherited when sourcing a + file or evaluating a command with `eval' even if the return value of the + command was supposed to be ignored. + +qqq. Fixed a bug that caused the shell to attempt to created variables with + invalid names if such names appeared in the initial environment. + +rrr. Fixed a bug with quote removal in strings where the final character is a + backslash. + +sss. Fixed a bug that caused the effects of special variables to persist even + when the variables were unset as part of the shell reinitializing itself + to execute a shell script. + +ttt. Fixed a bug that caused the history to not be saved after `history -c' or + `history -d' was executed until a sufficient number of commands had been + saved to the history. + +uuu. Bash now parses command substitutions according to Posix rules: parsing + the command contained in $() to find the closing delimiter. + +vvv. Fixed a bug that caused traps on SIGCHLD set in a SIGCHLD handler to + not persist. + +www. Fixed a bug that didn't allow SIGCHLD to interrupt the `wait' builtin + as Posix specifies. + +xxx. Invalid numeric arguments to shell builtins no longer cause the shell to + short-circuit any executing compound command. + +yyy. Fixed a bug that caused the exit status to be lost when `break' was + used to short-circuit a loop's execution. + +zzz. Fixed a bug that caused stray ^? characters to be left in expansions of + "${array[*]}". + +aaaa. Bash now prints better error messages for here documents terminated by + EOF and for identifying the incorrect token in an invalid arithmetic + expression. + +bbbb. Fixed a bug in the variable length word expansion that caused it to + incorrectly calculate the number of multibyte characters. + +cccc. Fixed a race condition that could result in the top-level shell setting + the terminal's process group to an incorrect value if the process + group was changed by a child of a child of the shell. + +dddd. Fixed a bug that caused here documents belonging to commands within a + compound command to be displayed in a syntactially-incorrect form, which + prevented them from being re-read as input. + +eeee. The shell displays more warnings about failures to set the locale. + +ffff. Fixed a bug that caused the body of a here-document to not be saved to + the history list. + +gggg. Fixed a bug that caused configure to incorrectly conclude that FreeBSD + had /dev/fd available, resulting in problems with process substitution. + +2. Changes to Readline + +a. Fixed a number of redisplay errors in environments supporting multibyte + characters. + +b. Fixed bugs in vi command mode that caused motion commands to inappropriately + set the mark. + +c. When using the arrow keys in vi insertion mode, readline allows movement + beyond the current end of the line (unlike command mode). + +d. Fixed bugs that caused readline to loop when the terminal has been taken + away and reads return -1/EIO. + +e. Fixed bugs in redisplay occurring when displaying prompts containing + invisible characters. + +f. Fixed a bug that caused the completion append character to not be reset to + the default after an application-specified completion function changed it. + +g. Fixed a problem that caused incorrect positioning of the cursor while in + emacs editing mode when moving forward at the end of a line while using + a locale supporting multibyte characters. + +h. Fixed an off-by-one error that caused readline to drop every 511th + character of buffered input. + +i. Fixed a bug that resulted in SIGTERM not being caught or cleaned up. + +j. Fixed redisplay bugs caused by multiline prompts with invisible characters + or no characters following the final newline. + +k. Fixed redisplay bug caused by prompts consisting solely of invisible + characters. + +l. Fixed a bug in the code that buffers characters received very quickly in + succession which caused characters to be dropped. + +m. Fixed a bug that caused readline to reference uninitialized data structures + if it received a SIGWINCH before completing initialzation. + +n. Fixed a bug that caused the vi-mode `last command' to be set incorrectly + and therefore unrepeatable. + +o. Fixed a bug that caused readline to disable echoing when it was being used + with an output file descriptor that was not a terminal. + +p. Readline now blocks SIGINT while manipulating internal data structures + during redisplay. + +q. Fixed a bug in redisplay that caused readline to segfault when pasting a + very long line (over 130,000 characters). + +r. Fixed bugs in redisplay when using prompts with no visible printing + characters. + +3. New Features in Bash + +a. When using substring expansion on the positional parameters, a starting + index of 0 now causes $0 to be prefixed to the list. + +b. The `help' builtin now prints its columns with entries sorted vertically + rather than horizontally. + +c. There is a new variable, $BASHPID, which always returns the process id of + the current shell. + +d. There is a new `autocd' option that, when enabled, causes bash to attempt + to `cd' to a directory name that is supplied as the first word of a + simple command. + +e. There is a new `checkjobs' option that causes the shell to check for and + report any running or stopped jobs at exit. + +f. The programmable completion code exports a new COMP_TYPE variable, set to + a character describing the type of completion being attempted. + +g. The programmable completion code exports a new COMP_KEY variable, set to + the character that caused the completion to be invoked (e.g., TAB). + +h. If creation of a child process fails due to insufficient resources, bash + will try again several times before reporting failure. + +i. The programmable completion code now uses the same set of characters as + readline when breaking the command line into a list of words. + +j. The block multiplier for the ulimit -c and -f options is now 512 when in + Posix mode, as Posix specifies. + +k. Changed the behavior of the read builtin to save any partial input received + in the specified variable when the read builtin times out. This also + results in variables specified as arguments to read to be set to the empty + string when there is no input available. When the read builtin times out, + it returns an exit status greater than 128. + +l. The shell now has the notion of a `compatibility level', controlled by + new variables settable by `shopt'. Setting this variable currently + restores the bash-3.1 behavior when processing quoted strings on the rhs + of the `=~' operator to the `[[' command. + +m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number + of threads) options. + +n. The -p option to `declare' now displays all variable values and attributes + (or function values and attributes if used with -f). + +o. There is a new `compopt' builtin that allows completion functions to modify + completion options for existing completions or the completion currently + being executed. + +p. The `read' builtin has a new -i option which inserts text into the reply + buffer when using readline. + +q. A new `-E' option to the complete builtin allows control of the default + behavior for completion on an empty line. + +r. There is now limited support for completing command name words containing + globbing characters. + +s. Changed format of internal help documentation for all builtins to roughly + follow man page format. + +t. The `help' builtin now has a new -d option, to display a short description, + and a -m option, to print help information in a man page-like format. + +u. There is a new `mapfile' builtin to populate an array with lines from a + given file. + +v. If a command is not found, the shell attempts to execute a shell function + named `command_not_found_handle', supplying the command words as the + function arguments. + +w. There is a new shell option: `globstar'. When enabled, the globbing code + treats `**' specially -- it matches all directories (and files within + them, when appropriate) recursively. + +x. There is a new shell option: `dirspell'. When enabled, the filename + completion code performs spelling correction on directory names during + completion. + +y. The `-t' option to the `read' builtin now supports fractional timeout + values. + +z. Brace expansion now allows zero-padding of expanded numeric values and + will add the proper number of zeroes to make sure all values contain the + same number of digits. + +aa. There is a new bash-specific bindable readline function: `dabbrev-expand'. + It uses menu completion on a set of words taken from the history list. + +bb. The command assigned to a key sequence with `bind -x' now sets two new + variables in the environment of the executed command: READLINE_LINE_BUFFER + and READLINE_POINT. The command can change the current readline line + and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, + respectively. + +cc. There is a new &>> redirection operator, which appends the standard output + and standard error to the named file. + +dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects + the standard error for a command through a pipe. + +ee. The new `;&' case statement action list terminator causes execution to + continue with the action associated with the next pattern in the + statement rather than terminating the command. + +ff. The new `;;&' case statement action list terminator causes the shell to + test the next set of patterns after completing execution of the current + action, rather than terminating the command. + +gg. The shell understands a new variable: PROMPT_DIRTRIM. When set to an + integer value greater than zero, prompt expansion of \w and \W will + retain only that number of trailing pathname components and replace + the intervening characters with `...'. + +hh. There are new case-modifying word expansions: uppercase (^[^]) and + lowercase (,[,]). They can work on either the first character or + array element, or globally. They accept an optional shell pattern + that determines which characters to modify. There is an optionally- + configured feature to include capitalization operators. + +ii. The shell provides associative array variables, with the appropriate + support to create, delete, assign values to, and expand them. + +jj. The `declare' builtin now has new -l (convert value to lowercase upon + assignment) and -u (convert value to uppercase upon assignment) options. + There is an optionally-configurable -c option to capitalize a value at + assignment. + +kk. There is a new `coproc' reserved word that specifies a coprocess: an + asynchronous command run with two pipes connected to the creating shell. + Coprocs can be named. The input and output file descriptors and the + PID of the coprocess are available to the calling shell in variables + with coproc-specific names. + +4. New Features in Readline + +a. A new variable, rl_sort_completion_matches; allows applications to inhibit + match list sorting (but beware: some things don't work right if + applications do this). + +b. A new variable, rl_completion_invoking_key; allows applications to discover + the key that invoked rl_complete or rl_menu_complete. + +c. The functions rl_block_sigint and rl_release_sigint are now public and + available to calling applications who want to protect critical sections + (like redisplay). + +d. The functions rl_save_state and rl_restore_state are now public and + available to calling applications; documented rest of readline's state + flag values. + +e. A new user-settable variable, `history-size', allows setting the maximum + number of entries in the history list. + +f. There is a new implementation of menu completion, with several improvements + over the old; the most notable improvement is a better `completions + browsing' mode. + +g. The menu completion code now uses the rl_menu_completion_entry_function + variable, allowing applications to provide their own menu completion + generators. + +h. There is support for replacing a prefix of a pathname with a `...' when + displaying possible completions. This is controllable by setting the + `completion-prefix-display-length' variable. Matches with a common prefix + longer than this value have the common prefix replaced with `...'. + +i. There is a new `revert-all-at-newline' variable. If enabled, readline will + undo all outstanding changes to all history lines when `accept-line' is + executed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-release, +and the previous version, bash-3.2-beta. + +1. Changes to Bash + +a. Fixed a bug that caused the temporary environment passed to a command to + affect the shell's environment under certain circumstances. + +b. Fixed a bug in the printf builtin that caused the %q format specifier to + ignore empty string arguments. + +c. Improved multibyte character environment detection at configuration time. + +d. Fixed a bug in the read builtin that left spurious escape characters in the + input after processing backslashes when assigning to an array variable. + +2. Changes to Readline + +a. Fixed a redisplay bug that occurred in multibyte-capable locales when the + prompt was one character longer than the screen width. +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-beta, +and the previous version, bash-3.2-alpha. + +1. Changes to Bash + +a. Changed the lexical analyzer to treat locale-specific blank characters as + white space. + +b. Fixed a bug in command printing to avoid confusion between redirections and + process substitution. + +c. Fixed problems with cross-compiling originating from inherited environment + variables. + +d. Added write error reporting to printf builtin. + +e. Fixed a bug in the variable expansion code that could cause a core dump in + a multi-byte locale. + +f. Fixed a bug that caused substring expansion of a null string to return + incorrect results. + +g. BASH_COMMAND now retains its previous value while executing commands as the + result of a trap, as the documentation states. + +2. Changes to Readline + +a. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing + the prompt and input line multiple times. + +b. Fixed history expansion to not be confused by here-string redirection. + +c. Readline no longer treats read errors by converting them to newlines, as + it does with EOF. This caused partial lines to be returned from readline(). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-alpha, +and the previous version, bash-3.1-release. + +1. Changes to Bash + +a. Fixed a source bug that caused the minimal configuration to not compile. + +b. Fixed memory leaks in error handling for the `read' builtin. + +c. Changed the [[ and (( compound commands to set PIPESTATUS with their exit + status. + +d. Fixed some parsing problems with compound array assignments. + +e. Added additional configuration changes for: NetBSD (incomplete multibyte + character support) + +f. Fixed two bugs with local array variable creation when shadowing a variable + of the same name from a previous context. + +g. Fixed the `read' builtin to restore the correct set of completion functions + if a timeout occurs. + +h. Added code to defer the initialization of HISTSIZE (and its stifling of the + history list) until the history file is loaded, allowing a startup file to + override the default value. + +i. Tightened up the arithmetic expression parsing to produce better error + messages when presented with invalid operators. + +j. Fixed the cross-compilation support to build the signal list at shell + invocation rather than compile time if cross-compiling. + +k. Fixed multibyte support for non-gcc compilers (or compilers that do not + allow automatic array variable sizing based on a non-constant value). + +l. Several fixes to the code that manages the list of terminated jobs and + their exit statuses, and the list of active and recently-terminated jobs + to avoid pid aliasing/wraparound and allocation errors. + +m. Fixed a problem that allowed scripts to die due to SIGINT while waiting + for children, even when started in the background or otherwise ignoring + SIGINT. + +n. Fixed a bug that caused shells invoked as -/bin/bash from not being + recognized as login shells. + +o. Fixed a problem that caused shells in the background to give the terminal + to a process group other than the foreground shell process group. + +p. Fixed a problem with extracting the `varname' in ${#varname}. + +q. Fixed the code that handles SIGQUIT to not exit immediately -- thereby + calling functions that may not be called in a signal handler context -- + but set a flag and exit afterward (like SIGINT). + +r. Changed the brace expansion code to skip over braces that don't begin a + valid matched brace expansion construct. + +s. Fixed `typeset' and `declare' to not require that their shell function + operands to be valid shell identifiers. + +t. Changed `test' to use access(2) with a temporary uid/euid swap when testing + file attributes and running setuid, and access(2) in most other cases. + +u. Changed completion code to not attempt command name completion on a line + consisting solely of whitespace when no_empty_command_completion is set. + +v. The `hash' builtin now prints nothing in posix mode when the hash table is + empty, and prints a message to that effect to stdout instead of stderr + when not in posix mode. + +w. Fixed a bug in the extended pattern matching code that caused it to fail to + match periods with certain patterns. + +x. Fixed a bug that caused the shell to dump core when performing filename + generation in directories with thousands of files. + +y. Returned to the original Bourne shell rules for parsing ``: no recursive + parsing of embedded quoted strings or ${...} constructs. + +z. The inheritence of the DEBUG, RETURN, and ERR traps is now dependent only + on the settings of the `functrace' and `errtrace' shell options, rather + than whether or not the shell is in debugging mode. + +aa. Fixed a problem with $HOME being converted to ~ in the expansion of + members of the DIRSTACK array. + +bb. Fixed a problem with quoted arguments to arithmetic expansions in certain + constructs. + +cc. The command word completion code now no longer returns matching directories + while searching $PATH. + +dd. Fixed a bug with zero-padding and precision handling in snprintf() + replacement. + +ee. Fixed a bug that caused the command substitution code not to take embedded + shell comments into account. + +ff. Fixed a bug that caused $((...);(...)) to be misinterpreted as an + arithmetic substitution. + +gg. Fixed a bug in the prompt expansion code that inappropriately added a + \001 before a \002 under certain circumstances. + +hh. Fixed a bug that caused `unset LANG' to not properly reset the locale + (previous versions would set the locale back to what it was when bash + was started rather than the system's "native" locale). + +ii. Fixed a bug that could cause file descriptors > 10 to not be closed even + when closed explicitly by a script. + +jj. Fixed a bug that caused single quotes to be stripped from ANSI-C quoting + inside double-quoted command substitutions. + +kk. Fixed a bug that could cause core dumps when `return' was executed as the + last element of a pipeline inside a shell function. + +ll. Fixed a bug that caused DEBUG trap strings to overwrite commands stored in + the jobs list. + +2. Changes to Readline + +a. Fixed a problem that caused segmentation faults when using readline in + callback mode and typing consecutive DEL characters on an empty line. + +b. Fixed several redisplay problems with multibyte characters, all having to + do with the different code paths and variable meanings between single-byte + and multibyte character redisplay. + +c. Fixed a problem with key sequence translation when presented with the + sequence \M-\C-x. + +d. Fixed a problem that prevented the `a' command in vi mode from being + undone and redone properly. + +e. Fixed a problem that prevented empty inserts in vi mode from being undone + properly. + +f. Fixed a problem that caused readline to initialize with an incorrect idea + of whether or not the terminal can autowrap. + +g. Fixed output of key bindings (like bash `bind -p') to honor the setting of + convert-meta and use \e where appropriate. + +h. Changed the default filename completion function to call the filename + dequoting function if the directory completion hook isn't set. This means + that any directory completion hooks need to dequote the directory name, + since application-specific hooks need to know how the word was quoted, + even if no other changes are made. + +i. Fixed a bug with creating the prompt for a non-interactive search string + when there are non-printing characters in the primary prompt. + +j. Fixed a bug that caused prompts with invisible characters to be redrawn + multiple times in a multibyte locale. + +k. Fixed a bug that could cause the key sequence scanning code to return the + wrong function. + +l. Fixed a problem with the callback interface that caused it to fail when + using multi-character keyboard macros. + +m. Fixed a bug that could cause a core dump when an edited history entry was + re-executed under certain conditions. + +n. Fixed a bug that caused readline to reference freed memory when attmpting + to display a portion of the prompt. + +3. New Features in Bash + +a. Changed the parameter pattern replacement functions to not anchor the + pattern at the beginning of the string if doing global replacement - that + combination doesn't make any sense. + +b. When running in `word expansion only' mode (--wordexp option), inhibit + process substitution. + +c. Loadable builtins now work on MacOS X 10.[34]. + +d. Shells running in posix mode no longer set $HOME, as POSIX requires. + +e. The code that checks for binary files being executed as shell scripts now + checks only for NUL rather than any non-printing character. + +f. Quoting the string argument to the [[ command's =~ operator now forces + string matching, as with the other pattern-matching operators. + +4. New Features in Readline + +a. Calling applications can now set the keyboard timeout to 0, allowing + poll-like behavior. + +b. The value of SYS_INPUTRC (configurable at compilation time) is now used as + the default last-ditch startup file. + +c. The history file reading functions now allow windows-like \r\n line + terminators. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-release, +and the previous version, bash-3.1-rc2. + +1. Changes to Readline + +a. Several changes to the multibyte redisplay code to fix problems with + prompts containing invisible characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-rc2, +and the previous version, bash-3.1-rc1. + +1. Changes to Bash + +a. Fixed a bug that caused a DEBUG trap to overwrite a command string that's + eventually attached to a background job. + +b. Changed some code so that filenames with leading tildes with spaces in the + name aren't tilde-expanded by the bash completion code. + +c. Fixed a bug that caused the pushd builtin to fail to change to + directories with leading `-'. + +d. Fixed a small memory leak in the programmable completion code. + +2. Changes to Readline + +a. Fixed a redisplay bug caused by moving the cursor vertically to a line + with invisible characters in the prompt in a multibyte locale. + +b. Fixed a bug that could cause the terminal special chars to be bound in the + wrong keymap in vi mode. + +3. New Features in Bash + +a. If compiled for strict POSIX conformance, LINES and COLUMNS may now + override the true terminal size. + +4. New Features in Readline + +a. A new external application-controllable variable that allows the LINES + and COLUMNS environment variables to set the window size regardless of + what the kernel returns. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-rc1, +and the previous version, bash-3.1-beta1. + +1. Changes to Bash + +a. Fixed a bug that could cause core dumps due to accessing the current + pipeline while in the middle of modifying it. + +b. Fixed a bug that caused pathnames with backslashes still quoting characters + to be passed to opendir(). + +c. Command word completion now obeys the setting of completion-ignore-case. + +d. Fixed a problem with redirection that caused file descriptors greater than + 2 to be inappropriately marked as close-on-exec. + +e. In Posix mode, after `wait' is called to wait for a particular process + explicitly, that process is removed from the list of processes known to + the shell, and subsequent attempts to wait for it return errors. + +f. Fixed a bug that caused extended pattern matching to incorrectly scan + backslash-escaped pattern characters. + +g. Fixed a synchronization problem that could cause core dumps when handling + a SIGWINCH. + +h. Fixed a bug that caused an unmatched backquote to be accepted without an + error when processing here documents. + +i. Fixed a small memory leak in the `cd' builtin. + +j. Fix for MacOS X so it gets the values for the HOSTTYPE, MACHTYPE, and + OSTYPE variables at build time, to support universal binaries. + +k. Fixed a bug that could cause an exit trap to return the exit status of + the trap command rather than the status as it was before the trap was + run as the shell's exit status. + +2. New Features in Bash + +3. Changes to Readline + +a. Fixed a bug that caused reversing the incremental search direction to + not work correctly. + +b. Fixed the vi-mode `U' command to only undo up to the first time insert mode + was entered, as Posix specifies. + +c. Fixed a bug in the vi-mode `r' command that left the cursor in the wrong + place. + +4. New Features in Readline + +a. New application-callable auxiliary function, rl_variable_value, returns + a string corresponding to a readline variable's value. + +b. When parsing inputrc files and variable binding commands, the parser + strips trailing whitespace from values assigned to boolean variables + before checking them. + + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-beta1, +and the previous version, bash-3.1-alpha1. + +1. Changes to Bash + +a. Added some system-specific signal names. + +b. Fixed a typo in the ulimit builtin to make `x' the right option to + maniuplate the limit on file locks. + +c. Fixed a problem with using += to append to index 0 of an array variable + when not using subscript syntax. + +d. A few changes to configure.in to remove calls to obsolete or outdated + macros. + +e. Make sure changes to variables bash handles specially (e.g., LC_ALL) are + made when the variable is set in the temporary environment to a command. + +f. Make sure changes to variables bash handles specially (e.g., LC_ALL) are + made when the variable is modified using `printf -v'. + +g. The export environment is now remade on cygwin when HOME is changed, so + DLLs bash is linked against pick up the new value. This fixes problems + with tilde expansion when linking against and already-installed readline. + +h. Small fix to the logic for performing tilde expansion in posix mode, so + expansion on the right-hand side of an assignment statement takes place. + +i. Fixed a bug that prevented redirections associated with a shell function + from being executed when in a subshell. + +j. Fixed `source' and `.' builtins to not require an executable file when + searching $PATH for a file to source. + +k. Fixed a bug that caused incorrect word splitting in a function when IFS + was declared local, then unset. + +l. Fixed a problem with the `kill' builtin that prevented sending signals + to a process group under certain circumstances when providing a pid < 0. + +m. When in POSIX mode, `pwd' now checks that the value it prints is the same + directory as `.', even when displaying $PWD. + +n. Fixed a problem with the `read' builtin when reading a script from standard + input and reading data from the same file. + +o. Fixed a problem with the `type' and `command' builtins that caused absolute + pathnames to be displayed incorrectly. + +p. Some changes to the `bg' builtin for POSIX conformance. + +q. The `fc' builtin now removes the `fc' command that caused it to invoke an + editor on specified history entries from the history entirely, rather than + simply ignoring it. + +r. When in POSIX mode, the `v' command in vi editing mode simply invokes vi + on the current command, rather than checking $FCEDIT and $EDITOR. + +s. Fixed a small memory leak in the pathname canonicalization code. + +t. Fixed a bug that caused the expanded value of a $'...' string to be + incorrectly re-quoted if it occurred within a double-quoted ${...} + parameter expansion. + +u. Restored default emacs-mode key binding of M-TAB to dynamic-complete-history. + +v. Fixed a bug that caused core dumps when interrupting loops running builtins + on some systems. + +w. Make sure that some of the functions bash provides replacements for are + not cpp defines. + +x. The code that scans embedded commands for the parser (`...` and $(...)) is + now more aware of embedded comments and their effect on quoted strings. + +y. Changed the `-n' option to the `history' builtin to not reset the number of + history lines read in the current session after reading the new lines from + the history file if the history is being appended when it is written to + the file, since the appending takes care of the problem that the adjustment + was intended to solve. + +z. Improved the error message displayed when a shell script fails to execute + because the environment and size of command line arguments are too large. + +aa. A small fix to make sure that $HISTCMD is evaluated whenever the shell is + saving commands to the history list, not just when HISTSIZE is defined. + +2. Changes to Readline + +a. The `change-case' command now correctly changes the case of multibyte + characters. + +b. Changes to the shared library construction scripts to deal with Windows + DLL naming conventions for Cygwin. + +c. Fixed the redisplay code to avoid core dumps resulting from a poorly-timed + SIGWINCH. + +d. Fixed the non-incremental search code in vi mode to dispose of any current + undo list when copying a line from the history into the current editing + buffer. + +e. The variable assignment code now ignores whitespace at the end of lines + when assigning to boolean variables. + +f. The `C-w' binding in incremental search now understands multibyte + characters. + +3. New Features in Bash + +a. A new configuration option, `--enable-strict-posix-default', which will + build bash to be POSIX conforming by default. + +4. New Features in Readline + +a. If the rl_completion_query_items is set to a value < 0, readline never + asks the user whether or not to view the possible completions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-alpha1, +and the previous version, bash-3.0-release. + +1. Changes to Bash + +a. Fixed a bug that caused bash to crash if referencing an unset local array. + +b. Fixed a problem that caused tilde expansion to not be performed before + attempting globbing word completion. + +c. Fixed an incompatibility so that a first argument to trap that's a valid + signal number will be trated as a signal rather than a command to execute. + +d. Fixed ${#word} expansion to correctly compute the length of a string + containing multibyte characters. + +e. Fixed a bug that caused bash to not pass the correct flags for signal + disposition to child processes. + +f. Fixed a bug that caused `fc -l' to list one too many history entries. + +g. Some fixes to `fc' for POSIX conformance. + +h. Some fixes to job status display for POSIX conformance. + +i. Fixed a bug that caused `command -v' to display output if a command was not + found -- it should be silent. + +j. In POSIX mode, `type' and `command -[vV]' do not report non-executable + files, even if the shell will attempt to execute them. + +k. Fixed a bug that caused the `==' operator to the [[ command to not attempt + extended pattern matching. + +l. Fixed the brace expansion code to handle characters whose value exceeds 128. + +m. Fixed `printf' to handle strings with a leading `\0' whose length is + non-zero. + +n. Fixed a couple of problems with brace expansion where `${' was handled + incorrectly. + +o. Fixed off-by-one error when calculating the upper bound of `offset' when + processing the ${array[@]:offset:length} expansion. + +p. System-specific configuration changes for: FreeBSD 5.x, Interix, MacOS X + 10.4, Linux 2.4+ kernels, Linux 3.x kernels, Dragonfly BSD, QNX 6.x, + Cygwin + +q. Fixed a bug that caused the shell to ignore the status of the rightmost + command in a pipeline when the `pipefail' option was enabled. + +r. Fixed a completion bug that caused core dumps when expanding a directory + name. + +s. Fixed a bug that prevented `hash -d' from removing commands from the hash + table. + +t. Fixed word splitting to avoid really bad quadratic performance when + expanding long lists. + +u. Fixed a bug that caused negative offsets in substring expansion to use the + wrong values. + +v. Fixed a bug in printf that caused it to not return failure on write errors. + +w. Fixed a bug that caused commands in subshells to not be properly timed. + +x. The shell parser no longer attempts to parse a compound assignment specially + unless in a position where an assignment statement is acceptable or parsing + arguments to a builtin that accepts assignment statements. + +y. Fixed a problem that caused a `case' statement to be added to the history + incorrectly as a single command if the `case word' was on one line and the + `in' on another. + +z. Fixed a problem that caused internal shell quoting characters to be + incorrectly quoted with backslashes under some circumstances. + +aa. The shell now performs correct word splitting when IFS contains multibyte + characters. + +bb. The mail checking code now resets the cached file information if the size + drops to 0, even if the times don't change. + +cc. A completed command name that is found in $PATH as well as the name of a + directory in the current directory no longer has a slash appended in certain + circumstances: a single instance found in $PATH when `.' is not in $PATH, + and multiple instances found in $PATH, even when `.' is in $PATH. + +dd. Incorporated tilde expansion into the word expansion code rather than as a + separately-called function, fixing some cases where it was performed + inappropriately (e.g., after the second `=' in an assignment statement or + in a double-quoted parameter expansion). + +ee. Fixed several bugs encountered when parsing compound assignment statements, + so that compound assignments appearing as arguments to builtins are no + longer double-expanded. + +ff. Fixed a bug in the command execution code that caused asynchronous commands + containing command substitutions to not put the terminal in the wrong + process group. + +gg. Bash now handles the case where the WCONTINUED flag causes waitpid() to + return -1/EINVAL at runtime as well as configuration time. + +hh. Fixed parser to generate an error when the pipeline `argument' to `!' or + `time' is NULL. + +ii. The shell now takes a little more care when manipulating file descriptors + greater than 9 with the `exec' builtin. + +jj. Fixed a bug that caused variable assignments preceding the `command' builtin + preceding a special builtin to be preserved after the command completed in + POSIX mode. + +kk. Fixed a bug that allowed variables beginning with a digit to be created. + +ll. Fixed a bug that caused a \<newline> to be removed when parsing a $'...' + construct. + +mm. A shell whose name begins with `-' will now be a restricted shell if the + remainder of the name indicates it should be restricted. + +nn. Fixed a bug that could cause a core dump if FUNCNAME were changed or unset + during a function's execution. + +oo. Fixed a bug that caused executing a `return' in a function to not execute + a RETURN trap. The RETURN trap is inherited by shell functions only if + function tracing is globally enabled or has been enabled for that function. + +pp. Fixed cases where var[@] was not handled exactly like var, when var is a + scalar variable. + +qq. Fixed a bug that caused the first character after a SIGINT to be discarded + under certain circumstances. + +rr. Fixed exit status code so that a suspended job returns 128+signal as its + exit status (preventing commands after it in `&&' lists from being + executed). + +ss. Fixed a bug that caused the shell parser state to be changed by executing + a shell function as a result of word completion. + +tt. Fixed a long-standing bug that caused '\177' characters in variable + values to be discarded when expanded in double-quoted strings. + +uu. Fixed a bug that caused $RANDOM to be re-seeded multiple times in a + subshell environment. + +vv. Extensive changes to the job management code to avoid the pid-reuse and + pid-aliasing problems caused by retaining the exit status of too many jobs, + but still retain as many background job statuses as POSIX requires. + +ww. Fixed a parser bug in processing \<newline> that caused things like + + ((echo 5) \ + (echo 6)) + + to not work correctly. + +xx. `pwd -P' now sets $PWD to a directory name containing no symbolic links + when in posix mode, as POSIX requires. + +yy. In posix mode, bash no longer sets $PWD to a name containing no symbolic + links if a directory is chosen from $CDPATH. + +zz. The word splitting code now treats an IFS character that is not space, + tab, or newline and any adjacent IFS white space as a single delimiter, as + SUSv3/XPG6 require. + +aaa. The `read' builtin now checks whether or not the number of fields read is + exactly the same as the number of variables instead of just assigning the + rest of the line (minus any trailing IFS white space) to the last + variable. This is what POSIX/SUS/XPG all require. + +bbb. Fixed a bug that caused `read' to always check whether or not fd 0 was a + pipe, even when reading from another file descriptor. + +ccc. Fixed a bug that caused short-circuiting of execution even if the return + value was being inverted. + +ddd. Fixed a bug that caused a core dump while decoding \W escapes in PS1 if + PWD was unset. + +eee. Fixed a bug in `read' that counted internal quoting characters for the + purposes of `read -n'. + +fff. Fixed a bug so that a function definition in a pipeline causes a child + process to be forked at the right time. + +ggg. Bash will not attempt to link against a readline library that doesn't + have rl_gnu_readline_p == 1. + +hhh. Fixed a bug that caused `read' to consume one too many characters when + reading a fixed number of characters and the Nth character is a backslash. + +iii. Fixed a bug that caused `unset' on variables in the temporary environment + to leave them set when `unset' completed. + +jjj. Fixed a bug that caused bash to close fd 2 if an `exec' failed and the + shell didn't exit. + +kkk. The completion code is more careful to not turn `/' or `///' into `//', + for those systems on which `//' has special meaning. + +lll. Fixed a bug that caused command substitution in asynchronous commands to + close the wrong file descriptors. + +mmm. The shell no longer prints status messages about terminated background + processes unless job control is active. + +nnn. Fixed a bug that prevented multiple consecutive invocations of `history -s' + from adding all the commands to the history list. + +ooo. Added a couple of changes to make arithmetic expansion more consistent in + all its contexts (still not perfect). + +ppp. Fixed a bug that caused the parser to occasionally not find the right + terminating "`" in an old-style command substitution. + +qqq. Fixed a bug that caused core dumps when the shell was reading its non- + interactive input from fd 0 and fd 0 was duplicated and restored using a + combination of `exec' (to save) and redirection (to restore). + +rrr. Fixed a problem that caused loops in sourced scripts to not be cleaned + up properly when a `return' is executed. + +sss. Change internal command substitution completion function to append a slash + to directory names in the command. + +2. Changes to Readline + +a. Fixed a bug that caused multiliine prompts to be wrapped and displayed + incorrectly. + +b. Fixed a bug that caused ^P/^N in emacs mode to fail to display the current + line correctly. + +c. Fixed a problem in computing the number of invisible characters on the first + line of a prompt whose length exceeds the screen width. + +d. Fixed vi-mode searching so that failure preserves the current line rather + than the last line in the history list. + +e. Fixed the vi-mode `~' command (change-case) to have the correct behavior at + end-of-line when manipulating multibyte characters. + +f. Fixed the vi-mode `r' command (change-char) to have the correct behavior at + end-of-line when manipulating multibyte characters. + +g. Fixed multiple bugs in the redisplay of multibyte characters: displaying + prompts longer than the screen width containing multibyte characters, + +h. Fix the calculation of the number of physical characters in the prompt + string when it contains multibyte characters. + +i. A non-zero value for the `rl_complete_suppress_append' variable now causes + no `/' to be appended to a directory name. + +j. Fixed forward-word and backward-word to work when words contained + multibyte characters. + +k. Fixed a bug in finding the delimiter of a `?' substring when performing + history expansion in a locale that supports multibyte characters. + +l. Fixed a memory leak caused by not freeing the timestamp in a history entry. + +m. Fixed a bug that caused "\M-x" style key bindings to not obey the setting + of the `convert-meta' variable. + +n. Fixed saving and restoring primary prompt when prompting for incremental + and non-incremental searches; search prompts now display multibyte + characters correctly. + +o. Fixed a bug that caused keys originally bound to self-insert but shadowed + by a multi-character key sequence to not be inserted. + +p. Fixed code so rl_prep_term_function and rl_deprep_term_function aren't + dereferenced if NULL (matching the documentation). + +q. Extensive changes to readline to add enough state so that commands + requiring additional characters (searches, multi-key sequences, numeric + arguments, commands requiring an additional specifier character like + vi-mode change-char, etc.) work without synchronously waiting for + additional input. + +r. Lots of changes so readline builds and runs on MinGW. + +s. Readline no longer tries to modify the terminal settings when running in + callback mode. + +t. The Readline display code no longer sets the location of the last invisible + character in the prompt if the \[\] sequence is empty. + +3. New Features in Bash + +a. Bash now understands LC_TIME as a special variable so that time display + tracks the current locale. + +b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created + as `invisible' variables and may not be unset. + +c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't + try to interpret any options at all, as POSIX requires. + +d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify. + +e. Fixed vi-mode word completion and glob expansion to perform tilde + expansion. + +f. The `**' mathematic exponentiation operator is now right-associative. + +g. The `ulimit' builtin has new options: -i (max number of pending signals), + -q (max size of POSIX message queues), and -x (max number of file locks). + +h. A bare `%' once again expands to the current job when used as a job + specifier. + +i. The `+=' assignment operator (append to the value of a string or array) is + now supported for assignment statements and arguments to builtin commands + that accept assignment statements. + +j. BASH_COMMAND now preserves its value when a DEBUG trap is executed. + +k. The `gnu_errfmt' option is enabled automatically if the shell is running + in an emacs terminal window. + +l. New configuration option: --single-help-strings. Causes long help text + to be written as a single string; intended to ease translation. + +m. The COMP_WORDBREAKS variable now causes the list of word break characters + to be emptied when the variable is unset. + +n. An unquoted expansion of $* when $IFS is empty now causes the positional + parameters to be concatenated if the expansion doesn't undergo word + splitting. + +o. Bash now inherits $_ from the environment if it appears there at startup. + +p. New shell option: nocasematch. If non-zero, shell pattern matching ignores + case when used by `case' and `[[' commands. + +q. The `printf' builtin takes a new option: -v var. That causes the output + to be placed into var instead of on stdout. + +r. By default, the shell no longer reports processes dying from SIGPIPE. + +s. Bash now sets the extern variable `environ' to the export environment it + creates, so C library functions that call getenv() (and can't use the + shell-provided replacement) get current values of environment variables. + +4. New Features in Readline + +a. The key sequence sent by the keypad `delete' key is now automatically + bound to delete-char. + +b. A negative argument to menu-complete now cycles backward through the + completion list. + +c. A new bindable readline variable: bind-tty-special-chars. If non-zero, + readline will bind the terminal special characters to their readline + equivalents when it's called (on by default). + +d. New bindable command: vi-rubout. Saves deleted text for possible + reinsertion, as with any vi-mode `text modification' command; `X' is bound + to this in vi command mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-release, +and the previous version, bash-3.0-rc1. + +1. Changes to Bash + +a. Fixed a boundary overrun that could cause segmentation faults when the + completion code hands an incomplete construct to the word expansion + functions. + +b. Changed posix mode behavior so that an error in a variable assignment + preceding a special builtin causes a non-interactive shell to exit. + +c. Change the directory expansion portion of the completion code to not + expand embedded command substitutions if the directory name appears in + the file system. + +d. Fixed a problem that caused `bash -r' to turn on restrictions before + reading the startup files. + +e. Fixed a problem with the default operation of the `umask' builtin. + +2. Changes to Readline + +a. Fixed a problem with readline saving the contents of the current line + before beginning a non-interactive search. + +b. Fixed a problem with EOF detection when using rl_event_hook. + +c. Fixed a problem with the vi mode `p' and `P' commands ignoring numeric + arguments. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-rc1, +and the previous version, bash-3.0-beta1. + +1. Changes to Bash + +a. Fixed a bug that caused incorrect behavior when referecing element 0 of + an array using $array, element 0 was unset, and `set -u' was enabled. + +b. System-specific changes for: SCO Unix 3.2, Tandem. + +c. Fixed a bug that caused inappropriate word splitting when a variable was + expanded within a double-quoted string that also included $@. + +d. Fixed a bug that caused `pwd' to not display anything in physical mode + when the file system had changed underneath the shell. + +e. Fixed a bug in the pre- and post- increment and decrement parsing in the + expression evaluator that caused errors when the operands and corresponding + operators were separated by whitespace. + +f. Fixed a bug that caused `history -p' to add an entry to the history list, + counter to the documentation. (Keeps the history expansions invoked by + emacs-mode command line editing from doing that as well.) + +g. Fixed a bug that could cause a core dump if `cd' is asked to print out a + pathname longer than PATH_MAX characters. + +h. Fixed a bug that caused jobs to be put into the wrong process group under + some circumstances after enabling job control with `set -m'. + +i. `unalias' now returns failure if no alias name arguments are supplied. + +j. Documented the characters not allowed to appear in an alias name. + +k. $* is no longer expanded as if in double quotes when it appears in the + body of a here document, as the SUS seems to require. + +l. The `bashbug' script now uses a directory in $TMPDIR for exclusive + access rather than trying to guess how the underlying OS provides for + secure temporary file creation. + +m. Fixed a few problems with `cd' and `pwd' when asked to operate on pathnames + longer than PATH_MAX characters. + +n. Fixed a memory leak caused when creating multiple local array variables + with identical names. + +o. Fixed a problem with calls to getcwd() so that bash now operates better + when the full pathname to the current directory is longer than PATH_MAX + bytes. + +p. The `trap' builtin now reports an error if a single non-signal argument + is specified. + +q. Fixed a bug that caused `umask' to not work correctly when presented + with a mask of all 0s. + +r. When `getopts' reaches the end of options, OPTARG is unset, as POSIX + appears to specify. + +s. Interactive mode now depends on whether or not stdin and stderr are + connected to a tty; formerly it was stdin and stdout. POSIX requires + this. + +t. Fixed vi-mode completion to work more as POSIX specifies (e.g., doing the + right kind of filename generation). + +2. Changes to Readline + +a. Fixed a problem that could cause readline to refer to freed memory when + moving between history lines while doing searches. + +b. Improvements to the code that expands and displays prompt strings + containing multibyte characters. + +c. Fixed a problem with vi-mode not correctly remembering the numeric argument + to the last `c'hange command for later use with `.'. + +d. Fixed a bug in vi-mode that caused multi-digit count arguments to work + incorrectly. + +e. Fixed a problem in vi-mode that caused the last text modification command + to not be remembered across different command lines. + +f. Fixed problems with changing characters and changing case at the end of + the line. + +3. New Features in Bash + +a. The `jobs', `kill', and `wait' builtins now accept job control notation + even if job control is not enabled. + +b. The historical behavior of `trap' that allows a missing `action' argument + to cause each specified signal's handling to be reset to its default is + now only supported when `trap' is given a single non-option argument. + +4. New Features in Readline + +a. When listing completions, directories have a `/' appended if the + `mark-directories' option has been enabled. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-beta1, +and the previous version, bash-3.0-alpha. + +1. Changes to Bash + +a. Fixes to build correctly when arrays are not compiled into the shell. + +b. Fixed command substitution to run any exit trap defined in the command + substitution before returning; the exit trap is not inherited from the + calling shell. + +c. Fixes to process group synchronization code so that every child process + attempts to set the terminal's process group; fixes some synchronization + problems on Linux kernels that schedule the child to always run before + the parent. + +d. Fixed processing of octal and hex constants in printf builtin for POSIX.2 + compliance. + +e. Fixed a couple of core dumps in the pattern removal code. + +f. Fixes to the array subrange extraction code to deal better with sparse + arrays. + +g. Parser errors and other errors that result in the shell exiting now cause + the exit trap to be run. + +h. Change the command substitution completion functions to not append any + closing quote, because it would be inserted a closing "`" or ")". + +i. Fix history initialization so assignments to $histchars made in startup + files are honored. + +j. If an exit trap does not contain a call to `exit', the shell now uses + the exit status of the last command executed before the trap as the exit + status of the shell. + +k. The parser now prompts with $PS2 if it reads a newline while parsing a + compound array assignment statement. + +l. When performing a compound array assignment, the parser doesn't treat + words of the form [index]=value as assignments if they're the result of + expansions. + +m. Fixed a bug that caused `return' executed in a trap command to make the + shell think it was still running the trap. + +n. Fixed the value of errno set by the pathname canonicalization functions. + +o. Changed the grammar so that `time' alone on a line times a null command + rather than being a syntax error. + +p. The pattern substitution code no longer performs quote removal on the + pattern before trying to match it, as the pattern removal functions do. + +q. Fixed a bug that could cause core dumps when checking whether a quoted + command name was being completed. + +r. Fixes to the pattern removal and pattern replacement expansions to deal + with multibyte characters better (and faster). + +s. Fix to the substring expansion (${param:off[:len]}) to deal with (possibly + multibyte) characters instead of raw bytes. + +t. Fixed a bug that caused some key bindings set in an inputrc to be ignored + at shell startup. + +u. Fixed a bug that caused unsetting a local variable within a function to + not work correctly. + +v. Fixed a bug that caused invalid variables to be created when using + `read -a'. + +w. Fixed a bug that caused "$@" to expand incorrectly when used as the right + hand side of a parameter expansion such as ${word:="$@"} if the first + character of $IFS was not a space. + +x. Fixed a slight cosmetic problem when printing commands containing a + `>&word' redirection. + +y. Fixed a problem that could cause here documents to not be created correctly + if the system temporary directory did not allow writing. + +2. Changes to Readline + +a. Change to history expansion functions to treat `^' as equivalent to word + one, as the documention states. + +b. Some changes to the display code to improve display and redisplay of + multibyte characters. + +c. Changes to speed up the multibyte character redisplay code. + +d. Fixed a bug in the vi-mode `E' command that caused it to skip over the + last character of a word if invoked while point was on the word's + next-to-last character. + +e. Fixed a bug that could cause incorrect filename quoting when + case-insensitive completion was enabled and the word being completed + contained backslashes quoting word break characters. + +f. Fixed a bug in redisplay triggered when the prompt string contains + invisible characters. + +g. Fixed some display (and other) bugs encountered in multibyte locales + when a non-ascii character was the last character on a line. + +h. Fixed some display bugs caused by multibyte characters in prompt strings. + +i. Fixed a problem with history expansion caused by non-whitespace characters + used as history word delimiters. + +3. New Features in Bash + +a. printf builtin understands two new escape sequences: \" and \?. + +b. `echo -e' understands two new escape sequences: \" and \?. + +c. The GNU `gettext' package and libintl have been integrated; the shell's + messages can be translated into different languages. + +d. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'. + +e. The error message printed when bash cannot open a shell script supplied + as argument 1 now includes the name of the shell, to better identify + the error as coming from bash. + +4. New Features in Readline + +a. New application variable, rl_completion_quote_character, set to any + quote character readline finds before it calls the application completion + function. + +b. New application variable, rl_completion_suppress_quote, settable by an + application completion function. If set to non-zero, readline does not + attempt to append a closing quote to a completed word. + +c. New application variable, rl_completion_found_quote, set to a non-zero + value if readline determines that the word to be completed is quoted. + Set before readline calls any application completion function. + +d. New function hook, rl_completion_word_break_hook, called when readline + needs to break a line into words when completion is attempted. Allows + the word break characters to vary based on position in the line. + +e. New bindable command: unix-filename-rubout. Does the same thing as + unix-word-rubout, but adds `/' to the set of word delimiters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.0-alpha, +and the previous version, bash-2.05b-release. + +1. Changes to Bash + +a. Fixes so that the shell will compile without some of the default options + defined. + +b. Fixed an error message that did not pass enough arguments to printf. + +c. Fixed a bug that caused input redirection to a builtin inside a script + being read from standard input to result in the rest of the already- + read and buffered script to be discarded. + +d. Fixed a bug that caused subshell initialization to close the file + descriptor from which the shell was reading a script under certain + circumstances. + +e. Fixed a bug that caused the shell to not advance a string pointer over + a null wide character when doing string operations. + +f. Fixed the internal logout code so that shells that time out waiting for + input (using $TMOUT) run ~/.bash_logout. + +g. Portability and configuration changes for: cygwin, HP/UX, GNU/FreeBSD. + +h. The parser no longer adds implicit double quotes to ((...)) arithmetic + commands. + +i. The ((...)) arithmetic command evaluation code was fixed to not dump core + when the expanded string is null. + +j. The ((...)) arithmetic command evaluation code was fixed to not perform + variable assignments while expanding the expression. + +k. Fixed a bug that caused word splitting to be performed incorrectly when + IFS is set, but null. + +l. Fixed a bug in brace expansion that caused a quoted `$' preceding an + open brace to inhibit brace expansion. + +m. Fixed a bug that caused a leading `-' in the shell's name to cause it to + not be recognized as a restricted shell. + +n. Fixed a bug in the arithmetic evaluation code that could cause longjmps + to an invalid location and result in a core dump. + +o. Fixed a bug in the calculation of how many history lines are new in a + single shell session when reading new history lines from a file with + `history -n'. + +p. Fixed a bug in pathname canonicalization that caused the shell to dump + core when presented with a pathname longer than PATH_MAX. + +q. Fixed the parser so that it doesn't try to compare a char variable to + EOF, which fails when chars are unsigned. + +r. Fixed a bug in the simple command execution code that caused occasional + core dumps. + +s. The shell does a better job of saving any partial parsing state during + operations which cause a command to be executed while a line is being + entered and parsed. + +t. The completion code now splits words more like the expansion code when + $IFS is used to split. + +u. The locale code does a better job of recomputing the various locale + variable values when LC_ALL is unset. + +v. The programmable completion code does a better job of dequoting expanded + word lists before comparing them against the word to be matched. + +w. The shell no longer seg faults if the expanded value of $PS4 is null + and `set -x' is enabled. + +x. Fixed a bug that caused core dumps when a here string expanded to NULL. + +y. The mail checking code now makes sure the mailbox is bigger before + reporting the existence of new mail. + +z. The parser does not try to expand $'...' and $"..." when the appear + within double quotes unless the `extquote' option has been enabled with + `shopt'. For backwards compatibility, it is enabled by default. + +aa. Fixed a bug that caused `for x; do ...' and `select x; do ... to use + $@ instead of "$@" for the implicit list of arguments. + +bb. Fixed a bug that caused a subshell of a restricted shell (e.g., one + spawned to execute a pipeline) to not exit immediately if attempting + to use a command containing a slash. + +cc. Fixed a problem with empty replacements for a pattern that doesn't match + when performing ${param/word/} expansion. + +dd. Word expansions performed while expanding redirections no longer search + a command's temporary environment to expand variable values. + +ee. Improvements to the alias expansion code when expanding subsequent words + because an aliase's value ends with a space. + +ff. `cd -' now prints the current working directory after a successful chdir + even when the shell is not interactive, as the standard requires. + +gg. The shell does a better job of ensuring a child process dies of SIGINT + before resending SIGINT to itself. + +hh. The arithmetic expansion variable assignment code now does the right + thing when assigning to `special' variables like OPTIND. + +ii. When history expansion verification is enabled, the bash readline helper + functions that do history expansion on the current line don't print + the results. + +jj. Fixed bugs with multiple consecutive alias expansion when one of the + expansions ends with a space. + +kk. Fixed a problem in the programmable completion code that could cause core + dumps when trying to initialize a set of possible completions from a + list of variables. + +ll. The \[ and \] escape characters are now ignored when decoding the prompt + string if the shell is started with editing disabled. + +mm. Fixed a bug that could leave extra characters in a string when doing + quoted null character removal. + +nn. Command substitution and other subshell operations no longer reset the + line number (aids the bash debugger). + +oo. Better line number management when executing simple commands, conditional + commands, for commands, and select commands. + +pp. The globbing code now uses malloc, with its better failure properties, + rather than alloca(). + +qq. Fixed a bug that caused expansions like #{a[2]:=value} to create the + appropriate array element instead of a variable named `a[2]'. + +rr. Fixed a bug in the handling of a `?(...)' pattern immediately following + a `*' when extglob is enabled. + +ss. Fixed a bug that caused a `return' invoked in an exit trap when exit is + invoked in a function to misbehave. + +tt. Fixed a bug that caused CTLESC and CTLNUL characters to not be escaped + by the internal shell string quoting functions. + +uu. Fixed a bug that caused quoted null characters in an expanded word list + to be inappropriately assigned to an array variable when using `read -a'. + +vv. Fixed a bug that caused redirections accompanying a null command to persist + in the current shell. + +ww. Fixed a bug that caused the prompt to be printed when the shell was + expanding a multiline alias. + +xx. Fixed a bug that resulted in core dumps when the completion for a command + changed the compspec. + +yy. Fixed a bug that caused evaluation of programmable completions to print + notifications of completed jobs. + +zz. Bash now disables line editing when $EMACS == `t' and $TERM == `dumb' + (which is what emacs shell windows do). + +aaa. In posix mode, `kill -l' causes signal names to be displayed without + a leading `SIG'. + +bbb. Clear error flag on standard output so it doesn't persist across multiple + builtin commands. + +ccc. In posix mode, `alias' displays alias values without the leading `alias', + so the output cannot be used as subsequent input. + +ddd. In posix mode, the `trap' builtin doesn't check whether or not its + first argument is a signal specification and revert the signal handling + to its original disposition if it is. + +eee. Fixed several bugs in the handling of "$*" and "${array[*]}" by the + pattern substitution and removal expansions. + +fff. Fixed several problems with the handling of ${array[@]}, ${array[*]}, + $@, and $* by the indirect variable expansion code. + +ggg. Fixed a bug that did not allow `time' to be aliased. + +hhh. Improved the mail checking code so it won't check (and possibly cause an + NFS file system mount) until MAILPATH or MAIL is given a value -- there + is no default if DEFAULT_MAIL_DIRECTORY is not defined at compile time. + (It is computed by configure, but can be #undef'd in config-bot.h.) + +iii. If the `chkwinsize' option is enabled, the shell checks for window size + changes if a child process exits due to a signal. + +jjj. Removed the attempts to avoid adding a slash at the end of a completed + executable name if there was a directory with the same name in the + current directory. + +kkk. Fixed PATH lookup code so it treats the permission bits separately for + owner, group, and other, rather than checking them all. + +lll. Fixed the locale code to reset the parser's idea of the character class + <blank>, which controls how it splits tokens, when the locale changes. + +mmm. The shell now binds its special readline functions and key bindings only + if the user's inputrc file has not already bound them. + +nnn. The shell now reports on processes that dump core due to signals when + invoked as `-c command'. + +2. Changes to Readline + +a. Fixes to avoid core dumps because of null pointer references in the + multibyte character code. + +b. Fix to avoid infinite recursion caused by certain key combinations. + +c. Fixed a bug that caused the vi-mode `last command' to be set incorrectly. + +d. Readline no longer tries to read ahead more than one line of input, even + when more is available. + +e. Fixed the code that adjusts the point to not mishandle null wide + characters. + +f. Fixed a bug in the history expansion `g' modifier that caused it to skip + every other match. + +g. Fixed a bug that caused the prompt to overwrite previous output when the + output doesn't contain a newline and the locale supports multibyte + characters. This same change fixes the problem of readline redisplay + slowing down dramatically as the line gets longer in multibyte locales. + +h. History traversal with arrow keys in vi insertion mode causes the cursor + to be placed at the end of the new line, like in emacs mode. + +i. The locale initialization code does a better job of using the right + precedence and defaulting when checking the appropriate environment + variables. + +j. Fixed the history word tokenizer to handle <( and >( better when used as + part of bash. + +k. The overwrite mode code received several bug fixes to improve undo. + +l. Many speedups to the multibyte character redisplay code. + +m. The callback character reading interface should not hang waiting to read + keyboard input. + +n. Fixed a bug with redoing vi-mode `s' command. + +o. The code that initializes the terminal tracks changes made to the terminal + special characters with stty(1) (or equivalent), so that these changes + are reflected in the readline bindings. New application-callable function + to make it work: rl_tty_unset_default_bindings(). + +p. Fixed a bug that could cause garbage to be inserted in the buffer when + changing character case in vi mode when using a multibyte locale. + +q. Fixed a bug in the redisplay code that caused problems on systems + supporting multibyte characters when moving between history lines when the + new line has more glyphs but fewer bytes. + +r. Undo and redo now work better after exiting vi insertion mode. + +s. Make sure system calls are restarted after a SIGWINCH is received using + SA_RESTART. + +t. Improvements to the code that displays possible completions when using + multibyte characters. + +u. Fixed a problem when parsing nested if statements in inputrc files. + +v. The completer now takes multibyte characters into account when looking for + quoted substrings on which to perform completion. + +w. The history search functions now perform better bounds checking on the + history list. + +3. New Features in Bash + +a. ANSI string expansion now implements the \x{hexdigits} escape. + +b. There is a new loadable `strftime' builtin. + +c. New variable, COMP_WORDBREAKS, which controls the readline completer's + idea of word break characters. + +d. The `type' builtin no longer reports on aliases unless alias expansion + will actually be performed. + +e. HISTCONTROL is now a colon-separated list of values, which permits + more extensibility and backwards compatibility. + +f. HISTCONTROL may now include the `erasedups' option, which causes all lines + matching a line being added to be removed from the history list. + +g. `configure' has a new `--enable-multibyte' argument that permits multibyte + character support to be disabled even on systems that support it. + +h. New variables to support the bash debugger: BASH_ARGC, BASH_ARGV, + BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING, + BASH_COMMAND + +i. FUNCNAME has been changed to support the debugger: it's now an array + variable. + +j. for, case, select, arithmetic commands now keep line number information + for the debugger. + +k. There is a new `RETURN' trap executed when a function or sourced script + returns (not inherited child processes; inherited by command substitution + if function tracing is enabled and the debugger is active). + +l. New invocation option: --debugger. Enables debugging and turns on new + `extdebug' shell option. + +m. New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR + traps, respectively, to be inherited by shell functions. Equivalent to + `set -T' and `set -E' respectively. The `functrace' option also controls + whether or not the DEBUG trap is inherited by sourced scripts. + +n. The DEBUG trap is run before binding the variable and running the action + list in a `for' command, binding the selection variable and running the + query in a `select' command, and before attempting a match in a `case' + command. + +o. New `--enable-debugger' option to `configure' to compile in the debugger + support code. + +p. `declare -F' now prints out extra line number and source file information + if the `extdebug' option is set. + +q. If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes + the next command to be skipped, and a return value of 2 while in a + function or sourced script forces a `return'. + +r. New `caller' builtin to provide a call stack for the bash debugger. + +s. The DEBUG trap is run just before the first command in a function body is + executed, for the debugger. + +t. `for', `select', and `case' command heads are printed when `set -x' is + enabled. + +u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1, + x+2,...,y}. x and y can be integers or single characters; the sequence + may ascend or descend; the increment is always 1. + +v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices) + of array. + +w. New `force_fignore' shopt option; if enabled, suffixes specified by + FIGNORE cause words to be ignored when performing word completion even + if they're the only possibilities. + +x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu + style' (filename:lineno:message) format. + +y. New `-o bashdefault' option to complete and compgen; if set, causes the + whole set of bash completions to be performed if the compspec doesn't + result in a match. + +z. New `-o plusdirs' option to complete and compgen; if set, causes directory + name completion to be performed and the results added to the rest of the + possible completions. + +aa. `kill' is available as a builtin even when the shell is built without + job control. + +bb. New HISTTIMEFORMAT variable; value is a format string to pass to + strftime(3). If set and not null, the `history' builtin prints out + timestamp information according to the specified format when displaying + history entries. If set, bash tells the history library to write out + timestamp information when the history file is written. + +cc. The [[ ... ]] command has a new binary `=~' operator that performs + extended regular expression (egrep-like) matching. + +dd. `configure' has a new `--enable-cond-regexp' option (enabled by default) + to enable the =~ operator and regexp matching in [[ ... ]]. + +ee. Subexpressions matched by the =~ operator are placed in the new + BASH_REMATCH array variable. + +ff. New `failglob' option that causes an expansion error when pathname + expansion fails to produce a match. + +gg. New `set -o pipefail' option that causes a pipeline to return a failure + status if any of the processes in the pipeline fail, not just the last + one. + +4. New Features in Readline + +a. History expansion has a new `a' modifier equivalent to the `g' modifier + for compatibility with the BSD csh. + +b. History expansion has a new `G' modifier equivalent to the BSD csh `g' + modifier, which performs a substitution once per word. + +c. All non-incremental search operations may now undo the operation of + replacing the current line with the history line. + +d. The text inserted by an `a' command in vi mode can be reinserted with + `.'. + +e. New bindable variable, `show-all-if-unmodified'. If set, the readline + completer will list possible completions immediately if there is more + than one completion and partial completion cannot be performed. + +f. There is a new application-callable `free_history_entry()' function. + +g. History list entries now contain timestamp information; the history file + functions know how to read and write timestamp information associated + with each entry. + +h. Four new key binding functions have been added: + + rl_bind_key_if_unbound() + rl_bind_key_if_unbound_in_map() + rl_bind_keyseq_if_unbound() + rl_bind_keyseq_if_unbound_in_map() + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-release, +and the previous version, bash-2.05b-beta2. + +1. Changes to Bash + +a. Fixed an off-by-one error in the function that translates job + specifications. + +b. Note that we're running under Emacs and disable line editing if + $EMACS == `t'. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-beta2, +and the previous version, bash-2.05b-beta1. + +1. Changes to Bash + +a. Fixed the /= and %= arithmetic operators to catch division by zero. + +b. Added putenv, setenv, unsetenv to getenv replacement for completeness. + +c. Fixed a bug that could cause the -O expand_aliases invocation option + to not take effect. + +d. Fixed a problem with process substitution that resulted in incorrect + behavior when the number of process substitutions in an individual + command approached 64. + +2. Changes to Readline + +a. Fixed a problem with backward-char-search when on a system with support + for multibyte characters when running in a locale without any multibyte + characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-beta1, +and the previous version, bash-2.05b-alpha1. + +1. Changes to Bash + +a. Fixed a problem when parsing a POSIX.2 character class name while + evaluating a bracket expression containing multibyte characters. + +b. Changed the help text for `bind' to make it clear that any command + that may be placed in ~/.inputrc is a valid argument to `bind'. + +c. Added `help' builtin entries for `((', `[[', and arithmetic for. + +d. malloc updated again: + o slightly better overflow and underflow detection by putting the + chunk size at the beginning and end of the chunk and making + sure they match in free/realloc + o partial page allocated to make things page-aligned no longer + completely wasted + o block coalescing now enabled by default + o splitting and coalescing enabled for 32-byte chunks, the most + common size requested + o fixed a problem that resulted in spurious underflow messages and + aborts + o bin sizes are precomputed and stored in an array rather than + being computed at run time + o malloc will return memory blocks back to the system if the block + being freed is at the top of the heap and of sufficient size to + make it worthwhile + o malloc/free/realloc now inline memset instead of calling the + libc function; uses Duff's device for good performance + +e. Check for getservent(); make the service name completion code dependent + on its presence. + +f. Changed the readline callback that executes a command bound to a key + sequence to not save the executed command on the history list and to + save and restore the parsing state. + +g. Changes to lib/sh/snprintf.c: fixed some bugs in the `g' and `G' + floating point format display; implemented the "'" flag character + that turns on thousands' grouping; fixed behavior on systems where + MB_CUR_MAX does not evaluate to a constant. + +h. The `unset' builtin no longer returns a failure status when asked to + unset a previously-unset variable or function. + +i. Changes to the build system to make it easier to cross-compile bash + for different systems. + +j. Added `,' to the characters that are backslash-escaped during filename + completion, to avoid problems with complete-into-braces and RCS filenames + containing commas. + +k. Some changes to the multibyte character support code to avoid many calls + to strlen(). + +l. Bash now correctly honors setting LANG to some value when LC_ALL does not + already have a value. + +m. Fixed a bug that could cause SIGSEGV when processing nested traps with + trap handlers. + +n. The `source/.' builtin now restores the positional parameters when it + returns unless they were changed using the `set' builtin during the file's + execution. + +o. Fixed a bug that caused a syntax error when a command was terminated by + EOF. + +2. New Features in Bash + +a. There is now support for placing the long help text into separate files + installed into ${datadir}/bash. Not enabled by default; can be turned + on with `--enable-separate-helpfiles' option to configure. + +b. All builtins that take operands accept a `--' pseudo-option, except + `echo'. + +c. The `echo' builtin now accepts \0xxx (zero to three octal digits following + the `0') in addition to \xxx (one to three octal digits) for SUSv3/XPG6/ + POSIX.1-2001 compliance. + +3. Changes to Readline + +a. Fixed a small problem in _rl_insert_char with multibyte characters. + +b. Fixes from IBM for line wrapping problems when using multibyte characters. + +c. Fixed a problem which caused the display to be messed up when the last + line of a multi-line prompt (possibly containing invisible characters) + was longer than the screen width. + +d. Fixed a problem with the vi-mode `r' command that ocurred on systems with + support for multibyte characters when running in a locale without any + multibyte characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05b-alpha1, +and the previous version, bash-2.05a-release. + +1. Changes to Bash + +a. Some changes to work around inlining differences between compilers. + +b. Added more prototypes for internal shell typedefs, to catch argument + passing errors when using pointers to functions. + +c. The `cd' builtin now fails in posix mode when a valid directory cannot be + constructed from a relative pathname argument and the $PWD using pathname + canonicalization, and the -P option has not been supplied. Previously, + the shell would attempt to use what the user typed, leading to weird + values for $PWD and discrepancies between the value of $PWD and the + actual working directory. + +d. The `cd' builtin now resets $PWD when canonicalization fails but a chdir + to the pathname passed as an argument succeeds (when not in posix mode). + +e. The `fc' builtin has been fixed, as POSIX requires, to use the closest + history position in range when given an out-of-range argument. + +f. The history file loading code was changed to allow lines to be saved in + the history list from the shell startup files. + +g. `history -s args' now works better in compound commands. + +h. The tilde expansion code was fixed to better recognize when it's being + invoked in an assignment context, which enables expansion after `=' + and `:'. + +i. Fixed the command name completion code so a slash is no longer appended + to a single match if there happens to be a directory with that name in + $PWD. + +j. Fixed compound array assignment to no longer perform alias expansion, to + allow reserved words as array members, and to not produce extra output + when the `-v' option had been enabled. + +k. Fixed the programmable completion code to better handle newlines in lists + of possible completions (e.g., `complete -W'). + +l. Removed the reserved words from the `bash-builtins' manual page. + +m. Parser error reporting now attempts to do a better job of identifying the + token in error rather than doing straight textual analysis. + +n. Fixes for Inf/NaN, locales, wide/multibyte characters and zero-length + arguments in the library snprintf(3) replacement. + +o. `read -e' no longer does command name completion on the first word on + the line being read. + +p. `select' now returns failure if the read of the user's selection fails. + +q. Fixed a bug that could cause a core dump when setting $PIPESTATUS. + +r. Fixes to not allocate so many job slots when the shell is running a loop + with job control enabled in a subshell of an interactive shell. + +s. Fixed a bug in the trap code that caused traps to be inherited by + command substitutions in some cases. + +t. Fixed a bug that could cause alias expansion to inappropriately expand + the word following the alias. + +u. Fixed a bug in the `kill' builtin that mishandled negative pid arguments. + +v. The parser is less lenient when parsing assignment statements where the + characters before the `=' don't comprise a valid identifier. + +w. The arithmetic expression evaluation code now honors the setting of the + `-u' option when expanding variable names. + +x. Fixed the arithmetic evaluation code to allow array subscripts to be + assigned (`let b[7]=42') and auto-incremented and auto-decremented + (e.g., b[7]++). + +y. Reimplemented the existing prompt string date and time expansions using + strftime(3), which changed the output of \@ in some locales. + +z. Fixed a bug that could cause a core dump when a special shell variable + (like RANDOM) was converted to an array with a variable assignment. + +aa. Fixed a bug that would reset the handler for a signal the user had + trapped to a function that would exit the shell when setting the exit + trap in a non-interactive shell. + +bb. Changed the execve(2) wrapper code to check whether or not a failing + command is a directory before looking at whether a `#!' interpreter + failed for some reason. + +cc. Fixed a bug in the command printing code so it no longer inserts a `;' + after a newline, which produces a syntax error when reused as input. + +dd. The code that expands $PS4 no longer inherits the `-x' flag. + +ee. The bash-specific completion functions may now take advantage of the + double-TAB and M-? features of the standard readline completion + functions. + +ff. The mail checking code no longer prints a message if the checked file's + size has not increased, even if the access time is less than the modification time. + +gg. Rewrote the variable symbol table code: there is now a stack of + contexts, each possibly including a separate symbol table; there can + be more than one temporary environment supplied to nested invocations + of `./source'; the temporary environments no longer require so much + special-case code; shell functions now handle the temporary environment + and local variables more consistently; function scope exit is faster now + that the entire symbol table does not have to be traversed to dispose of + local variables; it is now easier to push vars from the temporary + environment to the shell's variable table in posix mode; some duplicated + code has been removed. + +hh. Regularized the error message printing code; builtin_error is now called + more consistently, and common error message strings are handled by small + functions. This should make eventual message translation easier. + +ii. Error messages now include the line number in a script when the shell + is not interactive. + +jj. Array subscript expansion now takes place even when the array variable is + unset, so side effects will take place. + +kk. Fixed a bug in the SICGHLD child-reaping code so that it won't find + jobs already marked as terminated if the OS reuses pids quickly enough. + +ll. Fixed a bug that could cause a signal to not interrupt the `wait' + builtin while it was waiting for a background process to terminate. + +mm. A couple of changes to make it easier for multiple shells to share history + files using `history -n', `history -r', and `history -w'. + +nn. The `getopts' builtin always increments OPTIND to point to the next + option to be handled when an option is returned, whether it's valid + or not, as POSIX 1003.x-2001 requires. + +oo. Changed some parts of the expansion code to avoid allocating and + immediately freeing memory without using the results for anything. + +pp. The shell now keeps track of $IFS internally, updating its internal map + each time the variable is assigned a new value (or at local scope exit). + This saves thousands of hash lookups for IFS, which, while individually + cheap, add up. + +qq. Rewrote the hash table code: searching and insertion are much faster now, + and it uses a better string hashing function; augmented the function + interface to simplify other parts of the code and remove duplicated code + +rr. The shell now uses a simple, generic `object cache' for allocating and + caching words and word lists, which were the major users of + malloc/free. + +ss. Fixed the assignment statement parsing code to allow whitespace and + newlines in subscripts when performing array element assignment. + +tt. The shell now issues many fewer calls to sigprocmask and other signal + masking system calls. + +uu. Fixed the `test' and conditional command file comparison operators to + work right when one file has a non-positive timestamp and the other + does not exist. + +vv. Fixed some cases where the special characters '\001' and '\177' in the + values of variables or positional parameters caused incorrect expansion + results. + +2. Changes to Readline + +a. Fixed output of comment-begin character when listing variable values. + +b. Added some default key bindings for common escape sequences produced by + HOME and END keys. + +c. Fixed the mark handling code to be more emacs-compatible. + +d. A bug was fixed in the code that prints possible completions to keep it + from printing empty strings in certain circumstances. + +e. Change the key sequence printing code to print ESC as M\- if ESC is a + meta-prefix character -- it's easier for users to understand than \e. + +f. Fixed unstifle_history() to return values that match the documentation. + +g. Fixed the event loop (rl_event_hook) to handle the case where the input + file descriptor is invalidated. + +h. Fixed the prompt display code to work better when the application has a + custom redisplay function. + +i. Changes to make reading and writing the history file a little faster, and + to cope with huge history files without calling abort(3) from xmalloc. + +j. The vi-mode `S' and `s' commands are now undone correctly. + +3. New Features in Bash + +a. If set, TMOUT is the default timeout for the `read' builtin. + +b. `type' has two new options: `-f' suppresses shell function lookup, and + `-P' forces a $PATH search. + +c. New code to handle multibyte characters. + +d. `select' was changed to be more ksh-compatible, in that the menu is + reprinted each time through the loop only if REPLY is set to NULL. + The previous behavior is available as a compile-time option. + +e. `complete -d' and `complete -o dirnames' now force a slash to be + appended to names which are symlinks to directories. + +f. There is now a bindable edit-and-execute-command readline command, + like the vi-mode `v' command, bound to C-xC-e in emacs mode. + +g. Added support for ksh93-like [:word:] character class in pattern matching. + +h. The $'...' quoting construct now expands \cX to Control-X. + +i. A new \D{...} prompt expansion; passes the `...' to strftime and inserts + the result into the expanded prompt. + +j. The shell now performs arithmetic in the largest integer size the + machine supports (intmax_t), instead of long. + +k. If a numeric argument is supplied to one of the bash globbing completion + functions, a `*' is appended to the word before expansion is attempted. + +l. The bash globbing completion functions now allow completions to be listed + with double tabs or if `show-all-if-ambiguous' is set. + +m. New `-o nospace' option for `complete' and `compgen' builtins; suppresses + readline's appending a space to the completed word. + +n. New `here-string' redirection operator: <<< word. + +o. When displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +p. There is a new configuration option `--enable-mem-scramble', controls + bash malloc behavior of writing garbage characters into memory at + allocation and free time. + +q. The `complete' and `compgen' builtins now have a new `-s/-A service' + option to complete on names from /etc/services. + +r. `read' has a new `-u fd' option to read from a specified file descriptor. + +s. Fix the completion code so that expansion errors in a directory name + don't cause a longjmp back to the command loop. + +t. Fixed word completion inside command substitution to work a little more + intuitively. + +u. The `printf' %q format specifier now uses $'...' quoting to print the + argument if it contains non-printing characters. + +v. The `declare' and `typeset' builtins have a new `-t' option. When applied + to functions, it causes the DEBUG trap to be inherited by the named + function. Currently has no effect on variables. + +w. The DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops. + +x. The expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires. + +y. The bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better. Code + from Gary Vaughan. + +z. New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup + and close). + +aa. There is a new `-l' invocation option, equivalent to `--login'. + +bb. The `hash' builtin has a new `-l' option to list contents in a reusable + format, and a `-d' option to remove a name from the hash table. + +4. New Features in Readline + +a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both + be bound to readline functions. Now the arrow keys may be used in vi + insert mode. + +b. When listing completions, and the number of lines displayed is more than + the screen length, readline uses an internal pager to display the results. + This is controlled by the `page-completions' variable (default on). + +c. New code to handle editing and displaying multibyte characters. + +d. The behavior introduced in bash-2.05a of deciding whether or not to + append a slash to a completed name that is a symlink to a directory has + been made optional, controlled by the `mark-symlinked-directories' + variable (default is the 2.05a behavior). + +e. The `insert-comment' command now acts as a toggle if given a numeric + argument: if the first characters on the line don't specify a + comment, insert one; if they do, delete the comment text + +f. New application-settable completion variable: + rl_completion_mark_symlink_dirs, allows an application's completion + function to temporarily override the user's preference for appending + slashes to names which are symlinks to directories. + +g. New function available to application completion functions: + rl_completion_mode, to tell how the completion function was invoked + and decide which argument to supply to rl_complete_internal (to list + completions, etc.). + +h. Readline now has an overwrite mode, toggled by the `overwrite-mode' + bindable command, which could be bound to `Insert'. + +i. New application-settable completion variable: + rl_completion_suppress_append, inhibits appending of + rl_completion_append_character to completed words. + +j. New key bindings when reading an incremental search string: ^W yanks + the currently-matched word out of the current line into the search + string; ^Y yanks the rest of the current line into the search string, + DEL or ^H deletes characters from the search string. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-release, +and the previous version, bash-2.05a-rc1. + +1. Changes to Bash + +a. Fixed the `printf' builtin so that the variable name supplied as an + argument to a %n conversion must be a valid shell identifier. + +b. Improved the random number generator slightly. + +c. Changes to configuration to not put -I/usr/include into $CFLAGS, since + it messes up some includes. + +d. Corrected description of POSIXLY_CORRECT in man page and info manual. + +e. Fixed a couple of cases of incorrect function prototypes that sneaked + through and caused compilation problems. + +f. A few changes to avoid potential core dumps in the programmable completion + code. + +g. Fixed a configure problem that could cause a non-existent file to show + up in LIBOBJS. + +h. Fixed a configure problem that could cause siglist.o to not be built when + required. + +i. Changes to the strtoimax and strtoumax replacement functions to work + around buggy compilers. + +j. Fixed a problem with the snprintf replacement function that could + potentially cause a core dump. + +2. Changes to Readline + +a. Fixed a locale-specific problem in the vi-mode `goto mark' command. + +b. Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause + include file problems. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-rc1, +and the previous version, bash-2.05a-beta1. + +1. Changes to Bash + +a. Fixed the snprintf replacement to correctly implement the `alternate form' + of the %g and %G conversions. + +b. Fixed snprintf to correctly handle the optional precision with the %g and + %G conversions. + +c. Fixed the arithmetic evaluation code to correct the values of `@' and `_' + when translating base-64 constants (they were backwards). + +d. New library functions for formatting long and long long ints. + +e. Fixed a few places where negative array subscripts could have occurred, + mostly as the result of systems using signed characters. + +f. Fixed a few places that assumed a pid_t was no wider than an int. + +g. Fixed the `maildir' mail checking code to work on systems where a + `struct stat' doesn't include an `st_blocks' member. + +h. Fixed snprintf to make `unsigned long long' conversion formats (%llu) + work better. + +i. Fixed snprintf to not print a sign when asked to do an unsigned conversion. + +j. Made configure changes to avoid compiling empty source files in lib/sh. + +k. New replacement functions (if necessary) for strtoull, strtoll, strtoimax, + strtoumax. + +l. The `printf' builtin now handles the `ll' and `j' length modifiers + directly, since they can affect the type and width of the argument + passed to printf(3). + +m. Renamed a number of the bash-specific autoconf macros in aclocal.m4 to + have more sytematic naming, with accompanying changes to configure.in. + +n. Fixed snprintf to handle long doubles and the %a/%A conversions by + falling back to sprintf, as long as sprintf supports them. + +o. Fixed return value from vsnprintf/snprintf to be the number of characters + that would have been printed, even if that number exceeds the buffer + size passed as an argument. + +p. Bash no longer attempts to define its own versions of some ctype macros + if they are implemented as functions in libc but not as macros in + <ctype.h>. + +q. Changed the variable printing code (used by `set', `export', etc.) to + not use the $'...' syntax when in posix mode, since that caused + interoperability problems with other shells (most notably with autoconf). + When not in posix mode, it uses $'...' if the string to be printed + contains non-printing characters and regular single quotes otherwise. + +r. snprintf now recognizes the %F conversion. + +s. Fixed a bug that could cause the wrong status to be returned by a shell + function when the shell is compiled without job control and a null + command containing a command substutition was executed in the function. + +t. When in posix mode, the default value for MAILCHECK is 600. + +u. Bash only initializes FUNCNAME, GROUPS, and DIRSTACK as special variables + if they're not in the initial environment. + +v. If SECONDS appears in the initial environment with a valid integer value, + bash uses that as the starting value, as if an assignment had been + performed. + +w. Bash no longer auto-exports HOME, PATH, SHELL, or TERM, even though it + gives them default values if they don't appear in the initial environment. + +x. Bash no longer auto-exports HOSTNAME, HOSTTYPE, MACHTYPE, or OSTYPE, + even if it assigns them default values. + +y. Bash no longer removes the export attribute from SSH_CLIENT or SSH2_CLIENT + if they appear in the initial environment. + +z. Bash no longer attempts to discover if it's being run by sshd in order to + run the startup files. If the SSH_SOURCE_BASHRC is uncommented in + config-top.h it will attempt to do so as previously, but that's commented + out in the distributed version. + +aa. Fixed a typo in the code that tests for LC_NUMERIC. + +bb. The POSIXLY_CORRECT shell variable and its effects are now documented. + +cc. Some changes to several of the support shell scripts included in the + definitions to try to avoid race conditions and attacks. + +dd. Several changes to avoid warnings from `gcc -Wall'. + +ee. Fixed a problem with the `unset' builtin that could cause incorrect + results if asked to unset a variable and an array subscript in the + same command. + +ff. A few changes to the shell's temporary file creation code to avoid + potential file descriptor leaks and to prefer the system's idea of + the temporary directory to use. + +gg. Fixes to build with the C alloca in lib/malloc/alloca.c if the system + requires it but the shell has been configured --without-bash-malloc. + +hh. Updated the documentation to note that only interactive shells resend + SIGHUP to all jobs before exiting. + +ii. Fixes to only pass unquoted tilde words to tilde_expand, rather than + rely on tilde_expand or getpwnam(3) to handle the quotes (MacOS 10.x + will remove backslashes in any login name passed to getpwnam(3)). + +jj. Small change from Paul Eggert to make LINENO right in commands run with + `bash -c'. + +2. New Features in Bash + +a. The `printf' builtin now handles the %a and %A conversions if they're + implemented by printf(3). + +b. The `printf' builtin now handles the %F conversion (just about like %f). + +c. The `printf' builtin now handles the %n conversion like printf(3). The + corresponding argument is the name of a shell variable to which the + value is assigned. + +3. Changes to Readline + +a. Fixed a few places where negative array subscripts could have occurred. + +b. Fixed the vi-mode code to use a better method to determine the bounds of + the array used to hold the marks. + +c. Fixed the defines in chardefs.h to work better when chars are signed. + +d. Fixed configure.in to use the new names for bash autoconf macros. + +e. Readline no longer attempts to define its own versions of some ctype + macros if they are implemented as functions in libc but not as macros in + <ctype.h>. + +f. Fixed a problem where rl_backward could possibly set point to before + the beginning of the line. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-beta1, +and the previous version, bash-2.05a-alpha1. + +1. Changes to Bash + +a. Fixed a bug in the evalution of arithmetic `for' statements when the + expanded expression is NULL. + +b. Fixed an unassigned variable problem in the redirection printing code. + +c. Added more prototypes to extern function declarations in the header + files and to static function declarations in C source files. + +d. Make sure called functions have a prototype in scope, to get the arguments + and return values right instead of casting. Removed extern function + declarations from C source files that were already included in header + files. + +e. Changed some function arguments to use function typedefs in general.h so + the prototypes can be checked. The only use of Function and VFunction + now is for unwind-protects. + +f. More const changes to function arguments and appropriate variables. + +g. Changed the mail checking support to handle `maildir'-style mail + directories. + +h. Augmented the bash malloc to pass in the file and line number information + for each malloc, realloc, and free. This should result in better error + messages. + +i. The `old' gnu malloc is no longer a configuration option. + +j. Augmented the bash malloc with optional tracing and registering allocated + and freed memory. + +k. Prompt string decoding now saves and restores the value of $? when it + expands the prompt string, so command substitutions don't change $?. + +i. Array indices are now `long', since shell arithmetic is performed as long, + and the internal arrayind_t type is used consistently. + +j. Some more `unsigned char *' fixes from Paul Eggert. + +k. Fixed a bad call to builtin_error that could cause core dumps when making + local variables. + +l. `return' may no longer be used to terminate a `select' command, for + compatibility with ksh. + +m. Changed code that reads octal numbers to do a better job of detecting + overflows. + +n. The time formatting code no longer uses absolute indices into a buffer, + because the buffer size changes depending on the size of a `time_t'. + +o. `umask' now prints four digits when printing in octal mode, for + compatibility with other shells. + +p. Lots of changes to the `printf' builtin from Paul Eggert: it handles `L' + formats and long doubles better, and internal functions have been + simpified where appropriate. + +q. Some `time_t' fixes for machines were a time_t is bigger than a long. + +r. Replaced some bash-specific autoconf macros with standard equivalents. + +s. Improvmed the code that constructs temporary filenames to make the + generated names a bit more random. + +t. Added code that checks for ascii before calling any of the is* ctype + functions. + +u. Changed some places where a `char' was used as an array subscript to use + `unsigned char', since a `char' can be negative if it's signed by default. + +v. Lots of changes to the `ulimit' builtin from Paul Eggert to add support + for the new POSIX-200x RLIM_SAVED_CUR and RLIM_SAVED_MAX values and + simplify the code. + +w. `ulimit' now prints the description of a resource in any error message + relating to fetching or setting that resource's limits. + +x. The `snprintf' replacement now computes maximum values at compile + time rather than using huge constants for things like long long. + +y. Interactive shells now ignore `set -n'. + +z. Changed the malloc bookkeeping information so that it's now 8 bytes + instead of 12 on most 32-bit machines (saving 4 bytes per allocation), + restoring 8-byte alignment. + +aa. The malloc error reporting code now attempts to print the file and line + number of the call that caused the error. + +bb. Changed the redirection error reporting code to catch EBADF errors and + report the file descriptor number rather than the file being redirected + to or from (e.g., things like `exec 4242<x' where 4242 is an out-of-range + file descriptor). + +cc. `printf', `echo -e', and the $'...' code now process only two hex digits + after a `\x' escape sequence for compatibility with other shells, and + the documentation was changed to note that the octal and hex escape + sequences result in an eight-bit value rather than strict ASCII. + +2. Changes to Readline + +a. The completion code now attempts to do a better job of preserving the + case of the word the user typed if ignoring case in completions. + +b. Readline defaults to not echoing the input and lets the terminal + initialization code enable echoing if there is a controlling terminal. + +c. The key binding code now processes only two hex digits after a `\x' + escape sequence, and the documentation was changed to note that the + octal and hex escape sequences result in an eight-bit value rather + than strict ASCII. + +3. New Features in Bash + +a. The builtin `ulimit' now takes two new non-numeric arguments: `hard', + meaning the current hard limit, and `soft', meaning the current soft + limit, in addition to `unlimited' + +b. `ulimit' now prints the option letter associated with a particular + resource when printing more than one limit. + +c. `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is + one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively. + +4. New Features in Readline + +a. New bindable variable `history-preserve-point'. If set, the history + code attempts to place the user at the same location on each history + line retrived with previous-history or next-history. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05a-alpha1, +and the previous version, bash-2.05-release. + +1. Changes to Bash + +a. Better checks in the redirection code for write errors. + +b. bashbug now uses $TMPDIR, defaulting to /tmp, and uses mktemp(1) more + portably. + +c. System-specific configuration changes for: Interix, OpenBSD, FreeBSD, + MacOS X. + +d. Some more `const' cleanups through the code. + +e. Fixed a typo in the /dev/fd redirection code, better checks for valid + numeric fds in /dev/fd. + +f. Fixed many parts of the shell to handle integer overflow more gracefully + and to do more stringent checks for valid numbers. + +g. Fixed mksignames to include config.h. + +h. Fixed an uninitialized variable problem that could cause the shell to core + dump when replacing characters in a string. + +i. New mechanism for updating the patch level when official patches are + released (patchlevel.h). + +j. configure.in changed to no longer require external files _distribution and + _patchlevel. + +k. Fixed non-interactive shell initialization problem when bash started as + `bash -i filename'. + +l. Fixed printf builtin conversion error handling to be POSIX.2-conformant. + +m. autoconf-2.52 is now used to build configure; autoconf-2.50 or newer is + required. Some of the bash-specific macros were removed, since they are + now standard. + +n. Startup files and files read with source or `.' are no longer required to + be regular files. + +o. Fixed core dump in builtin printf when user-supplied precision or field + width is 0. + +p. Fixed builtin printf to treat a negative field width as a positive field + width with left-justification. + +r. New unwind-protect implementation from Paul Eggert. + +s. Fixed an inadvertently-unclosed comment in the bash completion code that + caused programmable completions to not add trailing slashes or spaces to + completions. + +t. Fixed the process substitution code to cope better when stdin is closed. + +v. Fixes, mostly from Paul Eggert, for a few possible buffer overflows in + the shell. + +w. Fixes from Paul Eggert to avoid most of the type casts in the shell code, + and use more appropriate types for a number of variables. + +x. Command substition no longer inherits the DEBUG trap. + +y. Some fixes to the process substition code on machines without /dev/fd so + that named pipes are not removed inappropriately. + +z. The loadable `getconf' builtin is now much more complete, and will become + part of the shell in the future. + +aa. The select command no longer terminates on a `return', so it can be used + to return from an enclosing function (as ksh does it). + +bb. Fixed the extended pattern matching code to behave better when presented + with incorrectly-formed patterns. + +cc. Some changes were made with the intent of making cross-compilation easier. + +dd. The network code (/dev/tcp and /dev/udp redirections) uses getaddrinfo(3) + if it's available, which adds support for IPv6. + +ee. Subshells of login shells no longer source ~/.bash_logout when they exit. + +ff. Fixes so that subshells don't exit inappropriately if the -e option has + been set. + +gg. Restricted shells no longer allow functions to be exported. + +hh. Changes to the pattern matching code so extended pattern matching works + on systems with deficient shared library implementations, like MacOS X. + +ii. Better error messages when a script with a leading `#!interp' fails + to execute because of problems with `interp'. + +jj. Fixed `compgen' to handle the `-o default' option better. + +kk. Fixed the job control code to force an asynchronous process's standard + input to /dev/null only if job control is not active. + +ll. Fixed a possible infinite recursion problem when `fc ""=abc' (a null + pattern) is used to re-execute a previous command. + +mm. Fixed `declare [-a] var=value' to assign VALUE to element 0 if VAR is an + array variable. Similarly for `declare [-a] var[N]=value'. This is like + ksh93. + +nn. Fixed a bug that caused `read -a aname' to work even if ANAME had been + declared readonly. + +oo. Fixed a possible integer overflow problem when constructing names for + temporary files. + +2. New Features in Bash + +a. Added support for DESTDIR installation root prefix, so you can do a + `make install DESTDIR=bash-root' and do easier binary packaging. + +b. Added support for builtin printf "'" flag character as per latest POSIX + drafts. + +c. Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from + ISO C99). + +d. New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications + (bash doesn't use very much of what it returns). + +e. `set [-+]o nolog' is recognized as required by the latest POSIX drafts, + but ignored. + +f. New read-only `shopt' option: login_shell. Set to non-zero value if the + shell is a login shell. + +g. New `\A' prompt string escape sequence; expands to time in 24 HH:MM format. + +h. New `-A group/-g' option to complete and compgen; does group name + completion. + +i. New `-t' option to `hash' to list hash values for each filename argument. + +j. New [-+]O invocation option to set and unset `shopt' options at startup. + +k. configure's `--with-installed-readline' option now takes an optional + `=PATH' suffix to set the root of the tree where readline is installed + to PATH. + +l. The ksh-like `ERR' trap has been added. The `ERR' trap will be run + whenever the shell would have exited if the -e option were enabled. + It is not inherited by shell functions. + +m. `readonly', `export', and `declare' now print variables which have been + given attributes but not set by assigning a value as just a command and + a variable name (like `export foo') when listing, as the latest POSIX + drafts require. + +n. `bashbug' now requires that the subject be changed from the default. + +o. configure has a new `--enable-largefile' option, like other GNU utilities. + +p. `for' loops now allow empty word lists after `in', like the latest POSIX + drafts require. + +3. Changes to Readline + +a. More `const' and type casting fixes. + +b. Changed rl_message() to use vsnprintf(3) (if available) to fix buffer + overflow problems. + +c. The completion code no longer appends a `/' or ` ' to a match when + completing a symbolic link that resolves to a directory name, unless + the match does not add anything to the word being completed. This + means that a tab will complete the word up to the full name, but not + add anything, and a subsequent tab will add a slash. + +d. Fixed a trivial typo that made the vi-mode `dT' command not work. + +e. Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert. + +f. Fixed the tty code so that ^V works more than once. + +g. Changed the use of __P((...)) for function prototypes to PARAMS((...)) + because the use of __P in typedefs conflicted g++ and glibc. + +4. New Features in Readline + +a. Added extern declaration for rl_get_termcap to readline.h, making it a + public function (it was always there, just not in readline.h). + +b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402, + RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2. + +c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION. + +d. New bindable boolean readline variable: match-hidden-files. Controls + completion of files beginning with a `.' (on Unix). Enabled by default. + +e. The history expansion code now allows any character to terminate a + `:first-' modifier, like csh. + +f. The incremental search code remembers the last search string and uses + it if ^R^R is typed without a search string. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-release, +and the previous version, bash-2.05-beta2. + +1. Changes to Bash + +a. Make sure we note that the first line of a multi-line command was not + saved in the history if the tests for HISTCONTROL succeed, but the + HISTIGNORE check fails. + +b. Fixed a bug in the pattern matching code that caused `[' to be treated + as a special character inside a `[...]' bracket expression. + +c. Fixed a bug in the pattern matching code that caused `]' to terminate + a bracket expression even if it was the first character after the `[' + (or a leading `!' or `^'). + +d. Made a small change to report a more user-friendly error message if + execve(2) fails because of an error with the interpreter in a script + with a leading `#! interpreter'. + +e. If the OS does not support an exec(2) magic number of `#!', make sure we + have a non-null interpreter name before attempting to execute it. + +f. Fixed a bug that caused the shell process to end up in a different + process group than the controlling terminal if a job-control shell was + run with `exec' in the startup files. + +g. When started in POSIX mode, either by `bash --posix', `bash -o posix', or + `sh', $SHELLOPTS includes `posix' and POSIXLY_CORRECT is set. + +h. Fixed a problem that caused the `\W' prompt string escape sequence to + expand to nothing when $PWD was `//'. + +i. The `bashbug' shell script no longer uses $(...) command substitution. + +j. When `set' is invoked without options in POSIX mode, it no longer prints + the names and definitions of shell functions. + +2. Changes to Readline + +a. rl_set_paren_blink_timeout() is now documented. + +b. Corrected history.3 man page: `$' is not in the default value of + history_word_delimiters. + +c. If a hook function assigned to rl_event_hook sets rl_done to a non-zero + value, rl_read_key() now immediately returns '\n' (which is assumed to + be bound to accept-line). + +3. New Features in Bash + +a. The `>&word' redirection now works in POSIX mode as it does by default, + since POSIX.2 leaves it unspecified. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-beta2, +and the previous version, bash-2.05-beta1. + +1. Changes to Bash + +a. Fixed a bug in the arithmetic evaluation code so that a^=b is supported. + +b. Fixed startup so posixly_correct is retained across subshells begun to + execute scripts without a leading `#!'. + +c. Fixed a bug that caused $(< file) to not work in a (...) subshell. + +d. Added config support for Linux running on the IBM S390. + +e. Fixed a bug that caused bash to get its input pointer out of sync when + reading commands through a pipe and running a command with standard + input redirected from a file. + +f. Made a change so that command completion now makes about half as many + stat(2) calls when searching the $PATH. + +g. Fixed a bug that caused variable assignments preceding `return' to not + be propagated to the shell environment in POSIX mode. + +h. Fixed a bug with ${parameter[:]?word} -- tilde expansion was not performed + on `word'. + +i. In POSIX mode, `break' and `continue' do not complain and return success + if called when the shell is not executing a loop. + +j. Fixed `bash -o posix' to work the same as `bash --posix'. + +k. Fixed a bug where variable assignments preceding `eval' or `source/.' + would not show up in the environment exported to subshells run by the + commands. + +l. In POSIX mode, shells started to execute command substitutions inherit + the value of the `-e' option from their parent shell. + +m. In POSIX mode, aliases are expanded even in non-interactive shells. + +n. Changed some of the job control messages to display the text required by + POSIX.2 when the shell is in POSIX mode. + +o. Fixed a bug in `test' that caused it to occasionally return incorrect + results when non-numeric arguments were supplied to `-t'. + +2. Changes to Readline + +a. Some changes were made to avoid gcc warnings with -Wall. + +b. rl_get_keymap_by_name now finds keymaps case-insensitively, so + `set keymap EMACS' works. + +c. The history file writing and truncation functions now return a useful + status on error. + +d. Fixed a bug that could cause applications to dereference a NULL pointer + if a NULL second argument was passed to history_expand(). + +3. New Features in Bash + +a. doc/readline.3 has been moved to the readline distribution. + +4. New Features in Readline + +a. New function, rl_get_screen_size (int *rows, int *columns), returns + readline's idea of the screen dimensions. + +b. The timeout in rl_gather_tyi (readline keyboard input polling function) + is now settable via a function (rl_set_keyboard_input_timeout()). + +c. Renamed the max_input_history variable to history_max_entries; the old + variable is maintained for backwards compatibility. + +d. The list of characters that separate words for the history tokenizer is + now settable with a variable: history_word_delimiters. The default + value is as before. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-beta1, +and the previous version, bash-2.05-alpha1. + +1. Changes to Bash + +a. Changes to allow shared library and object building on the GNU Hurd. + +b. Fixes to the way exported functions are placed into the environment and + cached. + +c. The globbing library once again respects locales when processing ranges + in bracket expressions while doing pattern matching. + +d. System-specific configuration changes for: Tru 64, Interix + +e. Bashbug now uses /usr/bin/editor as one of the editing alternatives, and + will use mktemp(1) or tempfile(1), if present, for temporary file creation. + +f. Bash no longer performs a binary file check on a script argument that's + really a tty (like /dev/fd/0 or /dev/stdin). + +g. Fixed a bug in the execution of shell scripts that caused the effects of + $BASH_ENV to be undone in some cases. + +h. Fixed several bugs that made `bash [-i] /dev/stdin' not work correctly. + +i. Several changes to the job control code to avoid some signal state + manipulation. + +j. The Bash malloc no longer blocks signals as often, which should make it + faster. + +k. Fixed a parsing bug that did not allow backslash to escape a single quote + inside a $'...' construct. + +l. Fixed a bug that caused things like ${var:=$'value'} to be parsed + incorrectly. This showed up in newer versions of autoconf. + +m. Fixed a bug in the bash-specific readline initialization that caused + key bindings to bash-specific function names appearing in .inputrc to + not be honored. + +n. Bash now sets the file descriptor it uses to save the file descriptor + opened on a shell script to close on exec. + +o. Fixed a bug in the prompt string decoding that caused it to misbehave + when presented an octal sequence of fewer than three characters. + +p. Fixed the `test' builtin to return an error if `[' is supplied a single + argument that is not `]'. + +q. Fixed a bug that caused subshells started to run executable shell scripts + without a leading `#!' to incorrectly inherit an argument list preceding + a shell builtin (like such a script called from a script sourced with `.', + where there were variable assignments preceding the `.' command) + +r. Fixed a bug that caused changes to variables supplied in an assignment + statement preceding a shell builtin to not be honored (like a script + run with `.'). + +s. HOSTTYPE, OSTYPE, and MACHTYPE are set only if they do not have values + when the shell is started. + +t. Fixed a bug that caused SIGINT to kill shell scripts after the script + called `wait'. + +u. The `fc' builtin now tries to create its temporary files in the directory + named by $TMPDIR. + +v. Bash no longer calls any Readline functions or uses any Readline variables + not declared in readline.h. + +w. Fixed a bug that caused some substitutions involving $@ to not be split + correctly, especially expansions of the form ${paramterOPword}. + +x. SSH2_CLIENT is now treated like SSH_CLIENT and not auto-exported if it + appears in the initial environment. + +y. Fixed a couple of problems with shell scripts without a leading `#!' + being executed out of shell functions that could cause core dumps if + such a script attempted to execute `return'. + +z. Fixed a problem with the `-nt' and `-ot' binary operators for the + `test/[' builtin and the `[[' conditional command that caused wrong + return values if one of the file arguments did not exist. + +aa. Fixed a bug that caused non-interactive shells which had previously + executed `shopt -s expand_aliases' to fail to expand aliases in a + command like `(command) &'. + +2. Changes to Readline + +a. Changes to make most (but not yet all -- there is still crlf()) of the + exported readline functions declared in readline.h have an rl_ prefix. + +b. More `const' changes in function arguments, mostly for completion + functions. + +c. Fixed a bug in rl_forward that could cause the point to be set to before + the beginning of the line in vi mode. + +d. Fixed a bug in the callback read-char interface to make it work when a + readline function pushes some input onto the input stream with + rl_execute_next (like the incremental search functions). + +e. Fixed a file descriptor leak in the history file manipulation code that + was tripped when attempting to truncate a non-regular file (like + /dev/null). + +f. Some existing variables are now documented and part of the public + interface (declared in readline.h): rl_explict_arg, rl_numeric_arg, + rl_editing_mode, rl_last_func. + +g. Renamed rltty_set_default_bindings to rl_tty_set_default_bindings and + crlf to rl_crlf, so there are no public functions declared in readline.h + without an `rl_' prefix. The old functions still exist for backwards + compatibility. + +3. New Features in Bash + +a. A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. + +b. When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. + +4. New Features in Readline + +a. New application-callable function rl_set_prompt(const char *prompt): + expands its prompt string argument and sets rl_prompt to the result. + +b. New application-callable function rl_set_screen_size(int rows, int cols): + public method for applications to set readline's idea of the screen + dimensions. + +c. The history example program (examples/histexamp.c) is now built as one + of the examples. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.05-alpha1, +and the previous version, bash-2.04-release. + +1. Changes to Bash + +a. A fix was made to allow newlines in compond array assignments. + +b. configure now checks for real-time signals with unusable values. + +c. Interactive shells no longer exit if a substitution fails because of an + unset variable within a sourced file. + +d. Fixed a problem with incorrect matching of extended glob patterns when + doing pattern substitution. + +e. `{' is now quoted by the completion code when it appears in a filename. + +f. Fixed an error in pattern matching that caused the matcher to not + correctly skip the rest of a bracket expression after a character + matched. + +g. Fixed a bug in the IFS word splitting code to make a non-whitespace IFS + character preceded by IFS whitespace part of the current delimiter rather + than generating a separate field. + +h. The {!prefix@} expansion now generates separate words, analogous to $@, + when double-quoted. + +i. Command substitution now ignores NUL bytes in the command output, and the + parser ignores them on input. + +j. A fix was made to the job control code to prevent hanging processes when + the shell thinks background processes are running but the kernel returns + -1/ECHILD from waitpid(). + +k. `pwd' now prints an error message if the write fails when displaying the + current directory. + +l. When in POSIX mode, the shell prints trap dispostions without a leading + `SIG' in the signal specification. + +m. Fixed a parser bug that caused the current command's line count to be + messed up by a compound array assignment. + +n. Fixed a bug in the unwind-protect code that caused bad behavior on machines + where ints and pointers are not the same size. + +o. System-specific configure changes for: MacOS X. + +p. Changes for Cygwin to translate \r\n and \r to \n and to set file + descriptors used for reading input to text mode in various places. + +q. Fixed a bug that caused `!' to occasionally not be honored when in + a (...) subshell. + +r. Bash no longer assumes that getcwd() will return any useful error message + in the buffer passed as an argument if the call fails. + +s. The `source', `.', and `fc' builtins no longer check whether a file is + binary before reading commands from it. + +t. Subshells no longer turn off job control when they exit, since that + sometimes resulted in the terminal being reset to the wrong process + group. + +u. The history code no longer tries to save the second and subsequent lines + of a multi-line command if the first line was not saved. + +v. The history saving code now does a better job of saving blank lines in a + multi-line command. + +w. Removed a `feature' that made `ulimit' silently translate `unlimited' to + the current hard limit, which obscured some kernel error returns. + +x. Fixed the grammar so that `}' is recognized as a reserved word after + another reserved word, rather than requiring a `;' or newline. This + means that constructs like + + { { echo a b c ; } } + + work as expected. + +y. Conditional commands ([[...]]) now perform tilde expansion on their + arguments. + +z. Noted in the documentation that `set -a' will cause functions to be + exported if they are defined after `set -a' is executed. + +aa. When an interactive login shell starts, if $PWD and $HOME refer to the + same directory but are not the same string, $PWD is set to $HOME. + +bb. Fixed `printf' to handle invalid floating point numbers better. + +cc. Temporary files are now created with random filenames, to improve security. + +dd. The readline initialization code now binds the custom bash functions and + key bindings after the readline defaults are set up. + +ee. Fixed the `source' builtin to no longer overwrite a shell function's + argument list, even if the sourced file changes the positional parameters. + +ff. A bug fix was made in the expansion of `$*' in contexts where it should + not be split, like assignment statements. + +gg. Fixed a bug in the parameter substring expansion to handle conditional + arithmetic expressions ( exp ? val1 : val2 ) without cutting the expression + off at the wrong `:'. + +hh. The `<>' redirection is no longer subject to the current setting of + `noclobber', as POSIX.2 specifies. + +ii. Fixed a bug in the conditional command parsing code that caused expressions + in parentheses to occasionally be parsed incorrectly. + +jj. Fixed a bug in the ((...)) arithmetic command to allow do...done or + {...} to follow the )) without an intervening list terminator. + +kk. `printf' now treats `\E' the same as `\e' when performing backslash escape + expansion for the `%b' format specifier. + +ll. When in POSIX mode, the shell no longer searches the current directory for + a file to be sourced with `.' or `source' if `.' is not in $PATH. + +mm. Interactive comments are no longer turned off when POSIX mode is disabled. + +nn. The UID, EUID, HOSTNAME variables are not set if they are in the shell's + environment when it starts up. + +oo. Fixed a bug in the `command' builtin so the effect of a command like + `command exec 4<file' is as if the `command' had been omitted. + +pp. ${foo[@]} and ${foo[*]} now work as in ksh93 if `foo' is not an array + variable. + +qq. ${#foo[X]}, where X is 0, @, or *, now work as in ksh93 if `foo' is not + an array variable. + +rr. The shell's idea of an absolute pathname now takes into account a + possible drive specification on Cygwin and other Windows systems. + +ss. Fixed a bug which caused incorrect parsing of some multi-character + constructs if they were split across input lines with backslash-newline + line continuation. + +tt. Fixed a bug that caused restricted shell mode to be set inappropriately + when trying to execute a shell script without a leading `#!'. + +uu. Shell function definitions no longer require that the body be a group + command ( {...} ), as POSIX.2 requires. + +vv. The `cd' and `pwd' builtins now process symlinks in pathnames internally + and should require many fewer calls to getcwd(). + +ww. Fixed a bug that caused a pipeline's process group to be set incorrectly + if one of the pipeline elements contained a command substitution. + +xx. Fixed a bug that caused core dumps when expanding the value of HISTIGNORE. + +yy. The output of `set' is now quoted using $'...' so invisible characters are + displayed as escape sequences. + +zz. Fixed the help text for `unset', since PATH and IFS may both be unset. + +aaa. The shell no longer puts directory names into the command hash table. + +bbb. Fixed a bug in `read' that caused it to occasionally free memory twice if + it was interrupted after reading a large amount of data. + +ccc. Assignment statements that attempt to assign values to readonly variables + now cause the command to return an error status. + +ddd. Fixed a bug that could cause incorrect output if a $(<file) construct was + interrupted. + +eee. GROUPS and FUNCNAME now return an error status when assignment is + attempted, but may be unset (in which case they lose their special + properties). In all respects except unsetting, they are readonly. + +fff. The string-to-integer conversion code now ignores trailing whitespace in + the string, even if strtol(3) does not. + +ggg. The tcsh magic-space function now does a better job of inserting the + space close to where the point was before the history expansion, rather + than just appending it. + +hhh. Fixed a bug which caused a file sourced from an interactive shell to + fill up the jobs table if it ran lots of jobs. + +iii. Fixed a bug in the parameter pattern substitution code to avoid infinite + recursion on zero-length matches. + +2. Changes to Readline + +a. When setting the terminal attributes on systems using `struct termio', + readline waits for output to drain before changing the attributes. + +b. A fix was made to the history word tokenization code to avoid attempts to + dereference a null pointer. + +c. Readline now defaults rl_terminal_name to $TERM if the calling application + has left it unset, and tries to initialize with the resultant value. + +d. Instead of calling (*rl_getc_function)() directly to get input in certain + places, readline now calls rl_read_key() consistently. + +e. Fixed a bug in the completion code that allowed a backslash to quote a + single quote inside a single-quoted string. + +f. rl_prompt is no longer assigned directly from the argument to readline(), + but uses memory allocated by readline. This allows constant strings to + be passed to readline without problems arising when the prompt processing + code wants to modify the string. + +g. Fixed a bug that caused non-interactive history searches to return the + wrong line when performing multiple searches backward for the same string. + +h. Many variables, function arguments, and function return values are now + declared `const' where appropriate, to improve behavior when linking with + C++ code. + +i. The control character detection code now works better on systems where + `char' is unsigned by default. + +j. The vi-mode numeric argument is now capped at 999999, just like emacs mode. + +k. The Function, CPFunction, CPPFunction, and VFunction typedefs have been + replaced with a set of specific prototyped typedefs, though they are + still in the readline header files for backwards compatibility. + +m. Nearly all of the (undocumented) internal global variables in the library + now have an _rl_ prefix -- there were a number that did not, like + screenheight, screenwidth, alphabetic, etc. + +n. The ding() convenience function has been renamed to rl_ding(), though the + old function is still defined for backwards compatibility. + +o. The completion convenience functions filename_completion_function, + username_completion_function, and completion_matches now have an rl_ + prefix, though the old names are still defined for backwards compatibility. + +p. The functions shared by readline and bash (linkage is satisfied from bash + when compiling with bash, and internally otherwise) now have an sh_ prefix. + +q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so + that the `soname' contains only the major version number rather than the + major and minor numbers. + +r. Fixed a redisplay bug that occurred when the prompt spanned more than one + physical line and contained invisible characters. + +3. New Features in Bash + +a. Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. + +b. The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. + +c. `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces + +4. New Features in Readline + +a. The blink timeout for paren matching is now settable by applications. + +b. _rl_executing_macro has been renamed to rl_executing_macro, which means + it's now part of the public interface. + +c. Readline has a new variable, rl_readline_state, which is a bitmap that + encapsulates the current state of the library; intended for use by + callbacks and hook functions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-release, +and the previous version, bash-2.04-beta5. + +1. Changes to Bash + +a. Better compile-time and configure-time checks for the necessity of + inet_aton(). + +b. A bug was fixed in the expansion of "${@:-}" when there are positional + parameters. + +c. A typo was fixed in the output of `complete'. + +d. The matches generated for a word by the `-W' argument to complete and + compgen are now matched against the word being completed, and only + matches are returned as the result. + +e. Some fixes were made for systems which do not restart read(2) when a + signal caught by bash is received. + +f. A bug was fixed which caused the umask to be set to 0 when an invalid + symbolic mode mask was parsed. + +g. Fixed a bug that could cause a core dump if a SIGCHLD was received while + performing an assignment statement using command substitution. + +h. Changed the word splitting function for programmable completion so cases + in which the cursor is between words are handled a bit better. + +2. Changes to Readline + +a. rl_funmap_names() is now documented. + +3. New Features in Bash + +a. The LC_NUMERIC variable is now treated specially, and used to set the + LC_NUMERIC locale category for number formatting, e.g., when `printf' + displays floating-point numbers. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta5, +and the previous version, bash-2.04-beta4. + +1. Changes to Bash + +a. A couple of changes were made to the Makefiles for easier building on + non-Unix systems. + +b. Fixed a bug where the current prompt would be set to $PS2 at startup. + +c. The shell script that tests an already-installed version was changed to + remove the directory it created its test programs in at exit. + +d. Several changes were made to the code that tokenizes an input line for + the programmable completion code. Shell metacharacters will now appear + as individual words in the word list passed to the completion functions. + Some of the example completion shell functions were changed to understand + redirection operators. + +e. A bug was fixed that, under obscure circumstances, could confuse the + parser when a shell function was run by the programmable completion code. + +f. A bug was fixed in the ulimit builtin for systems not using getrlimit(). + +g. The execution code now propagates the correct exit status back to the rest + of the code if the return value of a subshell command was being inverted. + Some new test cases for inverting return values with the `!' reserved + word have been added. + +h. Negative exponents in the arithmetic evaluation of v**e now return an + evaluation error. + +i. A bug that caused bash to check the wrong process in a pipeline for + abnormal termination (and consequently resetting the terminal attributes) + was fixed. + +j. Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was + executed. + +2. Changes to Readline + +1. Fixed a bug in a C preprocessor define that caused the keypad control + functions to be compiled out for all platforms except DJGPP. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta4, +and the previous version, bash-2.04-beta3. + +1. Changes to Bash + +a. A couple of changes were made to the redirection to attempt to avoid + race conditions and malicious file replacement. + +2. A change was made to the string evaluation code (used for command + substitution, `eval', and the `.' builtin) to fix an obscure core + dump on alpha machines. + +3. A bug that caused $LINENO to be wrong when executing arithmetic for + commands was fixed. + +4. A couple of memory leaks in the programmable completion code were fixed. + +5. A bug that could cause a core dump by freeing memory twice during a call + to `eval' if `set -u' had been enabled and an undefined variable was + referenced was fixed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta3, +and the previous version, bash-2.04-beta2. + +1. Changes to Bash + +a. Bash should run the appropriate startup files when invoked by ssh2. + +b. Fixed a bug in the parsing of conditional commands that could cause a + core dump. + +c. Fixed a bug in parsing job specifications that occasionally caused + core dumps when an out-of-range job was referenced. + +d. Fixed the `type' and `command' builtins to do better reporting of + commands that are not found in $PATH or the hash table. + +e. Fixed a POSIX.2 compliance problem in the command builtin -- commands + are supposed to be reported as full pathnames. + +f. The `echo' builtin now returns failure if a write error occurs. + +g. Fixed a bug which caused the locale to not be reset correctly when + LC_ALL was unset. + +h. Changed description of `getopts' in man page and reference manual to make + it clear that option characters may be characters other than letters. + +i. If the shell exits while in a function, make sure that any trap on EXIT + doesn't think the function is still executing. + +j. Bashbug now tries harder to find a usable editor if $EDITOR is not set, + rather than simply defaulting to `emacs'. + +k. Changes to the scripts that guess and canonicalize the system type, from + the latest `automake' distribution via Debian. + +l. When using named pipes for process substitution, make sure the file + descriptors opened for reading are set to non-blocking mode. + +m. Fixed a bug that caused termination of pipelines that are killed by a + signal to not be reported in some cases. + +n. When not in literal-history mode, shell comment lines are not added to + the history list. + +o. When running in POSIX.2 mode, bash no longer performs word splitting on + the expanded value of the word supplied as the filename argument to + redirection operators. + +p. The prompt string decoding code now backslash-quotes only characters that + are special within double quotes when expanding the \w and \W escape + sequences. + +q. Fixed a bug in the prompt decoding code that could cause a non-interactive + shell to seg fault if `\u' was used in PS4 and the shell was in xtrace + mode. + +r. Fixed a bug that caused function definitions to be printed with any + redirections that should be attached to the entire function before the + closing brace. + +s. Changed the tilde expansion code for Cygwin systems to avoid creating + pathnames beginning with `//' if $HOME == `/'. + +t. Fixed a couple of autoconf tests to avoid creating files with fixed names + in /tmp. + +u. The `trap' and `kill' builtins now know the names of the POSIX.1b real- + time signals on systems which support them. + +2. Changes to Readline + +a. Fixed a problem with the single-quote quoting function that could cause + buffer overflows. + +b. Fixed a bug that caused incorrect `stat characters' to be printed if + the files being completed were in the root directory and visible-stats + was enabled. + +3. New Features in Bash + +a. There is a new `rbash.1' manual page, from the Debian release. + +b. The `--enable-usg-echo-default' option to `configure' has been renamed to + `--enable-xpg-echo-default'. The old option is still there for backwards + compatibility. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta2, +and the previous version, bash-2.04-beta1. + +1. Changes to Bash + +a. Fixed a bug that could cause pipes to be closed inappropriately in + some obscure cases. + +b. Fixed a bug that caused creation of the exported environment to clobber + the current command string if there were any exported shell functions. + +c. Some changes were made to reduce bash's memory usage. + +d. Fixed a problem with programmable completion and filenames to be + completed containing quote characters. + +e. Changed the code the removes named pipes created for the <(...) and >(...) + expansions to defer removal until after any current shell function has + finished executing. + +f. Fixed a bug in `select' which caused it to not handle the `continue' + builtin correctly. + +g. Autoconf tests added for cygwin32 and mingw32. + +2. New Features in Bash + +a. The `--with-bash-malloc' configure option replaces `--with-gnu-malloc' + (which is still there for backwards compatibility). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-beta1, +and the previous version, bash-2.04-alpha1. + +1. Changes to Bash + +a. Fixed a bug in the programmable completion code that occurred when + trying to complete command lines containing a `;' or `@'. + +b. The file descriptor from which the shell is reading a script is now + moved to a file descriptor above the user-addressible range. + +c. Changes to `printf' so that it can handle integers beginning with 0 + or 0x as octal and hex, respectively. + +d. Fixes to the programmable completion code so it handles nonsense like + `compgen -C xyz' gracefully. + +e. The shell no longer modifies the signal handler for SIGPROF, allowing + profiling again on certain systems. + +f. The shell checks for a new window size, if the user has requested it, + after a process exits due to a signal. + +g. Fixed a bug with variables with null values in a program's temporary + environment and the bash getenv() replacement. + +h. `declare' and the other builtins that take variable assignments as + arguments now honor `set -a' and mark modified variables for export. + +i. Some changes were made for --dump-po-strings mode when writing strings + with embedded newlines. + +j. The code that caches export strings from the initial environment now + duplicates the string rather than just pointing into the environment. + +k. The filename completion quoting code now uses single quotes by default + if the filename being completed contains newlines, since \<newline> + has a special meaning to the parser. + +l. Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and + u_int32_t, respectively to avoid conflicts on certain Unix versions. + +m. Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x. + +n. Fixed a problem with hostname-to-ip-address translation in the + /dev/(tcp|udp)/hostname/port redirection code. + +o. The texinfo manual has been reorganized slightly. + +p. Filename generation (globbing) range comparisons in bracket expressions + no longer use strcoll(3) even if it is available, since it has unwanted + effects in certain locales. + +q. Fixed a cosmetic problem in the source that caused the shell to not + compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was. + +r. Fixed a bug in the here-document code tripped when the file descriptor + opened to the file containing the text of the here document was the + same as a redirector specified by the user. + +s. Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline' + in `time ! pipeline'. + +t. Fixed a bug with the `wait' builtin which manifested itself when an + interrupt was received while the shell was waiting for asynchronous + processes in a shell script. + +u. Fixed the DEBUG trap code so that it has the correct value of $?. + +v. Fixed a bug in the parameter pattern substitution code that could cause + the shell to attempt to free unallocated memory if the pattern started + with `/' and an expansion error occurs. + +w. Fixed a bug in the positional parameter substring code that could + cause the shell to loop freeing freed memory. + +x. Fixed a bug in the positional parameter pattern substitution code so + that it correctly handles null replacement strings with a pattern + string prefixed with `%' or `#'. + +y. The shell no longer attempts to import functions from the environment if + started with `-n'. + +z. Fixed a bug that caused `return' in a command substitution executed in + a shell function to return from the function in a subshell and continue + execution. + +aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell + is restricted. + +bb. The wait* job control functions now behave better if called when there + are no unwaited-for children. + +cc. Command substitution no longer unconditionally disables job control in + the subshell started to run the command. + +dd. A bug was fixed that occasionally caused traps to mess up the parser + state. + +ee. `bashbug' now honors user headers in the mail message it sends. + +ff. A bug was fixed that caused the `:p' history modifier to not print the + history expansion if the `histverify' option was set. + +2. Changes to Readline + +a. Fixed a bug in the redisplay code for lines with more than 256 line + breaks. + +b. A bug was fixed which caused invisible character markers to not be + stripped from the prompt string if the terminal was in no-echo mode. + +c. Readline no longer tries to get the variables it needs for redisplay + from the termcap entry if the calling application has specified its + own redisplay function. Readline treats the terminal as `dumb' in + this case. + +d. Fixes to the SIGWINCH code so that a multiple-line prompt with escape + sequences is redrawn correctly. + +3. New Features in Bash + +a. `bashbug' now accepts `--help' and `--version' options. + +b. There is a new `xpg_echo' option to `shopt' that controls the behavior + of echo with respect to backslash-escaped characters at runtime. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-alpha1, +and the previous version, bash-2.04-devel. + +1. Changes to Bash + +a. Fixed a bug that could cause core dumps when performing substring + expansion. + +b. Shared object configuration changes for: Solaris, OSF/1 + +c. The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities + for pathname expansion now understands GLOBIGNORE. + +d. The code that implements `eval' was changed to save the value of the + current prompt, so an eval in a shell function called by the programmable + completion code will not change the prompt to $PS2. + +e. Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to + config-top.h. If this is defined, all login shells will read the + startup files, not just interactive and non-interactive started with + the `--login' option. + +f. Fixed a bug that caused the expansion code to occasionally dump core if + IFS contained characters > 128. + +g. Fixed a problem with the grammar so that a newline is not required + after the `))' in the new-style arithmetic for statement; a semicolon + may be used as expected. + +h. Variable indirection may now reference the shell's special variables. + +i. The $'...' and $"..." constructs are now added to the history correctly + if they contain newlines and command-oriented history is enabled. + +j. It is now an error to try to assign a value to a function-local copy + of a readonly shell variable (declared with the `local' builtin). + +2. Changes to Readline + +a. The history file code now uses O_BINARY mode when reading and writing + the history file on cygwin32. + +3. New Features in Bash + +a. A new programmable completion facility, with two new builtin commands: + complete and compgen. + +b. configure has a new option, `--enable-progcomp', to compile in the + programmable completion features (enabled by default). + +c. `shopt' has a new option, `progcomp', to enable and disable programmable + completion at runtime. + +d. Unsetting HOSTFILE now clears the list of hostnames used for completion. + +4. New Features in Readline + +a. A new variable, rl_gnu_readline_p, always 1. The intent is that an + application can verify whether or not it is linked with the `real' + readline library or some substitute. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.04-devel, +and the previous version, bash-2.03-release. + +1. Changes to Bash + +a. System-specific configuration and source changes for: Interix, Rhapsody + +b. Fixed a bug in execute_cmd.c that resulted in a compile-time error if + JOB_CONTROL was not defined. + +c. An obscure race condition in the trap code was fixed. + +d. The string resulting from $'...' is now requoted to avoid any further + expansion. + +e. The $'...' quoting syntax now allows backslash to escape a single quote, + for ksh-93 compatibility. + +f. The $"..." quoting syntax now escapes backslashes and double quotes in + the translated string when displaying them with the --dump-po-strings + option. + +g. `echo -e' no longer converts \' to '. + +h. Fixes were made to the extended globbing code to handle embedded (...) + patterns better. + +i. Some improvements were made to the code that unsets `nodelay' mode on + the file descriptor from which bash is reading input. + +j. Some changes were made to the replacement termcap library for better + operation on MS-DOS. + +k. Some changes were made to the tilde expansion code to handle backslash + as a pathname separator on MS-DOS. + +l. The source has been reorganized a little bit -- there is now an `include' + subdirectory, and lib/posixheaders has been removed. + +m. Improvements were made to the `read' builtin so that it makes many + fewer read(2) system calls. + +n. The expansion of $- will include `c' and `s' when those options are + supplied at shell invocation. + +o. Several improvments were made to the completion code: variable completion + now works better when there are unterminated expansions, command + completion understands quotes better, and completion now works in certain + unclosed $(... constructs. + +p. The arithmetic expansion code was fixed to not need the value of a + variable being assigned a value (fixes the "ss=09; let ss=10" bug). + +q. Some changes were made to make exported environment creation faster. + +r. The html documentation will be installed into $(htmldir) if that variable + has a value when `make install' is run. + +s. Fixed a bug that would cause the bashrc file to be sourced inappropriately + when bash is started by sshd. + +t. The SSH_CLIENT environment variable is no longer auto-exported. + +u. A bug that caused redirections with (...) subshells to be performed in + the wrong order was fixed. + +v. A bug that occasionally caused inappropriate expansion of assignment + statements in compound array assignments was fixed. + +w. The code that parses the words in a compound array assignment was + simplified considerably and should work better now. + +x. Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant + when a user attempts to retrieve the status of a terminated background + process. + +y. Fixes to the `printf' builtin so that it doesn't try to expand all + backslash escape sequences in the format string before parsing it for + % format specifiers. + +2. Changes to Readline + +a. The history library tries to truncate the history file only if it is a + regular file. + +b. A bug that caused _rl_dispatch to address negative array indices on + systems with signed chars was fixed. + +c. rl-yank-nth-arg now leaves the history position the same as when it was + called. + +d. Changes to the completion code to handle MS-DOS drive-letter:pathname + filenames. + +e. Completion is now case-insensitive by default on MS-DOS. + +f. Fixes to the history file manipulation code for MS-DOS. + +g. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS. + +h. Some fixes were made to the redisplay code for better operation on MS-DOS. + +i. The quoted-insert code will now insert tty special chars like ^C. + +j. A bug was fixed that caused the display code to reference memory before + the start of the prompt string. + +k. More support for __EMX__ (OS/2). + +l. A bug was fixed in readline's signal handling that could cause infinite + recursion in signal handlers. + +m. A bug was fixed that caused the point to be less than zero when rl_forward + was given a very large numeric argument. + +n. The vi-mode code now gets characters via the application-settable value + of rl_getc_function rather than calling rl_getc directly. + +3. New Features in Bash + +a. The history builtin has a `-d offset' option to delete the history entry + at position `offset'. + +b. The prompt expansion code has two new escape sequences: \j, the number of + active jobs; and \l, the basename of the shell's tty device name. + +c. The `bind' builtin has a new `-x' option to bind key sequences to shell + commands. + +d. There is a new shell option, no_empty_command_completion, which, when + enabled, disables command completion when TAB is typed on an empty line. + +e. The `help' builtin has a `-s' option to just print a builtin's usage + synopsys. + +f. There are several new arithmetic operators: id++, id-- (variable + post-increment/decrement), ++id, --id (variabl pre-increment/decrement), + expr1 , expr2 (comma operator). + +g. There is a new ksh-93 style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done + +h. The `read' builtin has a number of new options: + -t timeout only wait timeout seconds for input + -n nchars only read nchars from input instead of a full line + -d delim read until delim rather than newline + -s don't echo input chars as they are read + +i. The redirection code now handles several filenames specially: + /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or + not they are present in the file system. + +j. The redirection code now recognizes pathnames of the form + /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket + of the appropriate type to the specified port on the specified host. + +k. The ksh-93 ${!prefix*} expansion, which expands to the names of all + shell variables whose names start with prefix, has been implemented. + +l. There is a new dynamic variable, FUNCNAME, which expands to the name of + a currently-executing function. Assignments to FUNCNAME have no effect. + +m. The GROUPS variable is no longer readonly; assignments to it are silently + discarded. This means it can be unset. + +4. New Features in Readline + +a. Parentheses matching is now always compiled into readline, and enabled + or disabled when the value of the `blink-matching-paren' variable is + changed. + +b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename. + +c. MS-DOS systems now use ~/_history as the default history file. + +d. history-search-{forward,backward} now leave the point at the end of the + line when the string to search for is empty, like + {reverse,forward}-search-history. + +e. history-search-{forward,backward} now leave the last history line found + in the readline buffer if the second or subsequent search fails. + +f. New function for use by applications: rl_on_new_line_with_prompt, used + when an application displays the prompt itself before calling readline(). + +g. New variable for use by applications: rl_already_prompted. An application + that displays the prompt itself before calling readline() must set this to + a non-zero value. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-release, +and the previous version, bash-2.03-beta2. + +1. Changes to Bash + +a. A file descriptor leak in the `fc' builtin was fixed. + +b. A bug was fixed in the `read' builtin that caused occasional spurious + failures when using `read -e'. + +c. The version code needed to use the value of the cpp variable + CONF_MACHTYPE rather than MACHTYPE. + +d. A new test was added to exercise the command printing and copying code. + +e. A bug was fixed that caused `time' to be recognized as a reserved word + if it was the first pattern in a `case' statement pattern list. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-beta2, +and the previous version, bash-2.03-beta1. + +1. Changes to Bash + +a. Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2. + +b. config.{guess,sub} support added for the NEC SX4. + +c. Changed some of the cross-compiling sections of the configure macros in + aclocal.m4 so that configure won't abort. + +d. Slight changes to how the HTML versions of the bash and readline manuals + are generated. + +e. Fixed conditional command printing to avoid interpreting printf `%'-escapes + in arguments to [[. + +f. Don't include the bash malloc on all variants of the alpha processor. + +g. Changes to configure to make --enable-profiling work on Solaris 2.x. + +h. Fixed a bug that manifested itself when shell functions were called + between calls to `getopts'. + +i. Fixed pattern substitution so that a bare `#'as a pattern causes the + replacement string to be prefixed to the search string, and a bare + `%' causes the replacement string to be appended to the search string. + +j. Fixed a bug in the command execution code that caused child processes + to occasionally have the wrong value for $!. + +2. Changes to Readline + +a. Added code to the history library to catch history substitutions using + `&' without a previous history substitution or search having been + performed. + +3. New Features in Bash + +4. New Features in Readline + +a. New bindable variable: `isearch-terminators'. + +b. New bindable function: `forward-backward-delete-char' (unbound by default). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-beta1, +and the previous version, bash-2.03-alpha. + +1. Changes to Bash + +a. A change was made to the help text for `{...}' to make it clear that a + semicolon is required before the closing brace. + +b. A fix was made to the `test' builtin so that syntax errors cause test + to return an exit status > 1. + +c. Globbing is no longer performed on assignment statements that appear as + arguments to `assignment builtins' such as `export'. + +d. System-specific configuration changes were made for: Rhapsody, + AIX 4.2/gcc, BSD/OS 4.0. + +e. New loadable builtins: ln, unlink. + +f. Some fixes were made to the globbing code to handle extended glob patterns + which immediately follow a `*'. + +g. A fix was made to the command printing code to ensure that redirections + following compound commands have a space separating them from the rest + of the command. + +h. The pathname canonicalization code was changed to produce fewer leading + `//' sequences, since those are interpreted as network file system + pathnames on some systems. + +i. A fix was made so that loops containing `eval' commands in commands passed + to `bash -c' would not exit prematurely. + +j. Some changes were made to the job reaping code when the shell is not + interactive, so the shell will retain exit statuses longer for examination + by `wait'. + +k. A fix was made so that `jobs | command' works again. + +l. The erroneous compound array assignment var=((...)) is now a syntax error. + +m. A change was made to the dynamic loading code in `enable' to support + Tenon's MachTen. + +n. A fix was made to the globbing code so that extended globbing patterns + will correctly match `.' in a bracket expression. + +2. Changes to Readline + +a. A fix was made to the completion code in which a typo caused the wrong + value to be passed to the function that computed the longest common + prefix of the list of matches. + +b. The completion code now checks the value of rl_filename_completion_desired, + which is set by application-supplied completion functions to indicate + that filename completion is being performed, to decide whether or not to + call an application-supplied `ignore completions' function. + +3. New Features in Bash + +a. A change was made to the startup file code so that any shell begun with + the `--login' option, even non-interactive shells, will source the login + shell startup files. + +4. New Features in Readline + +a. A new variable, rl_erase_empty_line, which, if set by an application using + readline, will cause readline to erase, prompt and all, lines on which the + only thing typed was a newline. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.03-alpha, +and the previous version, bash-2.02.1-release. + +1. Changes to Bash + +a. System-specific configuration changes were made for: Irix 6.x, Unixware 7. + +b. The texi2dvi and texi2html scripts were updated to the latest versions + from the net. + +c. The configure tests that determine which native type is 32 bits were + changed to not require a compiled program. + +d. Fixed a bug in shell_execve that could cause memory to be freed twice + after a failed exec. + +e. The `printf' test uses `diff -a' if it's available to prevent confusion + due to the non-ascii output. + +f. Shared object configuration is now performed by a shell script, + support/shobj-conf, which generates values to be substituted into + makefiles by configure. + +g. Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a + return value. + +h. Changes were made to `ulimit' to work around HPUX 9.x's peculiar + handling of RLIMIT_FILESIZE. + +i. Some new loadable builtins were added: id, printenv, sync, whoami, push, + mkdir. `pushd', `popd', and `dirs' can now be built as regular or + loadable builtins from the same source file. + +j. Changes were made to `printf' to handle NUL bytes in the expanded format + string. + +k. The various `make clean' Makefile targets now descend into lib/sh. + +l. The `type' builtin was changed to use the internal `getopt' so that things + like `type -ap' work as expected. + +m. There is a new configuration option, --with-installed-readline, to link + bash with a locally-installed version of readline. Only readline version + 4.0 and later releases can support this. Shared and static libraries + are supported. The installed include files are used. + +n. There is a new autoconf macro used to find which basic type is 64 bits. + +o. Dynamic linking and loadable builtins should now work on SCO 3.2v5*, + AIX 4.2 with gcc, Unixware 7, and many other systems using gcc, where + the `-shared' options works correctly. + +p. A bug was fixed in the bash filename completion code that caused memory to + be freed twice if a directory name containing an unset variable was + completed and the -u option was set. + +q. The prompt expansion code now quotes the `$' in the `\$' expansion so it + is not processed by subsequent parameter expansion. + +r. Fixed a parsing bug that caused a single or double quote after a `$$' to + trigger ANSI C expansion or locale translation. + +s. Fixed a bug in the globbing code that caused quoted filenames containing + no globbing characters to sometimes be incorrectly expanded. + +t. Changes to the default prompt strings if prompt string decoding is not + compiled into the shell. + +u. Added `do', `then', `else', `{', and `(' to the list of keywords that may + precede the `time' reserved word. + +v. The shell may now be cross-built for BeOS as well as cygwin32. + +w. The conditional command execution code now treats `=' the same as `==' + for deciding when to perform pattern matching. + +x. The `-e' option no longer causes the shell to exit if a command exits + with a non-zero status while running the startup files. + +y. The `printf' builtin no longer dumps core if a modifier is supplied in + the format string without a conversion character (e.g. `%h'). + +z. Array assignments of the form a=(...) no longer show up in the history + list. + +aa. The parser was fixed to obey the POSIX.2 rules for finding the closing + `}' in a ${...} expression. + +bb. The history file is now opened with mode 0600 rather than 0666, so bash + no longer relies on the user's umask being set appropriately. + +cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now + relies on proper behavior from the C library. + +dd. Minor changes were made to allow quoted variable expansions using + ${...} to be completed correctly if there is no closing `"'. + +ee. Changes were made to builtins/Makefile.in so that configuring the shell + with `--enable-profiling' works right and builtins/mkbuiltins is + generated. + +2. Changes to Readline + +a. The version number is now 4.0. + +b. There is no longer any #ifdef SHELL code in the source files. + +c. Some changes were made to the key binding code to fix memory leaks and + better support Win32 systems. + +d. Fixed a silly typo in the paren matching code -- it's microseconds, not + milliseconds. + +e. The readline library should be compilable by C++ compilers. + +f. The readline.h public header file now includes function prototypes for + all readline functions, and some changes were made to fix errors in the + source files uncovered by the use of prototypes. + +g. The maximum numeric argument is now clamped at 1000000. + +h. Fixes to rl_yank_last_arg to make it behave better. + +i. Fixed a bug in the display code that caused core dumps if the prompt + string length exceeded 1024 characters. + +j. The menu completion code was fixed to properly insert a single completion + if there is only one match. + +k. A bug was fixed that caused the display code to improperly display tabs + after newlines. + +3. New Features in Bash + +a. New `shopt' option, `restricted_shell', indicating whether or not the + shell was started in restricted mode, for use in startup files. + +b. Filename generation is now performed on the words between ( and ) in + array assignments (which it probably should have done all along). + +c. OLDPWD is now auto-exported, as POSIX.2 seems to require. + +d. ENV and BASH_ENV are read-only variables in a restricted shell. + +4. New Features in Readline + +a. Many changes to the signal handling: + o Readline now catches SIGQUIT and cleans up the tty before returning; + o A new variable, rl_catch_signals, is available to application writers + to indicate to readline whether or not it should install its own + signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, + SIGTTIN, and SIGTTOU; + o A new variable, rl_catch_sigwinch, is available to application + writers to indicate to readline whether or not it should install its + own signal handler for SIGWINCH, which will chain to the calling + applications's SIGWINCH handler, if one is installed; + o There is a new function, rl_free_line_state, for application signal + handlers to call to free up the state associated with the current + line after receiving a signal; + o There is a new function, rl_cleanup_after_signal, to clean up the + display and terminal state after receiving a signal; + o There is a new function, rl_reset_after_signal, to reinitialize the + terminal and display state after an application signal handler + returns and readline continues + +b. There is a new function, rl_resize_terminal, to reset readline's idea of + the screen size after a SIGWINCH. + +c. New public functions: rl_save_prompt and rl_restore_prompt. These were + previously private functions with a `_' prefix. + +d. New function hook: rl_pre_input_hook, called just before readline starts + reading input, after initialization. + +e. New function hook: rl_display_matches_hook, called when readline would + display the list of completion matches. The new function + rl_display_match_list is what readline uses internally, and is available + for use by application functions called via this hook. + +f. New bindable function, delete-char-or-list, like tcsh. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02.1-release, +and the previous version, bash-2.02-release. + +1. Changes to Bash + +a. A bug that caused the bash readline support to not compile unless aliases + and csh-style history were configured into the shell was fixed. + +b. Fixed a bug that could cause a core dump when here documents contained + more than 1000 characters. + +c. Fixed a bug that caused a CDPATH entry of "" to not be treated the same + as the current directory when in POSIX mode. + +d. Fixed an alignment problem with the memory returned by the bash malloc, + so returned memory is now 64-bit aligned. + +e. Fixed a bug that caused command substitutions executed within pipelines + to put the terminal in the wrong process group. + +f. Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop, + Unixware 2, and Unixware 7. + +g. Fixes to the pattern matching code to make it work correctly for eight-bit + characters. + +h. Fixed a problem that occasionally caused the shell to display the wrong + value for the new working directory when changing to a directory found + in $CDPATH when in physical mode. + +i. Fixed a bug that caused core dumps when using conditional commands in + shell functions. + +j. Fixed a bug that caused the printf builtin to loop forever if the format + string did not consume any of the arguments. + +k. Fixed a bug in the parameter expansion code that caused "$@" to be + incorrectly split if $IFS did not contain a space character. + +l. Fixed a bug that could cause a core dump when completing hostnames if + the number of matching hostnames was an exact multiple of 16. + +m. Fixed a bug that caused the shell to fork too early when a command + such as `%2 &' was given. + +2. Changes to Readline + +a. Fixed a problem with redisplay that showed up when the prompt string was + longer than the screen width and the prompt contained invisible characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-release, +and the previous version, bash-2.02-beta2. + +1. Changes to Bash + +a. A bug was fixed that caused the terminal process group to be set + incorrectly when performing command substitution of builtins in a + pipeline. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-beta2, +and the previous version, bash-2.02-beta1. + +1. Changes to Bash + +a. Attempting to `wait' for stopped jobs now generates a warning message. + +b. Pipelines which exit due to SIGPIPE in non-interactive shells are now + not reported if the shell is compiled -DDONT_REPORT_SIGPIPE. + +c. Some changes were made to builtins/psize.sh and support/bashbug.sh to + attempt to avoid some /tmp file races and surreptitious file + substitutions. + +d. Fixed a bug that caused the shell not to compile if configured with + dparen arithmetic but without aliases. + +e. Fixed a bug that caused the input stream to be switched when assigning + empty arrays with `bash -c'. + +f. A bug was fixed in the readline expansion glue code that caused bash to + dump core when expanding lines with an unclosed single quote. + +g. A fix was made to the `cd' builtin so that using a non-empty directory + from $CDPATH results in an absolute pathname of the new current working + directory to be displayed after the current directory is changed. + +h. Fixed a bug in the variable assignment code that caused the shell to + dump core when referencing an unset variable with `set -u' enabled in + an assignment statement preceding a command. + +i. Fixed a bug in the exit trap code that caused reserved words to not be + recognized under certain circumstances. + +j. Fixed a bug in the parameter pattern substitution code so that quote + removal is performed. + +k. The shell should now configure correctly on Apple Rhapsody systems. + +l. The `kill' builtin now prints a usage message if it is not passed any + arguments. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-beta1, +and the previous version, bash-2.02-alpha1. + +1. Changes to Bash + +a. A few compilation bugs were fixed in the new extended globbing code. + +b. Executing arithmetic commands now sets the command name to `((' so + error messages look right. + +c. Fixed some build problems with various configuration options. + +d. The `printf' builtin now aborts immediately if an illegal format + character is encountered. + +e. The code that creates here-documents now behaves better if the file it's + trying to create already exists for some reason. + +f. Fixed a problem with the extended globbing code that made patterns like + `x+*' expand incorrectly. + +g. The prompt string expansion code no longer quotes tildes with backslashes. + +h. The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in + the presence of lstat(2) failures. + +i. Fixed a bug with strsub() that caused core dumps when executing `fc -s'. + +j. The mail checking code now ensures that it has a valid default mailpath. + +k. A bug was fixed that caused local variables to be unset inappropriately + when sourcing a script from within another sourced script. + +l. A bug was fixed in the history saving code so that functions are saved + in the history list correctly if `cmdhist' is enabled, but `lithist' + is not. + +m. A bug was fixed that caused printf overflows when displaying error + messages. + +n. It should be easier to build the loadble builtins in examples/loadables, + though some manual editing of the generated Makefile is still required. + +o. The user's primary group is now always ${GROUPS[0]}. + +p. Some updates were made to support/config.guess from the GNU master copy. + +q. Some changes were made to the autoconf support for Solaris 2.6 large + files. + +r. The `command' builtins now does the right thing when confstr(3) cannot + find a value for _CS_PATH. + +s. Extended globbing expressions like `*.!(c)' are not history expanded if + `extglob' is enabled. + +t. Using the `-P' option to `cd' will force the value that is assigned to + PWD to not contain any symbolic links. + +2. Changes to Readline + +a. The code that prints completion listings now behaves better if one or + more of the filenames contains non-printable characters. + +b. The time delay when showing matching parentheses is now 0.5 seconds. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.02-alpha1, +and the previous version, bash-2.01.1-release. + +1. Changes to Bash + +a. OS-specific configuration changes for: BSD/OS 3.x, Minix 2.x, + Solaris 2.6, SINIX SVR4. + +b. Changes were made to the generated `info' files so that `install-info' + works correctly. + +c. PWD is now auto-exported. + +d. A fix was made to the pipeline code to make sure that the shell forks + to execute simple commands consisting solely of assignment statements. + +e. Changes to the test suite for systems with 14-character filenames. + +f. The default sizes of some internal hash tables have been made smaller + to reduce the shell's memory footprint. + +g. The `((...))' arithmetic command is now executed directly instead of + being translated into `let "..."'. + +h. Fixes were made to the expansion code so that "$*", "$@", "${array[@]}", + and "${array[@]}" expand correctly when IFS does not contain a space + character, is unset, or is set to NULL. + +i. The indirect expansion code (${!var}) was changed so that the only + valid values of `var' are variable names, positional parameters, `#', + `@', and `*'. + +j. An arithmetic expression error in a $((...)) expansion now causes a + non-interactive shell running in posix mode to exit. + +k. Compound array assignment now splits the words within the parentheses + on shell metacharacters like the parser would before expansing them + and performing the assignment. This is for compatibility with ksh-93. + +l. The internal shell backslash-quoting code (used in the output of `set' + and completion) now quotes tildes if they appear at the start of the + string or after a `=' or `:'. + +m. A couple of bugs with `shopt -o' were fixed. + +n. `bash +o' now displays the same output as `set +o' before starting an + interactive shell. + +o. A bug that caused command substitution and the `eval' builtin to + occasionally free memory twice when an error was encountered was fixed. + +p. The filename globbing code no longer requires read permission for a + directory when the filename to be matched does not contain any globbing + characters, as POSIX.2 specifies. + +q. A bug was fixed so that the job containing the last asynchronous + process is not removed from the job table until a `wait' is executed + for that process or another asynchronous process is started. This + satisfies a POSIX.2 requirement. + +r. A `select' bug was fixed so that a non-numeric user response is treated + the same as a numeric response that is out of range. + +s. The shell no longer parses the value of SHELLOPTS from the environment + if it is restricted, running setuid, or running in `privileged mode'. + +t. Fixes were made to enable large file support on systems such as + Solaris 2.6, where the size of a file may be larger than can be held + in an `int'. + +u. The filename hashing code was fixed to not add `./' to the beginning of + filenames which already begin with `./'. + +v. The configure script was changed so that the GNU termcap library is not + compiled in if `prefer-curses' has been specified. + +w. HISTCONTROL and HISTIGNORE are no longer applied to the second and + subsequent lines of a multi-line command. + +x. A fix was made to `disown' so that it does a better job of catching + out-of-range jobs. + +y. Non-interactive shells no longer report the status of processes terminated + due to SIGINT, even if the standard output is a terminal. + +z. A bug that caused the output of `jobs' to have extra carriage returns + was fixed. + +aa. A bug that caused PIPESTATUS to not be set when builtins or shell + functions were executed in the foreground was fixed. + +bb. Bash now attempts to detect when it is being run by sshd, and treats + that case identically to being run by rshd. + +cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell + options was changed was fixed. + +dd. The `kill' builtin now disallows empty or missing process id arguments + instead of treating them as identical to `0', which means the current + process. + +ee. `var=value declare -x var' now behaves identically to + `var=value export var'. Similarly for `var=value declare -r var' and + `var=value readonly var'. + +ff. A few memory leaks were fixed. + +gg. `alias' and `unalias' now print error messages when passed an argument + that is not an alias for printing or deletion, even when the shell is + not interactive, as POSIX.2 specifies. + +hh. `alias' and `alias -p' now return a status of 0 when no aliases are + defined, as POSIX.2 specifes. + +ii. `cd -' now prints the pathname of the new working directory if the shell + is interactive. + +jj. A fix was made so that the code that binds $PWD now copes with getcwd() + returning NULL. + +kk. `unset' now checks whether or not a function name it's trying to unset + is a valid shell identifier only when the shell is running in posix mode. + +ll. A change was made to the code that generates filenames for here documents + to make them less prone to name collisions. + +mm. The parser was changed so that `time' is recognized as a reserved word + only at the beginning of a pipeline. + +nn. The pathname canonicalization code was changed so that `//' is converted + into `/', but all other pathnames beginning with `//' are left alone, as + POSIX.2 specifies. + +oo. The `logout' builtin will no longer exit a non-interactive non-login + shell. + +2. Changes to Readline + +a. Fixed a problem in the readline test program rltest.c that caused a core + dump. + +b. The code that handles parser directives in inputrc files now displays + more error messages. + +c. The history expansion code was fixed so that the appearance of the + history comment character at the beginning of a word inhibits history + expansion for that word and the rest of the input line. + +3. New Features in Bash + +a. A new version of malloc, based on the older GNU malloc, that has many + changes, is more page-based, is more conservative with memory usage, + and does not `orphan' large blocks when they are freed. + +b. A new version of gmalloc, based on the old GLIBC malloc, with many + changes and range checking included by default. + +c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic + Regular Expression matching, including character classes, collating + symbols, equivalence classes, and support for case-insensitive pattern + matching. + +d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been + implemented, controlled by a new `shopt' option, `extglob'. + +e. There is a new ksh-like `[[' compound command, which implements + extended `test' functionality. + +f. There is a new `printf' builtin, implemented according to the POSIX.2 + specification. + +g. There is a new feature for command substitution: $(< filename) now expands + to the contents of `filename', with any trailing newlines removed + (equivalent to $(cat filename)). + +h. There are new tilde prefixes which expand to directories from the + directory stack. + +i. There is a new `**' arithmetic operator to do exponentiation. + +j. There are new configuration options to control how bash is linked: + `--enable-profiling', to allow bash to be profiled with gprof, and + `--enable-static-link', to allow bash to be linked statically. + +k. There is a new configuration option, `--enable-cond-command', which + controls whether or not the `[[' command is included. It is on by + default. + +l. There is a new configuration option, `--enable-extended-glob', which + controls whether or not the ksh extended globbing feature is included. + It is enabled by default. + +m. There is a new configuration #define in config.h.top that, when enabled, + will cause all login shells to source /etc/profile and one of the user- + specific login shell startup files, whether or not the shell is + interactive. + +n. There is a new invocation option, `--dump-po-strings', to dump + a shell script's translatable strings ($"...") in GNU `po' format. + +o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive + pattern matching when globbing filenames and using the `case' construct. + +p. There is a new `shopt' option, `huponexit', which, when enabled, causes + the shell to send SIGHUP to all jobs when an interactive login shell + exits. + +q. `bind' has a new `-u' option, which takes a readline function name as an + argument and unbinds all key sequences bound to that function in a + specified keymap. + +r. `disown' now has `-a' and `-r' options, to limit operation to all jobs + and running jobs, respectively. + +s. The `shopt' `-p' option now causes output to be displayed in a reusable + format. + +t. `test' has a new `-N' option, which returns true if the filename argument + has been modified since it was last accessed. + +u. `umask' now has a `-p' option to print output in a reusable format. + +v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...' + translation code. It expands to the character whose ascii code is NNN + in hexadecimal. + +w. The prompt string expansion code has a new `\r' escape sequence. + +x. The shell may now be cross-compiled for the CYGWIN32 environment on + a Unix machine. + +4. New Features in Readline + +a. There is now an option for `iterative' yank-last-arg handline, so a user + can keep entering `M-.', yanking the last argument of successive history + lines. + +b. New variable, `print-completions-horizontally', which causes completion + matches to be displayed across the screen (like `ls -x') rather than up + and down the screen (like `ls'). + +c. New variable, `completion-ignore-case', which causes filename completion + and matching to be performed case-insensitively. + +d. There is a new bindable command, `magic-space', which causes history + expansion to be performed on the current readline buffer and a space to + be inserted into the result. + +e. There is a new bindable command, `menu-complete', which enables tcsh-like + menu completion (successive executions of menu-complete insert a single + completion match, cycling through the list of possible completions). + +f. There is a new bindable command, `paste-from-clipboard', for use on Win32 + systems, to insert the text from the Win32 clipboard into the editing + buffer. + +g. The key sequence translation code now understands printf-style backslash + escape sequences, including \NNN octal escapes. These escape sequences + may be used in key sequence definitions or macro values. + +h. An `$include' inputrc file parser directive has been added. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01.1-release, +and the previous version, bash-2.01-release. + +1. Changes to Bash + +a. The select command was fixed to check the validity of the user's + input more strenuously. + +b. A bug was fixed that prevented `time' from timing commands correctly + when supplied as an argument to `bash -c'. + +c. A fix was made to the mail checking code to keep from adding the same + mail file to the list of files to check multiple times when parsing + $MAILPATH. + +d. Fixed an off-by-one error in the tilde expansion library. + +e. When using the compound array assignment syntax, the old value of + the array is cleared before assigning the new value. + +f. Fixed a bug that could cause a core dump when a trap handler was reset + to the default in the trap command associated with that signal. + +g. Fixed a bug in the locale code that occurred when assigning a value + to LC_ALL. + +h. A change was made to the parser so that words of the form xxx=(...) + are not considered compound assignment statements unless there are + characters before the `='. + +i. A fix was made to the command tracing code to correctly quote each + word of output. + +j. Some changes were made to the bash-specific autoconf tests to make them + more portable. + +k. Completion of words with globbing characters now correctly quotes the + result. + +l. The directory /var/spool/mail is now preferred to /usr/spool/mail when + configure is deciding on the default mail directory. + +m. The brace completion code was fixed to not quote the `{' and `}'. + +n. Some fixes were made to make $RANDOM more random in subshells. + +o. System-specific changes were made to configure for: SVR4.2 + +p. Changes were made so that completion of words containing globbing chars + substitutes the result only if a single filename was matched. + +q. The window size is now recomputed after a job is stopped with SIGTSTP if + the user has set `checkwinsize' with `shopt'. + +r. When doing substring expansion, out-of-range substring specifiers now + cause nothing to be substituted rather than an expansion error. + +s. A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' -- + only `EXIT' and `DEBUG' are accepted. + +t. The display of trapped signals now uses the signal number if signals + for which bash does not know the name are trapped. + +u. A fix was made so that `bash -r' does not turn on restricted mode until + after the startup files are executed. + +v. A bug was fixed that occasionally caused a core dump when a variable + found in the temporary environment of export/declare/readonly had a + null value. + +w. A bug that occasionally caused unallocated memory to be passed to free() + when doing arithmetic substitution was fixed. + +x. A bug that caused a buffer overrun when expanding a prompt string + containing `\w' and ${#PWD} exceeded PATH_MAX was fixed. + +y. A problem with the completion code that occasionally caused it to + refer to a character before the beginning of the readline line buffer + was fixed. + +z. A bug was fixed so that the `read' builtin restarts reads when + interrupted by signals other than SIGINT. + +aa. Fixed a bug that caused a command to be freed twice when there was + an evaluation error in the `eval' command. + +2. Changes to Readline + +a. Added a missing `extern' to a declaration in readline.h that kept + readline from compiling cleanly on some systems. + +b. The history file is now opened with mode 0600 when it is written for + better security. + +c. Changes were made to the SIGWINCH handling code so that prompt redisplay + is done better. + +d. ^G now interrupts incremental searches correctly. + +e. A bug that caused a core dump when the set of characters to be quoted + when completing words was empty was fixed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-release, +and the previous version, bash-2.01-beta2. + +1. Changes to Bash + +a. The `distclean' target should remove the `printenv' executable if it + has been created. + +b. The test suite was changed slightly to ensure that the error messages + are printed in English. + +c. A bug that caused the shell to dump core when a filename containing a + `/' was passed to `hash' was fixed. + +d. Pathname canonicalization now leaves a leading `//' intact, as POSIX.1 + requires. + +e. A memory leak when completing commands was fixed. + +f. A memory leak that occurred when checking the hash table for commands + with relative paths was fixed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-beta2, +and the previous version, bash-2.01-beta1. + +1. Changes to Bash + +a. The `ulimit' builtin translates RLIM_INFINITY to the hard limit only if + the current (soft) limit is less than or equal to the hard limit. + +b. Fixed a bug that caused the bash emulation of strcasecmp to produce + incorrect results. + +c. A bug that caused memory to be freed twice when a trap handler resets + the trap more than once was fixed. + +d. A bug that caused machines where sizeof (pointer) > sizeof (int) to + fail (and possibly dump core) when trying to unwind-protect a null + pointer was fixed. + +e. The startup files should not be run with job control enabled. This fix + allows SIGINT to once again interrupt startup file execution. + +f. Bash should not change the SIGPROF handler if it is set to something + other than SIG_DFL. + +g. The completion code that provides bash-specific completions for readline + now quotes characters that the readline code would treat as word break + characters if they appear in a file name. + +h. The completion code now correctly quotes filenames containing a `!', + even if the user attempted to use double quotes when attempting + completion. + +i. A bug that caused the shell to dump core when `disown' was called without + arguments and there was no current job was fixed. + +j. A construct like $((foo);bar) is now processed as a command substitution + rather than as a bad arithmetic substitution. + +k. A couple of bugs that caused `fc' to not obey the `cmdhist' and `lithist' + shell options when editing and re-executing a series of commands were + fixed. + +l. A fix was made to the grammar -- the list of commands between `do' and + `done' in the body of a `for' command should be treated the same as a + while loop. + +2. Changes to Readline + +a. A couple of bugs that caused the history search functions to attempt to + free a NULL pointer were fixed. + +b. If the C library provides setlocale(3), readline does not need to look + at various environment variables to decide whether or not to go into + eight-bit mode automatically -- just check whether the current locale + is not `C' or `POSIX'. + +c. If the filename completion function finds that a directory was not closed + by a previous (interrupted) completion, it closes the directory with + closedir(). + +3. New Features in Bash + +a. New bindable readline commands: history-and-alias-expand-line and + alias-expand-line. The code was always in there, there was just no + way to execute it. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-beta1, +and the previous version, bash-2.01-alpha1. + +1. Changes to Bash + +a. Fixed a problem that could cause file descriptors used for process + substitution to conflict with those used explicitly in redirections. + +b. Made it easier to regenerate configure if the user changes configure.in. + +c. ${GROUPS[0]} should always be the primary group, even on systems without + multiple groups. + +d. Spelling correction is no longer enabled by default. + +e. Fixes to quoting problems in `bashbug'. + +f. OS-specific configuration changes were made for: Irix 6. + +g. OS-specific code changes were made for: QNX. + +h. A more meaningful message is now printed when the file in /tmp for a + here document cannot be created. + +i. Many changes to the shell's variable initialization code to speed + non-interactive startup. + +j. Changes to the non-job-control code so that it does not try to open + /dev/tty. + +k. The output of `set' and `export' is once again sorted, as POSIX wants. + +l. Fixed a problem caused by a recursive call reparsing the value of + $SHELLOPTS. + +m. The tilde code no longer calls getenv() when it's compiled as part of + the shell, which should eliminate problems on systems that cannot + redefine getenv(), like the NeXT OS. + +n. Fixed a problem that caused `bash -o' or `bash +o' to not list all + the shell options. + +o. Fixed `ulimit' to convert RLIM_INFINITY to the appropriate hard limit + only if the hard limit is greater than the current (soft) limit. + +p. Fixed a problem that arose when building bash in a different directory + than the source and y.tab.[ch] were remade with something other than + bison. This came up most often on NetBSD. + +q. Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated + an unfinished command completion (`/), which generated errors. + +r. The bash special tilde expansions (~-, ~+) are now attempted before + calling the standard tilde expansion code, which should eliminate the + problems people have been seeing with this on Solaris 2.5.1. + +s. Added support for <stdarg.h> to places where it was missing. + +t. Changed the code that reads the output of a command substitution to not + go through stdio. This reduces the memory requirements and is faster. + +u. A number of changes to speed up export environment creation were made. + +v. A number of memory leaks were fixed as the result of running the test + scripts through Purify. + +w. Fixed a bug that caused subshells forked to interpret executable + scripts without a leading `#!' to not reinitialize the values of + the shell options. + +2. Changes to Readline + +a. History library has less `#ifdef SHELL' code -- abstracted stuff out + into application-specific function hooks. + +b. Readline no longer calls getenv() if it's compiled as part of the shell, + which should eliminate problems on systems that cannot redefine getenv(), + like the NeXT OS. + +c. Fixed translation of ESC when `untranslating' macro values. + +d. The region kill operation now fixes the mark if it ends up beyond the + boundaries of the line after the region is deleted. + +3. New Features in Bash + +a. New argument for `configure': `--with-curses'. This can be used to + override the selection of the termcap library on systems where it is + deficient. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.01-alpha1, +and the previous version, bash-2.0-release. + +1. Changes to Bash + +a. System-specific configuration changes for: FreeBSD, SunOS4, Irix, + MachTen, QNX 4.2, Harris Night Hawk, SunOS5. + +b. System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2, + HP-UX, AIX 4.2. + +c. A bug that caused the exec builtin to fail because the full pathname of + the command could not be found was fixed. + +d. The code that performs output redirections is now more resistant to + race conditions and possible security exploits. + +e. A bug that caused the shell to dump core when performing pattern + substitutions on variable values was fixed. + +f. More hosts are now recognized by the auto-configuration mechanism + (OpenBSD, QNX, others). + +g. Assignments to read-only variables that attempt to convert them to + arrays are now errors. + +h. A bug that caused shell scripts using array assignments in POSIX mode + to exit after the assignment was performed was fixed. + +i. The substring expansion code is now more careful about running off the + ends of the expanded variable value. + +j. A bug that caused completion to fail if a backquoted command substitution + appeared anywhere on the line was fixed. + +k. The `source' builtin no longer turns off history if it has been enabled + in a non-interactive shell. + +l. A bug that caused the shell to crash when `disown' was given a pid + instead of a job number was fixed. + +m. The `cd' spelling correction code will not try to change to `.' if no + directory entries match a single-character argument. + +n. A bad variable name supplied to `declare', `export', or `readonly' no + longer causes a non-interactive shell in POSIX mode to exit. + +o. Some fixes were made to the test suite to handle peculiarities of + various Unix versions. + +p. The bash completion code now quotes characters that readline would + treat as word breaks for completion but are not shell metacharacters. + +q. Bad options supplied at invocation now cause a usage message to be + displayed. + +r. Fixes were made to the code that handles DEBUG traps so that the trap + string is not freed inappropriately. + +s. Some changes were made to the bash debugger in examples/bashdb -- it + should be closer to working now. + +t. A problem that caused the default filename used for mail checking to be + wrong was fixed. + +u. A fix was made to the `echo' builtin so that NUL characters printed with + `echo -e' do not cause the output to be truncated. + +v. A fix was made to the job control code so that the shell behaves better + when monitor mode is enabled in a non-interactive shell. + +w. Bash no longer catches all of the terminating signals in a non- + interactive shell until a trap is set on EXIT, which should result in + quicker startup. + +x. A fix was made to the command timing code so that `time' can be used in + a loop. + +y. A fix was made to the parser so that `((cmd); cmd2)' is now parsed as + a nested subshell rather than strictly as an (erroneous) arithmetic + command. + +z. A fix was made to the globbing code so that it correctly matches quoted + filenames beginning with a `.'. + +aa. A bug in `fc' that caused some multi-line commands to not be stored as + one command in the history when they were re-executed after editing + (with `fc -e') was fixed. + +bb. The `ulimit' builtin now attempts to catch some classes of integer + overflows. + +cc. The command-oriented-history code no longer attempts to add `;' + inappropriately when a newline appears while reading a $(...) command + substitution. + +dd. A bug that caused the shell to dump core when `help --' was executed + was fixed. + +ee. A bug that caused the shell to crash when an unset variable appeared + in the body of a here document after `set -u' had been executed was + fixed. + +ff. Implicit input redirections from /dev/null for asynchronous commands + are now handled better. + +gg. A bug that caused the shell to fail to compile when configured with + `--disable-readline' was fixed. + +hh. The globbing code should now be interruptible. + +ii. Bash now notices when the `kill' builtin is used to send SIGCONT to a + stopped job and adjusts the data structures accordingly, as if `bg' had + been executed instead. + +jj. A bug that caused the shell to crash when mixing calls to `getopts' + and `shift' on the same set of positional parameters was fixed. + +kk. The command printing code now preserves the `-p' flag to `time'. + +ll. The command printing code now handles here documents better when there + are other redirections associated with the command. + +mm. The special glibc environment variable (NNN_GNU_nonoption_argv_flags_) + is no longer placed into the environment of executed commands -- users + of glibc had too many problems with it. + +nn. Reorganized the code that generates signames.h. The signal_names list + is now more complete but may be slightly different (SIGABRT is favored + over SIGIOT, for example). The preferred signal names are those + listed in the POSIX.2 standard. + +oo. `bashbug' now uses a filename shorter than 14 characters for its + temporary file, and asks for confirmation before sending the bug + report. + +pp. A bug that caused TAB completion in vi editing mode to not be turned + off when `set -o posix' was executed or back on when `set +o posix' + was executed was fixed. + +qq. A bug in the brace expansion code that caused brace expansions appearing + in new-style $(...) command substitutions to be inappropriately expanded + was fixed. + +rr. A bug in the readline hook shell-expand-line that could cause memory to + be inappropriately freed was fixed. + +ss. A bug that caused some arithmetic expressions containing `&&' and `||' + to be parsed with the wrong precedence has been fixed. + +tt. References to unbound variables after `set -u' has been executed now + cause the shell to exit immediately, as they should. + +uu. A bug that caused the shell to exit inappropriately when `set -e' had + been executed and a command's return status was being inverted with the + `!' reserved word was fixed. + +vv. A bug that could occasionally cause the shell to crash with a + divide-by-zero error when timing a command was fixed. + +ww. A bug that caused parameter pattern substitution to leave stray + backslashes in the replacement string when the expression is in + double quotes was fixed. + +xx. The `break' and `continue' builtins now break out of all loops when an + invalid count argument is supplied. + +yy. Fixed a bug that caused PATH to be set to the empty string if + `command -p' is executed with PATH unset. + +zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix, + as POSIX specifies. + +aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS + if there were no shell options set. + +bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX + mode, their output is as POSIX.2 specifies. + +ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually + creates an array variable. + +ddd. Fixed a bug that prevented `time' from correctly timing background + pipelines. + +2. Changes to Readline + +a. A bug that caused an extra newline to be printed when the cursor was on + an otherwise empty line was fixed. + +b. An instance of memory being used after it was freed was corrected. + +c. The redisplay code now works when the prompt is longer than the screen + width. + +d. `dump-macros' is now a bindable name, as it should have been all along. + +e. Non-printable characters are now expanded when displaying macros and + their values. + +f. The `dump-variables' and `dump-macros' commands now output a leading + newline if they're called as the result of a key sequence, rather + than directly by an application. + +3. New Features in Bash + +a. There is a new builtin array variable: GROUPS, the set of groups to which + the user belongs. This is used by the test suite. + +4. New Features in Readline + +a. If a key sequence bound to `universal-argument' is read while reading a + numeric argument started with `universal-argument', it terminates the + argument but is otherwise ignored. This provides a way to insert multiple + instances of a digit string, and is how GNU emacs does it. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-release, +and the previous version, bash-2.0-beta3. + +1. Changes to Bash + +a. Fix to the `getopts' builtin so that it does the right thing when a + required option argument is not present. + +b. The completion code now updates the common prefix of matched names + after FIGNORE processing is done, since any names that were removed + may have changed the common prefix. + +c. Fixed a bug that made messages in MAILPATH entries not work correctly. + +d. Fixed a serious documentation error in the description of the new + ${parameter:offset[:length]} expansion. + +e. Fixes to make parameter substring expansion ({$param:offset[:length]}) + work when within double quotes. + +f. Fixes to make ^A (CTLESC) survive an unquoted expansion of positional + parameters. + +g. Corrected a misspelling of `unlimited' in the output of `ulimit'. + +h. Fixed a bug that caused executable scripts without a leading `#!' to + occasionally pick up the wrong set of positional parameters. + +i. Linux systems now have a working `ulimit -v', using RLIMIT_AS. + +j. Updated config.guess so that many more machine types are recognized. + +k. Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]} + expansion. + +l. If the shell is named `-su', and `-c command' is supplied, read and + execute the login shell startup files even though the shell is not + interactive. This is to support the `-' option to `su'. + +m. Fixed a bug that caused core dumps when the DEBUG trap was ignored + with `trap "" DEBUG' and a shell function was subsequently executed. + +n. Fixed a bug that caused core dumps in the read builtin when IFS was + set to the null string and the input had leading whitespace. + +2. Changes to Readline + +a. Fixed a bug that caused a numeric argument of 1024 to be ignored when + inserting text. + +b. Fixed the display code so that the numeric argument is displayed as it's + being entered. + +c. Fixed the numeric argument reading code so that `M-- command' is + equivalent to `M--1 command', as the prompt implies. + +3. New Features in Bash + +a. `ulimit' now sets both hard and soft limits and reports the soft limit + by default (when neither -H nor -S is specified). This is compatible + with versions of sh and ksh that implement `ulimit'. + +b. Integer constants have been extended to base 64. + +4. New Features in Readline + +a. The `home' and `end' keys are now bound to beginning-of-line and + end-of-line, respectively, if the corresponding termcap capabilities + are present. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta3, +and the previous version, bash-2.0-beta2. + +1. Changes to Bash + +a. System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX. + +b. When in POSIX mode, variable assignments preceding a special builtin + persist in the shell environment after the builtin completes. + +c. Changed all calls to getwd() to getcwd(). Improved check for systems + where the libc getcwd() calls popen(), since that breaks on some + systems when job control is being used. + +d. Fixed a bug that caused seg faults when executing scripts with the + execute bit set but without a leading `#!'. + +e. The environment passed to executed commands is never sorted. + +f. A bug was fixed in the code that expands ${name[@]} to the number of + elements in an array variable. + +g. A bug was fixed in the array compound assignment code ( A=( ... ) ). + +h. Window size changes now correctly propagate down to readline if + the shopt `checkwinsize' option is enabled. + +i. A fix was made in the code that expands to the length of a variable + value (${#var}). + +j. A fix was made to the command builtin so that it did not turn on the + `no fork' flag inappropriately. + +k. A fix was made to make `set -n' work more reliably. + +l. A fix was made to the job control initialization code so that the + terminal process group is set to the shell's process group if the + shell changes its own process group. + +2. Changes to Readline + +a. System-specific changes for: SCO 3.2v[45]. + +b. The behavior of the vi-mode `.' when redoing an `i' command was changed + to insert the text previously inserted by the `i' command rather than + simply entering insert mode. + +3. New features in Bash + +a. There is a new version of the autoload function package, in + examples/functions/autoload.v2, that uses arrays and provides more + functionality. + +b. Support for LC_COLLATE and locale-specific sorting of the results of + pathname expansion if strcoll() is available. + +4. New Features in Readline + +a. Support for locale-specific sorting of completion possibilities if + strcoll() is available. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta2, +and the previous version, bash-2.0-beta1. + +1. Changes to Bash + +a. `pushd -' is once again equivalent to `pushd $OLDPWD'. + +b. OS-specific changes for: SCO 3.2v[45]. + +c. A change was made to the fix for the recently-reported security hole + when reading characters with octal value 255 to make it work better on + systems with restartable system calls when not using readline. + +d. Some changes were made to the test suite so that it works if you + configure bash with --enable-usg-echo-default. + +e. A fix was made to the parsing of conditional arithmetic expressions. + +f. Illegal arithmetic bases now cause an arithmetic evaluation error rather + than being silently reset. + +g. Multiple arithmetic bases now cause an arithmetic evaluation error + instead of being ignored. + +h. A fix was made to the evaluation of ${param?word} to conform to POSIX.2. + +i. A bug that sometimes caused array indices to be evaluated twice (which + would cause errors when they contained assignment statements) was fixed. + +j. `ulimit' was rewritten to avoid problems with getrlimit(2) returning + unsigned values and to simplify the code. + +k. A bug in the command-oriented-history code that caused it to sometimes + put semicolons after right parens inappropriately was fixed. + +l. The values inserted into the prompt by the \w and \W escape sequences + are now quoted to prevent further expansion. + +m. An interactive shell invoked as `sh' now reads and executes commands + from the file named by $ENV when it starts up. If it's a login shell, + it does this after reading /etc/profile and ~/.profile. + +n. The file named by $ENV is never read by non-interactive shells. + +2. Changes to Readline + +a. A few changes were made to hide some macros and functions that should not + be public. + +b. An off-by-one error that caused seg faults in the history expansion code + was fixed. + +3. New Features in Bash + +a. The ksh-style ((...)) arithmetic command was implemented. It is exactly + identical to let "...". This is controlled by a new option to configure, + `--enable-dparen-arithmetic', which is on by default. + +b. There is a new #define available in config.h.top: SYS_BASH_LOGOUT. If + defined to a filename, bash reads and executes commands from that file + when a login shell exits. It's commented out by default. + +c. `ulimit' has a `-l' option that reports the maximum amount of data that + may be locked into memory on 4.4BSD-based systems. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-beta1, +and the previous version, bash-2.0-alpha4. + +1. Changes to Bash + +a. A bug that sometimes caused traps to be ignored on signals the + shell treats specially was fixed. + +b. The internationalization code was changed to track the values of + LC_* variables and call setlocale() as appropriate. The TEXTDOMAIN + and TEXTDOMAINDIR variables are also tracked; changes cause calls + to textdomain() and bindtextdomain(), if available. + +c. A bug was fixed that sometimes caused double-quoted strings to be + parsed incorrectly. + +d. Changes were made so that the siglist code compiles correctly on + Solaris 2.5. + +e. Added `:' to the set of characters that cause word breaks for the + completion code so that pathnames in assignments to $PATH can be + completed. + +f. The `select' command was fixed to print $PS3 to stderr. + +g. Fixed an error in the manual page section describing the effect that + setting and unsetting GLOBIGNORE has on the setting of the `dotglob' + option. + +h. The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC + on systems without gettimeofday() and resources. + +i. The getopt static variables are now initialized each time a subshell + is started, so subshells using `getopts' work right. + +j. A sign-extension bug that caused a possible security hole was fixed. + +k. The parser now reads characters between backquotes within a double- + quoted string as a single word, so double quotes in the backquoted + string don't terminate the enclosing double-quoted string. + +l. A bug that caused `^O' to work incorrectly when typed as the first + thing to an interactive shell was fixed. + +m. A rarely-exercised off-by-one error in the code that quotes variable + values was fixed. + +n. Some memory and file descriptor leaks encountered when running a + shell script that is executable but does not have a leading `#!' + were plugged. + +2. Changes to Readline + +a. A bug that sometimes caused incorrect results when trying to read + typeahead on systems without FIONREAD was fixed. + +3. New Features in Bash + +a. The command timing code now uses the value of the TIMEFORMAT variable + to format and display timing statistics. + +b. The `time' reserved word now accepts a `-p' option to force the + POSIX.2 output format. + +c. There are a couple of new and updated scripts to convert csh startup + files to bash format. + +d. There is a new builtin array variable: BASH_VERSINFO. The various + members hold the parts of the version information in BASH_VERSION, + plus the value of MACHTYPE. + +4. New Features in Readline + +a. Setting LANG to `en_US.ISO8859-1' now causes readline to enter + eight-bit mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-alpha4, +and the previous version, bash-2.0-alpha3. + +1. Changes to Bash + +a. There is better detection of rsh connections on Solaris 2. + +b. Assignments to read-only variables preceding a command name are now + variable assignment errors. Variable assignment errors cause + non-interactive shells running in posix mode to exit. + +c. The word tokenizer was rewritten to handle nested quotes and pairs + ('', "", ``, ${...}, $(...), $[...], $'...', $"...", <(...), >(...)) + correctly. Some of the parameter expansion code was updated as a + consequence. + +d. A fix was made to `test' when given three arguments so that a binary + operator is checked for first, before checking that the first argument + is `!'. + +e. 2''>/dev/null is no longer equivalent to 2>/dev/null. + +f. Parser error messages were regularized, and in most cases the name of + the shell script being read by a non-interactive shell is not printed + twice. + +g. A fix was made to the completion code so that it no longer removes the + text the user typed in some cases. + +h. The special glibc `getopt' environment variable is no longer put into + the environment on machines with small values of ARG_MAX. + +i. The expansion of ${...} now follows the POSIX.2 rules for finding the + closing `}'. + +j. The shell no longer displays spurious status messages for background + jobs in shell scripts that complete successfully when the script is + run from a terminal. + +k. `shopt -o' now correctly updates $SHELLOPTS. + +l. A bug that caused the $PATH searching code to return a non-executable + file even when an executable file with the same name appeared later in + $PATH was fixed. + +m. The shell now does tilde expansions on unquoted `:~' in assignment + statements when not in posix mode. + +n. Variable assignment errors when a command consists only of assignments + now cause non-interactive shells to exit when in posix mode. + +o. If the variable in a `for' or `select' command is read-only, or not a + legal shell identifier, a variable assignment error occurs. + +p. `test' now handles `-a' and `-o' as binary operators when three arguments + are supplied, and correctly parses `( word )' as equivalent to `word'. + +q. `test' was fixed so that file names of the form /dev/fd/NN mean the same + thing on all systems, even Linux. + +r. Fixed a bug in the globbing code that caused patterns with multiple + consecutive `*'s to not be matched correctly. + +s. Fixed a bug that caused $PS2 to not be printed when an interactive shell + not using readline is reading a here document. + +t. Fixed a bug that caused history expansion to be performed inappropriately + when a single-quoted string spanned more than one line. + +u. `getopts' now checks that the variable name passed by the user as the + second argument is a legal shell identifier and that the variable is + not read-only. + +v. Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it + encounters an error. + +w. Fixed `set' to display variable values in a form that can be re-read. + +x. Fixed a bug in the code that keeps track of whether or not local variables + have been declared at the current level of function nesting. + +y. Non-interactive shells in posix mode now exit if the name in a function + declaration is not a legal identifier. + +z. The job control code now ignores stopped children when the shell is not + interactive. + +aa. The `cd' builtin no longer attempts spelling correction on the directory + name if the shell is not interactive, regardless of the setting of the + `cdspell' option. + +bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2. + +cc. `time' now prints its output to stderr, as POSIX.2 specifies. + +2. Fixes to Readline + +a. After printing possible completions, all lines of a multi-line prompt + are redisplayed. + +b. Some changes were made to the terminal handling code in rltty.c to + work around AIX 4.2 bugs. + +3. New Features in Bash + +a. There is a new loadable builtin: sprintf, with calling syntax + sprintf var format [args] + This provides an easy way to simulate ksh left- and right-justified + variable values. + +b. The expansions of \h and \H in prompt strings were swapped. \h now + expands to the hostname up to the first `.', as in bash-1.14. + +4. New Features in Readline + +a. The bash-1.14 behavior when ^M is typed while doing an incremental + search was restored. ^J may now be used to terminate the search without + accepting the line. + +b. There is a new bindable variable: disable-completion. This inhibits + word completion and causes the completion character to be inserted as + if it had been bound to self-insert. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-2.0-alpha3, +and the previous version, bash-2.0-alpha2. + +There is now a file `COMPAT' included in the distribution that lists the +user-visible incompatibilities between 1.14 and 2.0. + +1. Changes to Bash + +a. Some work was done so that word splitting of the rhs of assignment + statements conforms more closely to historical practice. + +b. A couple of errant memory frees were fixed. + +c. A fix was made to the test builtin so it recognizes `<' and `>' as + binary operators. + +d. The GNU malloc in lib/malloc/malloc.c now scrambles memory as it's + allocated and freed. This is to catch callers that refer to freed + memory or assume something about newly-allocated memory. + +e. Fixed a problem with conversion to 12-hour time in the prompt + expansion code. + +f. Fixed a problem with configure's argument parsing order. Now you can + correctly turn on specific options after using --enable-minimal-config. + +g. The configure script now automatically disables the use of GNU malloc + on systems where it's appropriate (better than having people read the + NOTES file and do it manually). + +h. There are new prompt expansions (\v and \V) to insert version information + into the prompt strings. + +i. The default prompt string now includes the version number. + +j. Most of the builtins that take no options were changed to use the + internal getopt so they can produce proper error messages for -? + and incorrect options. + +k. Some system-specific changes were made for SVR4.2 and Solaris 2.5. + +l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of + MAXNAMLEN. + +m. A couple of problems caused by uninitialized variables were fixed. + +n. There are a number of new loadable builtin examples: logname, basename, + dirname, tty, pathchk, tee, head, and rmdir. All of these conform to + POSIX.2. + +o. Bash now notices changes in TZ and calls tzset() if present, so + changing TZ will alter the time printed by prompt expansions. + +p. The source was reorganized a bit so I don't have to wait so long for + some files to compile, and to facilitate the creation of a `shell + library' at some future point. + +q. Bash no longer turns off job control if called as `sh', since the + POSIX.2 spec includes job control as a standard feature. + +r. `bash -o posix' now works as intended. + +s. Fixed a problem with the completion code: when completing a filename + that contained globbing characters, if show-all-if-ambiguous was set, + the completion code would remove the user's text. + +t. Fixed ulimit so that (hopefully) the full range of limits is available + on HPUX systems. + +u. A new `shopt' option (`hostcomplete') enables and disables hostname + completion. + +v. The shell no longer attempts to save the history on an abort(), + which is usually called by programming_error(). + +w. The `-s' option to `fc' was changed to echo the command to be executed + to stderr instead of stdout. + +x. If the editor invoked by `fc -e' exits with a non-zero status, no + commands are executed. + +y. Fixed a bug that made the shopt `histverify' option work incorrectly. + +z. There is a new variable `MACHTYPE' whose value is the GNU-style + `cpu-company-system' system description as set by configure. (The + values of MACHTYPE and HOSTTYPE should really be swapped.) + +aa. The `ulimit' builtin now allows the maximum virtual memory size to be + set via setrlimit(2) if RLIMIT_VMEM is defined. + +bb. `bash -nc 'command'' no longer runs `command'. + +2. Changes to Readline + +a. Fixed a typo in the code that checked for FIONREAD in input.c. + +b. Fixed a bug in the code that outputs keybindings, so things like C-\ + are quoted properly. + +c. Fixed a bug in the inputrc file parsing code to handle the problems + caused by inputrc files created from the output of `bind -p' in + previous versions of bash. The problem was due to the bug fixed + in item b above. + +d. Readline no longer turns off the terminal's meta key, and turns it on + once the first time it's called. + +------------------------------------------------------------------------------ +This file documents the changes between this version, bash-2.0-alpha2, +and the previous version, bash-2.0-alpha. + +1. Changes to Bash + +a. The shell no longer thinks directories are executable. + +b. `disown' has a new option, `h', which inhibits the resending of SIGHUP + but does not remove the job from the jobs table. + +c. The varargs functions in error.c now use ANSI-C `stdarg' if available. + +d. The build process now treats the `build version' in .build as local to + the build directory, so different versions built from the same source + tree have different `build versions'. + +e. Some problems with the grammar have been fixed. (It used `list' in a few + productions where `compound_list' was needed. A `list' must be terminated + with a newline or semicolon; a `compound_list' need not be.) + +f. A fix was made to keep `wait' from hanging when waiting for all background + jobs. + +g. `bash --help' now writes its output to stdout, like the GNU Coding Standards + specify, and includes the machine type (the value of MACHTYPE). + +h. `bash --version' now prints more information and exits successfully, like + the GNU Coding Standards specify. + +i. The output of `time' and `times' now prints fractional seconds with three + places after the decimal point. + +j. A bug that caused process substitutions to screw up the pipeline printed + by `jobs' was fixed. + +k. Fixes were made to the code that implements $'...' and $"..." so they + work as documented. + +l. The process substitution code now opens named pipes for reading with + O_NONBLOCK to avoid hanging. + +m. Fixes were made to the trap code so the shell cleans up correctly if the + trap command contains a `return' and we're executing a function or + sourcing a script with `.'. + +n. Fixes to doc/Makefile.in so that it doesn't try to remake all of the + documentation (ps, dvi, etc.) on a `make install'. + +o. Fixed an auto-increment error that caused bash -c args to sometimes dump + core. + +p. Fixed a bug that caused $HISTIGNORE to fail when the history line + contained globbing characters. + +2. Changes to Readline + +a. There is a new string variable, rl_library_version, available for use by + applications. The current value is "2.1". + +b. A bug encountered when expand-tilde was enabled and file completion was + attempted on a word beginning with `~/' was fixed. + +c. A slight change was made to the incremental search termination behavior. + ESC still terminates the search, but if input is pending or arrives + within 0.1 seconds (on systems with select(2)), it is used as a prefix + character. This is intented to allow users to terminate searches with + the arrow keys and get the behavior they expect. @@ -0,0 +1,1535 @@ +This is a terse description of the new features added to bash-4.1 since +the release of bash-4.0. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Here-documents within $(...) command substitutions may once more be + delimited by the closing right paren, instead of requiring a newline. + +b. Bash's file status checks (executable, readable, etc.) now take file + system ACLs into account on file systems that support them. + +c. Bash now passes environment variables with names that are not valid + shell variable names through into the environment passed to child + processes. + +d. The `execute-unix-command' readline function now attempts to clear and + reuse the current line rather than move to a new one after the command + executes. + +e. `printf -v' can now assign values to array indices. + +f. New `complete -E' and `compopt -E' options that work on the "empty" + completion: completion attempted on an empty command line. + +g. New complete/compgen/compopt -D option to define a `default' completion: + a completion to be invoked on command for which no completion has been + defined. If this function returns 124, programmable completion is + attempted again, allowing a user to dynamically build a set of completions + as completion is attempted by having the default completion function + install individual completion functions each time it is invoked. + +h. When displaying associative arrays, subscripts are now quoted. + +i. Changes to dabbrev-expand to make it more `emacs-like': no space appended + after matches, completions are not sorted, and most recent history entries + are presented first. + +j. The [[ and (( commands are now subject to the setting of `set -e' and the + ERR trap. + +k. The source/. builtin now removes NUL bytes from the file before attempting + to parse commands. + +l. There is a new configuration option (in config-top.h) that forces bash to + forward all history entries to syslog. + +m. A new variable $BASHOPTS to export shell options settable using `shopt' to + child processes. + +n. There is a new confgure option that forces the extglob option to be + enabled by default. + +o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace + output to that file descriptor. + +p. If the optional left-hand-side of a redirection is of the form {var}, the + shell assigns the file descriptor used to $var or uses $var as the file + descriptor to move or close, depending on the redirection operator. + +q. The < and > operators to the [[ conditional command now do string + comparison according to the current locale if the compatibility level + is greater than 40. + +r. Programmable completion now uses the completion for `b' instead of `a' + when completion is attempted on a line like: a $(b c. + +s. Force extglob on temporarily when parsing the pattern argument to + the == and != operators to the [[ command, for compatibility. + +t. Changed the behavior of interrupting the wait builtin when a SIGCHLD is + received and a trap on SIGCHLD is set to be Posix-mode only. + +u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS + characters, ignoring delimiters like newline. + +v. The mapfile/readarray builtin no longer stores the commands it invokes via + callbacks in the history list. + +w. There is a new `compat40' shopt option. + +2. New Features in Readline + +a. New bindable function: menu-complete-backward. + +b. In the vi insertion keymap, C-n is now bound to menu-complete by default, + and C-p to menu-complete-backward. + +c. When in vi command mode, repeatedly hitting ESC now does nothing, even + when ESC introduces a bound key sequence. This is closer to how + historical vi behaves. + +d. New bindable function: skip-csi-sequence. Can be used as a default to + consume key sequences generated by keys like Home and End without having + to bind all keys. + +e. New application-settable function: rl_filename_rewrite_hook. Can be used + to rewite or modify filenames read from the file system before they are + compared to the word to be completed. + +f. New bindable variable: skip-completed-text, active when completing in the + middle of a word. If enabled, it means that characters in the completion + that match characters in the remainder of the word are "skipped" rather + than inserted into the line. + +g. The pre-readline-6.0 version of menu completion is available as + "old-menu-complete" for users who do not like the readline-6.0 version. + +h. New bindable variable: echo-control-characters. If enabled, and the + tty ECHOCTL bit is set, controls the echoing of characters corresponding + to keyboard-generated signals. + +i. New bindable variable: enable-meta-key. Controls whether or not readline + sends the smm/rmm sequences if the terminal indicates it has a meta key + that enables eight-bit characters. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-4.0 since +the release of bash-3.2. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. When using substring expansion on the positional parameters, a starting + index of 0 now causes $0 to be prefixed to the list. + +b. The `help' builtin now prints its columns with entries sorted vertically + rather than horizontally. + +c. There is a new variable, $BASHPID, which always returns the process id of + the current shell. + +d. There is a new `autocd' option that, when enabled, causes bash to attempt + to `cd' to a directory name that is supplied as the first word of a + simple command. + +e. There is a new `checkjobs' option that causes the shell to check for and + report any running or stopped jobs at exit. + +f. The programmable completion code exports a new COMP_TYPE variable, set to + a character describing the type of completion being attempted. + +g. The programmable completion code exports a new COMP_KEY variable, set to + the character that caused the completion to be invoked (e.g., TAB). + +h. If creation of a child process fails due to insufficient resources, bash + will try again several times before reporting failure. + +i. The programmable completion code now uses the same set of characters as + readline when breaking the command line into a list of words. + +j. The block multiplier for the ulimit -c and -f options is now 512 when in + Posix mode, as Posix specifies. + +k. Changed the behavior of the read builtin to save any partial input received + in the specified variable when the read builtin times out. This also + results in variables specified as arguments to read to be set to the empty + string when there is no input available. When the read builtin times out, + it returns an exit status greater than 128. + +l. The shell now has the notion of a `compatibility level', controlled by + new variables settable by `shopt'. Setting this variable currently + restores the bash-3.1 behavior when processing quoted strings on the rhs + of the `=~' operator to the `[[' command. + +m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number + of threads) options. + +n. The -p option to `declare' now displays all variable values and attributes + (or function values and attributes if used with -f). + +o. There is a new `compopt' builtin that allows completion functions to modify + completion options for existing completions or the completion currently + being executed. + +p. The `read' builtin has a new -i option which inserts text into the reply + buffer when using readline. + +q. A new `-E' option to the complete builtin allows control of the default + behavior for completion on an empty line. + +r. There is now limited support for completing command name words containing + globbing characters. + +s. Changed format of internal help documentation for all builtins to roughly + follow man page format. + +t. The `help' builtin now has a new -d option, to display a short description, + and a -m option, to print help information in a man page-like format. + +u. There is a new `mapfile' builtin to populate an array with lines from a + given file. The name `readarray' is a synonym. + +v. If a command is not found, the shell attempts to execute a shell function + named `command_not_found_handle', supplying the command words as the + function arguments. + +w. There is a new shell option: `globstar'. When enabled, the globbing code + treats `**' specially -- it matches all directories (and files within + them, when appropriate) recursively. + +x. There is a new shell option: `dirspell'. When enabled, the filename + completion code performs spelling correction on directory names during + completion. + +y. The `-t' option to the `read' builtin now supports fractional timeout + values. + +z. Brace expansion now allows zero-padding of expanded numeric values and + will add the proper number of zeroes to make sure all values contain the + same number of digits. + +aa. There is a new bash-specific bindable readline function: `dabbrev-expand'. + It uses menu completion on a set of words taken from the history list. + +bb. The command assigned to a key sequence with `bind -x' now sets two new + variables in the environment of the executed command: READLINE_LINE_BUFFER + and READLINE_POINT. The command can change the current readline line + and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, + respectively. + +cc. There is a new &>> redirection operator, which appends the standard output + and standard error to the named file. + +dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects + the standard error for a command through a pipe. + +ee. The new `;&' case statement action list terminator causes execution to + continue with the action associated with the next pattern in the + statement rather than terminating the command. + +ff. The new `;;&' case statement action list terminator causes the shell to + test the next set of patterns after completing execution of the current + action, rather than terminating the command. + +gg. The shell understands a new variable: PROMPT_DIRTRIM. When set to an + integer value greater than zero, prompt expansion of \w and \W will + retain only that number of trailing pathname components and replace + the intervening characters with `...'. + +hh. There are new case-modifying word expansions: uppercase (^[^]) and + lowercase (,[,]). They can work on either the first character or + array element, or globally. They accept an optional shell pattern + that determines which characters to modify. There is an optionally- + configured feature to include capitalization operators. + +ii. The shell provides associative array variables, with the appropriate + support to create, delete, assign values to, and expand them. + +jj. The `declare' builtin now has new -l (convert value to lowercase upon + assignment) and -u (convert value to uppercase upon assignment) options. + There is an optionally-configurable -c option to capitalize a value at + assignment. + +kk. There is a new `coproc' reserved word that specifies a coprocess: an + asynchronous command run with two pipes connected to the creating shell. + Coprocs can be named. The input and output file descriptors and the + PID of the coprocess are available to the calling shell in variables + with coproc-specific names. + +ll. A value of 0 for the -t option to `read' now returns success if there is + input available to be read from the specified file descriptor. + +mm. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged + mode. + +nn. New bindable readline functions shell-forward-word and shell-backward-word, + which move forward and backward words delimited by shell metacharacters + and honor shell quoting. + +oo. New bindable readline functions shell-backward-kill-word and shell-kill-word + which kill words backward and forward, but use the same word boundaries + as shell-forward-word and shell-backward-word. + +2. New Features in Readline + +a. A new variable, rl_sort_completion_matches; allows applications to inhibit + match list sorting (but beware: some things don't work right if + applications do this). + +b. A new variable, rl_completion_invoking_key; allows applications to discover + the key that invoked rl_complete or rl_menu_complete. + +c. The functions rl_block_sigint and rl_release_sigint are now public and + available to calling applications who want to protect critical sections + (like redisplay). + +d. The functions rl_save_state and rl_restore_state are now public and + available to calling applications; documented rest of readline's state + flag values. + +e. A new user-settable variable, `history-size', allows setting the maximum + number of entries in the history list. + +f. There is a new implementation of menu completion, with several improvements + over the old; the most notable improvement is a better `completions + browsing' mode. + +g. The menu completion code now uses the rl_menu_completion_entry_function + variable, allowing applications to provide their own menu completion + generators. + +h. There is support for replacing a prefix of a pathname with a `...' when + displaying possible completions. This is controllable by setting the + `completion-prefix-display-length' variable. Matches with a common prefix + longer than this value have the common prefix replaced with `...'. + +i. There is a new `revert-all-at-newline' variable. If enabled, readline will + undo all outstanding changes to all history lines when `accept-line' is + executed. + +j. If the kernel supports it, readline displays special characters + corresponding to a keyboard-generated signal when the signal is received. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-3.2 since +the release of bash-3.1. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Changed the parameter pattern replacement functions to not anchor the + pattern at the beginning of the string if doing global replacement - that + combination doesn't make any sense. + +b. When running in `word expansion only' mode (--wordexp option), inhibit + process substitution. + +c. Loadable builtins now work on MacOS X 10.[34]. + +d. Shells running in posix mode no longer set $HOME, as POSIX requires. + +e. The code that checks for binary files being executed as shell scripts now + checks only for NUL rather than any non-printing character. + +f. Quoting the string argument to the [[ command's =~ operator now forces + string matching, as with the other pattern-matching operators. + +2. New Features in Readline + +a. Calling applications can now set the keyboard timeout to 0, allowing + poll-like behavior. + +b. The value of SYS_INPUTRC (configurable at compilation time) is now used as + the default last-ditch startup file. + +c. The history file reading functions now allow windows-like \r\n line + terminators. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-3.1 since +the release of bash-3.0. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Bash now understands LC_TIME as a special variable so that time display + tracks the current locale. + +b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created + as `invisible' variables and may not be unset. + +c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't + try to interpret any options at all, as POSIX requires. + +d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify. + +e. Fixed vi-mode word completion and glob expansion to perform tilde + expansion. + +f. The `**' mathematic exponentiation operator is now right-associative. + +g. The `ulimit' builtin has new options: -i (max number of pending signals), + -q (max size of POSIX message queues), and -x (max number of file locks). + +h. A bare `%' once again expands to the current job when used as a job + specifier. + +i. The `+=' assignment operator (append to the value of a string or array) is + now supported for assignment statements and arguments to builtin commands + that accept assignment statements. + +j. BASH_COMMAND now preserves its value when a DEBUG trap is executed. + +k. The `gnu_errfmt' option is enabled automatically if the shell is running + in an emacs terminal window. + +l. New configuration option: --single-help-strings. Causes long help text + to be written as a single string; intended to ease translation. + +m. The COMP_WORDBREAKS variable now causes the list of word break characters + to be emptied when the variable is unset. + +n. An unquoted expansion of $* when $IFS is empty now causes the positional + parameters to be concatenated if the expansion doesn't undergo word + splitting. + +o. Bash now inherits $_ from the environment if it appears there at startup. + +p. New shell option: nocasematch. If non-zero, shell pattern matching ignores + case when used by `case' and `[[' commands. + +q. The `printf' builtin takes a new option: -v var. That causes the output + to be placed into var instead of on stdout. + +r. By default, the shell no longer reports processes dying from SIGPIPE. + +s. Bash now sets the extern variable `environ' to the export environment it + creates, so C library functions that call getenv() (and can't use the + shell-provided replacement) get current values of environment variables. + +t. A new configuration option, `--enable-strict-posix-default', which will + build bash to be POSIX conforming by default. + +u. If compiled for strict POSIX conformance, LINES and COLUMNS may now + override the true terminal size. + +2. New Features in Readline + +a. The key sequence sent by the keypad `delete' key is now automatically + bound to delete-char. + +b. A negative argument to menu-complete now cycles backward through the + completion list. + +c. A new bindable readline variable: bind-tty-special-chars. If non-zero, + readline will bind the terminal special characters to their readline + equivalents when it's called (on by default). + +d. New bindable command: vi-rubout. Saves deleted text for possible + reinsertion, as with any vi-mode `text modification' command; `X' is bound + to this in vi command mode. + +e. A new external application-controllable variable that allows the LINES + and COLUMNS environment variables to set the window size regardless of + what the kernel returns: rl_prefer_env_winsize + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-3.0 since +the release of bash-2.05b. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. ANSI string expansion now implements the \x{hexdigits} escape. + +b. There is a new loadable `strftime' builtin. + +c. New variable, COMP_WORDBREAKS, which controls the readline completer's + idea of word break characters. + +d. The `type' builtin no longer reports on aliases unless alias expansion + will actually be performed. + +e. HISTCONTROL is now a colon-separated list of values, which permits + more extensibility and backwards compatibility. + +f. HISTCONTROL may now include the `erasedups' option, which causes all lines + matching a line being added to be removed from the history list. + +g. `configure' has a new `--enable-multibyte' argument that permits multibyte + character support to be disabled even on systems that support it. + +h. New variables to support the bash debugger: BASH_ARGC, BASH_ARGV, + BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING, + BASH_COMMAND + +i. FUNCNAME has been changed to support the debugger: it's now an array + variable. + +j. for, case, select, arithmetic commands now keep line number information + for the debugger. + +k. There is a new `RETURN' trap executed when a function or sourced script + returns (not inherited child processes; inherited by command substitution + if function tracing is enabled and the debugger is active). + +l. New invocation option: --debugger. Enables debugging and turns on new + `extdebug' shell option. + +m. New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR + traps, respectively, to be inherited by shell functions. Equivalent to + `set -T' and `set -E' respectively. The `functrace' option also controls + whether or not the DEBUG trap is inherited by sourced scripts. + +n. The DEBUG trap is run before binding the variable and running the action + list in a `for' command, binding the selection variable and running the + query in a `select' command, and before attempting a match in a `case' + command. + +o. New `--enable-debugger' option to `configure' to compile in the debugger + support code. + +p. `declare -F' now prints out extra line number and source file information + if the `extdebug' option is set. + +q. If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes + the next command to be skipped, and a return value of 2 while in a + function or sourced script forces a `return'. + +r. New `caller' builtin to provide a call stack for the bash debugger. + +s. The DEBUG trap is run just before the first command in a function body is + executed, for the debugger. + +t. `for', `select', and `case' command heads are printed when `set -x' is + enabled. + +u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1, + x+2,...,y}. x and y can be integers or single characters; the sequence + may ascend or descend; the increment is always 1. + +v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices) + of array. + +w. New `force_fignore' shopt option; if enabled, suffixes specified by + FIGNORE cause words to be ignored when performing word completion even + if they're the only possibilities. + +x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu + style' (filename:lineno:message) format. + +y. New `-o bashdefault' option to complete and compgen; if set, causes the + whole set of bash completions to be performed if the compspec doesn't + result in a match. + +z. New `-o plusdirs' option to complete and compgen; if set, causes directory + name completion to be performed and the results added to the rest of the + possible completions. + +aa. `kill' is available as a builtin even when the shell is built without + job control. + +bb. New HISTTIMEFORMAT variable; value is a format string to pass to + strftime(3). If set and not null, the `history' builtin prints out + timestamp information according to the specified format when displaying + history entries. If set, bash tells the history library to write out + timestamp information when the history file is written. + +cc. The [[ ... ]] command has a new binary `=~' operator that performs + extended regular expression (egrep-like) matching. + +dd. `configure' has a new `--enable-cond-regexp' option (enabled by default) + to enable the =~ operator and regexp matching in [[ ... ]]. + +ee. Subexpressions matched by the =~ operator are placed in the new + BASH_REMATCH array variable. + +ff. New `failglob' option that causes an expansion error when pathname + expansion fails to produce a match. + +gg. New `set -o pipefail' option that causes a pipeline to return a failure + status if any of the processes in the pipeline fail, not just the last + one. + +hh. printf builtin understands two new escape sequences: \" and \?. + +ii. `echo -e' understands two new escape sequences: \" and \?. + +jj. The GNU `gettext' package and libintl have been integrated; the shell's + messages can be translated into different languages. + +kk. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'. + +ll. The error message printed when bash cannot open a shell script supplied + as argument 1 now includes the name of the shell, to better identify + the error as coming from bash. + +mm. The parameter pattern removal and substitution expansions are now much + faster and more efficient when using multibyte characters. + +nn. The `jobs', `kill', and `wait' builtins now accept job control notation + even if job control is not enabled. + +oo. The historical behavior of `trap' that allows a missing `action' argument + to cause each specified signal's handling to be reset to its default is + now only supported when `trap' is given a single non-option argument. + +2. New Features in Readline + +a. History expansion has a new `a' modifier equivalent to the `g' modifier + for compatibility with the BSD csh. + +b. History expansion has a new `G' modifier equivalent to the BSD csh `g' + modifier, which performs a substitution once per word. + +c. All non-incremental search operations may now undo the operation of + replacing the current line with the history line. + +d. The text inserted by an `a' command in vi mode can be reinserted with + `.'. + +e. New bindable variable, `show-all-if-unmodified'. If set, the readline + completer will list possible completions immediately if there is more + than one completion and partial completion cannot be performed. + +f. There is a new application-callable `free_history_entry()' function. + +g. History list entries now contain timestamp information; the history file + functions know how to read and write timestamp information associated + with each entry. + +h. Four new key binding functions have been added: + + rl_bind_key_if_unbound() + rl_bind_key_if_unbound_in_map() + rl_bind_keyseq_if_unbound() + rl_bind_keyseq_if_unbound_in_map() + +i. New application variable, rl_completion_quote_character, set to any + quote character readline finds before it calls the application completion + function. + +j. New application variable, rl_completion_suppress_quote, settable by an + application completion function. If set to non-zero, readline does not + attempt to append a closing quote to a completed word. + +k. New application variable, rl_completion_found_quote, set to a non-zero + value if readline determines that the word to be completed is quoted. + Set before readline calls any application completion function. + +l. New function hook, rl_completion_word_break_hook, called when readline + needs to break a line into words when completion is attempted. Allows + the word break characters to vary based on position in the line. + +m. New bindable command: unix-filename-rubout. Does the same thing as + unix-word-rubout, but adds `/' to the set of word delimiters. + +n. When listing completions, directories have a `/' appended if the + `mark-directories' option has been enabled. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.05b since +the release of bash-2.05a. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. If set, TMOUT is the default timeout for the `read' builtin. + +b. `type' has two new options: `-f' suppresses shell function lookup, and + `-P' forces a $PATH search. + +c. New code to handle multibyte characters. + +d. `select' was changed to be more ksh-compatible, in that the menu is + reprinted each time through the loop only if REPLY is set to NULL. + The previous behavior is available as a compile-time option. + +e. `complete -d' and `complete -o dirnames' now force a slash to be + appended to names which are symlinks to directories. + +f. There is now a bindable edit-and-execute-command readline command, + like the vi-mode `v' command, bound to C-xC-e in emacs mode. + +g. Added support for ksh93-like [:word:] character class in pattern matching. + +h. The $'...' quoting construct now expands \cX to Control-X. + +i. A new \D{...} prompt expansion; passes the `...' to strftime and inserts + the result into the expanded prompt. + +j. The shell now performs arithmetic in the largest integer size the + machine supports (intmax_t), instead of long. + +k. If a numeric argument is supplied to one of the bash globbing completion + functions, a `*' is appended to the word before expansion is attempted. + +l. The bash globbing completion functions now allow completions to be listed + with double tabs or if `show-all-if-ambiguous' is set. + +m. New `-o nospace' option for `complete' and `compgen' builtins; suppresses + readline's appending a space to the completed word. + +n. New `here-string' redirection operator: <<< word. + +o. When displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +p. There is a new configuration option `--enable-mem-scramble', controls + bash malloc behavior of writing garbage characters into memory at + allocation and free time. + +q. The `complete' and `compgen' builtins now have a new `-s/-A service' + option to complete on names from /etc/services. + +r. `read' has a new `-u fd' option to read from a specified file descriptor. + +s. Fix the completion code so that expansion errors in a directory name + don't cause a longjmp back to the command loop. + +t. Fixed word completion inside command substitution to work a little more + intuitively. + +u. The `printf' %q format specifier now uses $'...' quoting to print the + argument if it contains non-printing characters. + +v. The `declare' and `typeset' builtins have a new `-t' option. When applied + to functions, it causes the DEBUG trap to be inherited by the named + function. Currently has no effect on variables. + +w. The DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops. + +x. The expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires. + +y. The bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better. Code + from Gary Vaughan. + +z. New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup + and close). + +aa. There is a new `-l' invocation option, equivalent to `--login'. + +bb. The `hash' builtin has a new `-l' option to list contents in a reusable + format, and a `-d' option to remove a name from the hash table. + +cc. There is now support for placing the long help text into separate files + installed into ${datadir}/bash. Not enabled by default; can be turned + on with `--enable-separate-helpfiles' option to configure. + +dd. All builtins that take operands accept a `--' pseudo-option, except + `echo'. + +ee. The `echo' builtin now accepts \0xxx (zero to three octal digits following + the `0') in addition to \xxx (one to three octal digits) for SUSv3/XPG6/ + POSIX.1-2001 compliance. + + +2. New Features in Readline + +a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both + be bound to readline functions. Now the arrow keys may be used in vi + insert mode. + +b. When listing completions, and the number of lines displayed is more than + the screen length, readline uses an internal pager to display the results. + This is controlled by the `page-completions' variable (default on). + +c. New code to handle editing and displaying multibyte characters. + +d. The behavior introduced in bash-2.05a of deciding whether or not to + append a slash to a completed name that is a symlink to a directory has + been made optional, controlled by the `mark-symlinked-directories' + variable (default is the 2.05a behavior). + +e. The `insert-comment' command now acts as a toggle if given a numeric + argument: if the first characters on the line don't specify a + comment, insert one; if they do, delete the comment text + +f. New application-settable completion variable: + rl_completion_mark_symlink_dirs, allows an application's completion + function to temporarily override the user's preference for appending + slashes to names which are symlinks to directories. + +g. New function available to application completion functions: + rl_completion_mode, to tell how the completion function was invoked + and decide which argument to supply to rl_complete_internal (to list + completions, etc.). + +h. Readline now has an overwrite mode, toggled by the `overwrite-mode' + bindable command, which could be bound to `Insert'. + +i. New application-settable completion variable: + rl_completion_suppress_append, inhibits appending of + rl_completion_append_character to completed words. + +j. New key bindings when reading an incremental search string: ^W yanks + the currently-matched word out of the current line into the search + string; ^Y yanks the rest of the current line into the search string, + DEL or ^H deletes characters from the search string. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.05a since +the release of bash-2.05. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Added support for DESTDIR installation root prefix, so you can do a + `make install DESTDIR=bash-root' and do easier binary packaging. + +b. Added support for builtin printf "'" flag character as per latest POSIX + drafts. + +c. Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from + ISO C99). + +d. New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications + (bash doesn't use very much of what it returns). + +e. `set [-+]o nolog' is recognized as required by the latest POSIX drafts, + but ignored. + +f. New read-only `shopt' option: login_shell. Set to non-zero value if the + shell is a login shell. + +g. New `\A' prompt string escape sequence; expands to time in 24 HH:MM format. + +h. New `-A group/-g' option to complete and compgen; does group name + completion. + +i. New `-t' option to `hash' to list hash values for each filename argument. + +j. New [-+]O invocation option to set and unset `shopt' options at startup. + +k. configure's `--with-installed-readline' option now takes an optional + `=PATH' suffix to set the root of the tree where readline is installed + to PATH. + +l. The ksh-like `ERR' trap has been added. The `ERR' trap will be run + whenever the shell would have exited if the -e option were enabled. + It is not inherited by shell functions. + +m. `readonly', `export', and `declare' now print variables which have been + given attributes but not set by assigning a value as just a command and + a variable name (like `export foo') when listing, as the latest POSIX + drafts require. + +n. `bashbug' now requires that the subject be changed from the default. + +o. configure has a new `--enable-largefile' option, like other GNU utilities. + +p. `for' loops now allow empty word lists after `in', like the latest POSIX + drafts require. + +q. The builtin `ulimit' now takes two new non-numeric arguments: `hard', + meaning the current hard limit, and `soft', meaning the current soft + limit, in addition to `unlimited' + +r. `ulimit' now prints the option letter associated with a particular + resource when printing more than one limit. + +s. `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is + one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively. + +t. The `printf' builtin now handles the %a and %A conversions if they're + implemented by printf(3). + +u. The `printf' builtin now handles the %F conversion (just about like %f). + +v. The `printf' builtin now handles the %n conversion like printf(3). The + corresponding argument is the name of a shell variable to which the + value is assigned. + +2. New Features in Readline + +a. Added extern declaration for rl_get_termcap to readline.h, making it a + public function (it was always there, just not in readline.h). + +b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402, + RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2. + +c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION. + +d. New bindable boolean readline variable: match-hidden-files. Controls + completion of files beginning with a `.' (on Unix). Enabled by default. + +e. The history expansion code now allows any character to terminate a + `:first-' modifier, like csh. + +f. New bindable variable `history-preserve-point'. If set, the history + code attempts to place the user at the same location on each history + line retrived with previous-history or next-history. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.05 since +the release of bash-2.04. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. + +b. The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. + +c. `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces + +d. A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. + +e. When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +f. Bash-2.05 once again honors the current locale setting when processing + ranges within pattern matching bracket expressions (e.g., [A-Z]). + +2. New Features in Readline + +a. The blink timeout for paren matching is now settable by applications, + via the rl_set_paren_blink_timeout() function. + +b. _rl_executing_macro has been renamed to rl_executing_macro, which means + it's now part of the public interface. + +c. Readline has a new variable, rl_readline_state, which is a bitmap that + encapsulates the current state of the library; intended for use by + callbacks and hook functions. + +d. New application-callable function rl_set_prompt(const char *prompt): + expands its prompt string argument and sets rl_prompt to the result. + +e. New application-callable function rl_set_screen_size(int rows, int cols): + public method for applications to set readline's idea of the screen + dimensions. + +f. New function, rl_get_screen_size (int *rows, int *columns), returns + readline's idea of the screen dimensions. + +g. The timeout in rl_gather_tyi (readline keyboard input polling function) + is now settable via a function (rl_set_keyboard_input_timeout()). + +h. Renamed the max_input_history variable to history_max_entries; the old + variable is maintained for backwards compatibility. + +i. The list of characters that separate words for the history tokenizer is + now settable with a variable: history_word_delimiters. The default + value is as before. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.04 since +the release of bash-2.03. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The history builtin has a `-d offset' option to delete the history entry + at position `offset'. + +b. The prompt expansion code has two new escape sequences: \j, the number of + active jobs; and \l, the basename of the shell's tty device name. + +c. The `bind' builtin has a new `-x' option to bind key sequences to shell + commands. + +d. There is a new shell option, no_empty_command_completion, which, when + enabled, disables command completion when TAB is typed on an empty line. + +e. The `help' builtin has a `-s' option to just print a builtin's usage + synopsis. + +f. There are several new arithmetic operators: id++, id-- (variable + post-increment/decrement), ++id, --id (variable pre-increment/decrement), + expr1 , expr2 (comma operator). + +g. There is a new ksh-93 style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done + +h. The `read' builtin has a number of new options: + -t timeout only wait timeout seconds for input + -n nchars only read nchars from input instead of a full line + -d delim read until delim rather than newline + -s don't echo input chars as they are read + +i. The redirection code now handles several filenames specially: + /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or + not they are present in the file system. + +j. The redirection code now recognizes pathnames of the form + /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket + of the appropriate type to the specified port on the specified host. + +k. The ksh-93 ${!prefix*} expansion, which expands to the names of all + shell variables with prefix PREFIX, has been implemented. + +l. There is a new dynamic variable, FUNCNAME, which expands to the name of + a currently-executing function. Assignments to FUNCNAME have no effect. + +m. The GROUPS variable is no longer readonly; assignments to it are silently + discarded. This means it can be unset. + +n. A new programmable completion facility, with two new builtin commands: + complete and compgen. + +o. configure has a new option, `--enable-progcomp', to compile in the + programmable completion features (enabled by default). + +p. `shopt' has a new option, `progcomp', to enable and disable programmable + completion at runtime. + +q. Unsetting HOSTFILE now clears the list of hostnames used for completion. + +r. configure has a new option, `--enable-bash-malloc', replacing the old + `--with-gnu-malloc' (which is still present for backwards compatibility). + +s. There is a new manual page describing rbash, the restricted shell. + +t. `bashbug' has new `--help' and `--version' options. + +u. `shopt' has a new `xpg_echo' option, which controls the behavior of + `echo' with respect to backslash-escaped characters at runtime. + +v. If NON_INTERACTIVE_LOGIN_SHELLS is defined, all login shells read the + startup files, even if they are not interactive. + +w. The LC_NUMERIC variable is now treated specially, and used to set the + LC_NUMERIC locale category for number formatting, e.g., when `printf' + displays floating-point numbers. + +2. New features in Readline + +a. Parentheses matching is now always compiled into readline, and enabled + or disabled when the value of the `blink-matching-paren' variable is + changed. + +b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename. + +c. MS-DOS systems now use ~/_history as the default history file. + +d. history-search-{forward,backward} now leave the point at the end of the + line when the string to search for is empty, like + {reverse,forward}-search-history. + +e. history-search-{forward,backward} now leave the last history line found + in the readline buffer if the second or subsequent search fails. + +f. New function for use by applications: rl_on_new_line_with_prompt, used + when an application displays the prompt itself before calling readline(). + +g. New variable for use by applications: rl_already_prompted. An application + that displays the prompt itself before calling readline() must set this to + a non-zero value. + +h. A new variable, rl_gnu_readline_p, always 1. The intent is that an + application can verify whether or not it is linked with the `real' + readline library or some substitute. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.03 since +the release of bash-2.02. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. New `shopt' option, `restricted_shell', indicating whether or not the + shell was started in restricted mode, for use in startup files. + +b. Filename generation is now performed on the words between ( and ) in + array assignments (which it probably should have done all along). + +c. OLDPWD is now auto-exported, as POSIX.2 seems to require. + +d. ENV and BASH_ENV are read-only variables in a restricted shell. + +e. A change was made to the startup file code so that any shell begun with + the `--login' option, even non-interactive shells, will source the login + shell startup files. + +2. New Features in Readline + +a. Many changes to the signal handling: + o Readline now catches SIGQUIT and cleans up the tty before returning; + o A new variable, rl_catch_signals, is available to application writers + to indicate to readline whether or not it should install its own + signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, + SIGTTIN, and SIGTTOU; + o A new variable, rl_catch_sigwinch, is available to application + writers to indicate to readline whether or not it should install its + own signal handler for SIGWINCH, which will chain to the calling + applications's SIGWINCH handler, if one is installed; + o There is a new function, rl_free_line_state, for application signal + handlers to call to free up the state associated with the current + line after receiving a signal; + o There is a new function, rl_cleanup_after_signal, to clean up the + display and terminal state after receiving a signal; + o There is a new function, rl_reset_after_signal, to reinitialize the + terminal and display state after an application signal handler + returns and readline continues + +b. There is a new function, rl_resize_terminal, to reset readline's idea of + the screen size after a SIGWINCH. + +c. New public functions: rl_save_prompt and rl_restore_prompt. These were + previously private functions with a `_' prefix. + +d. New function hook: rl_pre_input_hook, called just before readline starts + reading input, after initialization. + +e. New function hook: rl_display_matches_hook, called when readline would + display the list of completion matches. The new function + rl_display_match_list is what readline uses internally, and is available + for use by application functions called via this hook. + +f. New bindable function, delete-char-or-list, like tcsh. + +g. A new variable, rl_erase_empty_line, which, if set by an application using + readline, will cause readline to erase, prompt and all, lines on which the + only thing typed was a newline. + +h. New bindable variable: `isearch-terminators'. + +i. New bindable function: `forward-backward-delete-char' (unbound by default). + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.02 since +the release of bash-2.01.1. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. A new version of malloc, based on the older GNU malloc, that has many + changes, is more page-based, is more conservative with memory usage, + and does not `orphan' large blocks when they are freed. + +b. A new version of gmalloc, based on the old GLIBC malloc, with many + changes and range checking included by default. + +c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic + Regular Expression matching, including character classes, collating + symbols, equivalence classes, and support for case-insensitive pattern + matching. + +d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been + implemented, controlled by a new `shopt' option, `extglob'. + +e. There is a new ksh-like `[[' compound command, which implements + extended `test' functionality. + +f. There is a new `printf' builtin, implemented according to the POSIX.2 + specification. + +g. There is a new feature for command substitution: $(< filename) now expands + to the contents of `filename', with any trailing newlines removed + (equivalent to $(cat filename)). + +h. There are new tilde prefixes which expand to directories from the + directory stack. + +i. There is a new `**' arithmetic operator to do exponentiation. + +j. There are new configuration options to control how bash is linked: + `--enable-profiling', to allow bash to be profiled with gprof, and + `--enable-static-link', to allow bash to be linked statically. + +k. There is a new configuration option, `--enable-cond-command', which + controls whether or not the `[[' command is included. It is on by + default. + +l. There is a new configuration option, `--enable-extended-glob', which + controls whether or not the ksh extended globbing feature is included. + It is enabled by default. + +m. There is a new configuration #define in config.h.top that, when enabled, + will cause all login shells to source /etc/profile and one of the user- + specific login shell startup files, whether or not the shell is + interactive. + +n. There is a new invocation option, `--dump-po-strings', to dump + a shell script's translatable strings ($"...") in GNU `po' format. + +o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive + pattern matching when globbing filenames and using the `case' construct. + +p. There is a new `shopt' option, `huponexit', which, when enabled, causes + the shell to send SIGHUP to all jobs when an interactive login shell + exits. + +q. `bind' has a new `-u' option, which takes a readline function name as an + argument and unbinds all key sequences bound to that function in a + specified keymap. + +r. `disown' now has `-a' and `-r' options, to limit operation to all jobs + and running jobs, respectively. + +s. The `shopt' `-p' option now causes output to be displayed in a reusable + format. + +t. `test' has a new `-N' option, which returns true if the filename argument + has been modified since it was last accessed. + +u. `umask' now has a `-p' option to print output in a reusable format. + +v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...' + translation code. It expands to the character whose ascii code is NNN + in hexadecimal. + +w. The prompt string expansion code has a new `\r' escape sequence. + +x. The shell may now be cross-compiled for the CYGWIN32 environment on + a Unix machine. + +2. New Features in Readline + +a. There is now an option for `iterative' yank-last-arg handline, so a user + can keep entering `M-.', yanking the last argument of successive history + lines. + +b. New variable, `print-completions-horizontally', which causes completion + matches to be displayed across the screen (like `ls -x') rather than up + and down the screen (like `ls'). + +c. New variable, `completion-ignore-case', which causes filename completion + and matching to be performed case-insensitively. + +d. There is a new bindable command, `magic-space', which causes history + expansion to be performed on the current readline buffer and a space to + be inserted into the result. + +e. There is a new bindable command, `menu-complete', which enables tcsh-like + menu completion (successive executions of menu-complete insert a single + completion match, cycling through the list of possible completions). + +f. There is a new bindable command, `paste-from-clipboard', for use on Win32 + systems, to insert the text from the Win32 clipboard into the editing + buffer. + +g. The key sequence translation code now understands printf-style backslash + escape sequences, including \NNN octal escapes. These escape sequences + may be used in key sequence definitions or macro values. + +h. An `$include' inputrc file parser directive has been added. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.01 since +the release of bash-2.0. As always, the manual page (doc/bash.1) is the +place to look for complete descriptions. + +1. New Features in Bash + +a. There is a new builtin array variable: GROUPS, the set of groups to which + the user belongs. This is used by the test suite. + +2. New Features in Readline + +a. If a key sequence bound to `universal-argument' is read while reading a + numeric argument started with `universal-argument', it terminates the + argument but is otherwise ignored. This provides a way to insert multiple + instances of a digit string, and is how GNU emacs does it. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-2.0 since +the release of bash-1.14.7. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. There is a new invocation option, -D, that dumps translatable strings + in a script. + +b. The `long' invocation options must now be prefixed with `--'. + +c. New long invocation options: --dump-strings, --help, --verbose + +d. The `nolineediting' invocation option was renamed to `noediting'. + +e. The `nobraceexpansion' and `quiet' long invocation options were removed. + +f. The `--help' and `--version' long options now work as the GNU coding + standards specify. + +g. If invoked as `sh', bash now enters posix mode after reading the + startup files, and reads and executes commands from the file named + by $ENV if interactive (as POSIX.2 specifies). A login shell invoked + as `sh' reads $ENV after /etc/profile and ~/.profile. + +h. There is a new reserved word, `time', for timing pipelines, builtin + commands, and shell functions. It uses the value of the TIMEFORMAT + variable as a format string describing how to print the timing + statistics. + +i. The $'...' quoting syntax expands ANSI-C escapes in ... and leaves the + result single-quoted. + +j. The $"..." quoting syntax performs locale-specific translation of ... + and leaves the result double-quoted. + +k. LINENO now works correctly in functions. + +l. New variables: DIRSTACK, PIPESTATUS, BASH_VERSINFO, HOSTNAME, SHELLOPTS, + MACHTYPE. The first three are array variables. + +m. The BASH_VERSION and BASH_VERSINFO variables now include the shell's + `release status' (alpha[N], beta[N], release). + +n. Some variables have been removed: MAIL_WARNING, notify, history_control, + command_oriented_history, glob_dot_filenames, allow_null_glob_expansion, + nolinks, hostname_completion_file, noclobber, no_exit_on_failed_exec, and + cdable_vars. Most of them are now implemented with the new `shopt' + builtin; others were already implemented by `set'. + +o. Bash now uses some new variables: LC_ALL, LC_MESSAGES, LC_CTYPE, + LC_COLLATE, LANG, GLOBIGNORE, HISTIGNORE. + +p. The shell now supports integer-indexed arrays of unlimited length, + with a new compound assignment syntax and changes to the appropriate + builtin commands (declare/typeset, read, readonly, etc.). The array + index may be an arithmetic expression. + +q. ${!var}: indirect variable expansion, equivalent to eval \${$var}. + +r. ${paramter:offset[:length]}: variable substring extraction. + +s. ${parameter/pattern[/[/]string]}: variable pattern substitution. + +t. The $[...] arithmetic expansion syntax is no longer supported, in + favor of $((...)). + +u. Aliases can now be expanded in shell scripts with a shell option + (shopt expand_aliases). + +v. History and history expansion can now be used in scripts with + set -o history and set -H. + +w. All builtins now return an exit status of 2 for incorrect usage. + +x. Interactive shells resend SIGHUP to all running or stopped children + if (and only if) they exit due to a SIGHUP. + +y. New prompting expansions: \a, \e, \H, \T, \@, \v, \V. + +z. Variable expansion in prompt strings is now controllable via a shell + option (shopt promptvars). + +aa. Bash now defaults to using command-oriented history. + +bb. The history file ($HISTFILE) is now truncated to $HISTFILESIZE after + being written. + +cc. The POSIX.2 conditional arithmetic evaluation syntax (expr ? expr : expr) + has been implemented. + +dd. Each builtin now accepts `--' to signify the end of the options, except + as documented (echo, etc.). + +ee. All builtins use -p to display values in a re-readable format where + appropriate, except as documented (echo, type, etc.). + +ff. The `alias' builtin has a new -p option. + +gg. Changes to the `bind' builtin: + o has new options: -psPSVr. + o the `-d' option was renamed to `-p' + o the `-v' option now dumps variables; the old `-v' is now `-P' + +hh. The `bye' synonym for `exit' was removed. + +ii. The -L and -P options to `cd' and `pwd' have been documented. + +jj. The `cd' builtin now does spelling correction on the directory name + by default. This is settable with a shell option (shopt cdspell). + +kk. The `declare' builtin has new options: -a, -F, -p. + +ll. The `dirs' builtin has new options: -c, -p, -v. + +mm. The new `disown' builtin removes jobs from the shell's jobs table + or inhibits the resending of SIGHUP when the shell receives a + SIGHUP. + +nn. The `echo' builtin has a new escape character: \e. + +oo. The `enable' builtin can now load new builtins dynamically from shared + objects on systems with the dlopen/dlsym interface. There are a number + of examples in the examples/loadables directory. There are also + new options: -d, -f, -s, -p. + +pp. The `-all' option to `enable' was removed in favor of `-a'. + +qq. The `exec' builtin has new options: -l, -c, -a. + +rr. The `hash' builtin has a new option: -p. + +ss. The `history' builtin has new options: -c, -p, -s. + +tt. The `jobs' builtin has new options: -r, -s. + +uu. The `kill' builtin has new options: -n signum, -l signame. + +vv. The `pushd' and `popd' builtins have a new option: -n. + +ww. The `read' builtin has new options: -p prompt, -e, -a. + +xx. The `readonly' builtin has a new -a option, and the -n option was removed. + +yy. Changes to the `set' builtin: + o new options: -B, -o keyword, -o onecmd, -o history + o options removed: -l, -d, -o nohash + o options changed: +o, -h, -o hashall + o now displays variables in a format that can be re-read as input + +zz. The new `shopt' builtin controls shell optional behavior previously + done by setting and unsetting certain shell variables. + +aaa. The `test' builtin has new operators: -o option, s1 == s2, s1 < s2, + and s1 > s2, where s1 and s2 are strings. + +bbb. There is a new trap, DEBUG, executed after every simple command. + +ccc. The `trap' builtin has a new -p option. + +ddd. The `ulimit' builtin has a new -l option on 4.4BSD-based systems. + +eee. The PS1, PS2, PATH, and IFS variables may now be unset. + +fff. The restricted shell mode has been expanded and is now documented. + +ggg. Security improvements: + o functions are not imported from the environment if running setuid + or with -p + o no startup files are sourced if running setuid or with -p + +hhh. The documentation has been overhauled: the texinfo manual was + expanded, and HTML versions of the man page and texinfo manual + are included. + +iii. Changes to Posix mode: + o Command lookup now finds special builtins before shell functions. + o Failure of a special builtin causes a non-interactive shell to + exit. Failures are defined in the POSIX.2 specification. + o If the `cd' builtin finds a directory to change to using $CDPATH, + the value assigned to PWD when `cd' completes does not contain + any symbolic links. + o A non-interactive shell exits if a variable assignment error + occurs when no command name follows the assignment statements. + o A non-interactive shell exits if the interation variable in a + `for' statement or the selection variable in a `select' statement + is read-only or another variable assignment error occurs. + o The `<>' redirection operator now opens a file for both stdin and + stdout by default, not just when in posix mode. + o Assignment statements preceding special builtins now persist in + the shell's environment when the builtin completes. + + Posix mode is now completely POSIX.2-compliant (modulo bugs). When + invoked as sh, bash should be completely POSIX.2-compliant. + +jjj. The default value of PS1 is now "\s-\v\$ ". + +kkk. The ksh-like ((...)) arithmetic command syntax has been implemented. + This is exactly equivalent to `let "..."'. + +lll. Integer constants have been extended to base 64. + +mmm. The `ulimit' builtin now sets both hard and soft limits and reports the + soft limit by default. + +2. New Features in Readline + +a. New variables: enable-keypad, input-meta (new name for meta-flag), + mark-directories, visible-stats (now documented), disable-completion, + comment-begin. + +b. New bindable commands: kill-region, copy-region-as-kill, + copy-backward-word, copy-forward-word, set-mark, exchange-point-and-mark, + character-search, character-search-backward, insert-comment, + glob-expand-word, glob-list-expansions, dump-variables, dump-macros. + +c. New emacs keybindings: delete-horizontal-space (M-\), + insert-completions (M-*), possible-completions (M-=). + +d. The history-search-backward and history-search-forward commands were + modified to be the same as previous-line and next-line if point is at + the start of the line. + +e. More file types are available for the visible-stats mode. + +3. Changes of interest in the Bash implementation + +a. There is a new autoconf-based configuration mechanism. + +b. More things have been moved from Posix mode to standard shell behavior. + +c. The trace output (set -x) now inserts quotes where necessary so it can + be reused as input. + +d. There is a compile-time option for a system-wide interactive shell + startup file (disabled by default). + +e. The YACC grammar is smaller and tighter, and all 66 shift-reduce + conflicts are gone. Several parsing bugs have been fixed. + +f. Builtin option parsing has been regularized (using internal_getopt()), + with the exception of `echo', `type', and `set'. + +g. Builtins now return standard usage messages constructed from the + `short doc' used by the help builtin. + +h. Completion now quotes using backslashes by default, but honors + user-supplied quotes. + +i. The GNU libc malloc is available as a configure-time option. + +j. There are more internationalization features; bash uses gettext if + it is available. The $"..." translation syntax uses the current + locale and gettext. + +k. There is better reporting of job termination when the shell is not + interactive. + +l. The shell is somewhat more efficient: it uses a little less memory and + makes fewer system calls. + +4. Changes of interest in the Readline implementation + +a. There is now support for readline `callback' functions. + +b. There is now support for user-supplied input, redisplay, and terminal + preparation functions. + +c. Most of the shell-specific code in readline has been generalized or + removed. + +d. Most of the annoying redisplay bugs have been fixed, notably the problems + with incremental search and excessive redrawing when special characters + appear in the prompt string. + +e. There are new library functions and variables available to application + writers, most having to do with completion and quoting. + +f. The NEWLINE character (^J) is now treated as a search terminator by the + incremental search functions. +------------------------------------------------------------------------------- + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. @@ -1,8 +1,8 @@ Introduction ============ -This is GNU Bash, version 4.1. Bash is the GNU Project's Bourne -Again SHell, a complete implementation of the POSIX.2 shell spec, +This is GNU Bash, version 4.2. Bash is the GNU Project's Bourne +Again SHell, a complete implementation of the POSIX shell spec, but also with interactive command line editing, job control on architectures that support it, csh-like features such as history substitution and brace expansion, and a slew of other features. @@ -12,11 +12,11 @@ large Unix-style man page. The man page is the definitive description of the shell's features. See the file POSIX for a discussion of how the Bash defaults differ -from the POSIX.2 spec and a description of the Bash `posix mode'. +from the POSIX spec and a description of the Bash `posix mode'. There are some user-visible incompatibilities between this version -of Bash and previous widely-distributed versions, bash-3.2 and -bash-4.0. For details, see the file COMPAT. The NEWS file tersely +of Bash and previous widely-distributed versions, bash-4.0 and +bash-4.1. For details, see the file COMPAT. The NEWS file tersely lists features that are new in this release. Bash is free software, distributed under the terms of the [GNU] General @@ -27,10 +27,10 @@ see the file COPYING. A number of frequently-asked questions are answered in the file `doc/FAQ'. -To compile Bash, try typing `./configure', then `make'. Bash -auto-configures the build process, so no further intervention -should be necessary. Bash builds with `gcc' by default if it is -available. If you want to use `cc' instead, type +To compile Bash, type `./configure', then `make'. Bash auto-configures +the build process, so no further intervention should be necessary. Bash +builds with `gcc' by default if it is available. If you want to use `cc' +instead, type CC=cc ./configure diff --git a/README~ b/README~ new file mode 100644 index 00000000..c5c71590 --- /dev/null +++ b/README~ @@ -0,0 +1,96 @@ +Introduction +============ + +This is GNU Bash, version 4.1. Bash is the GNU Project's Bourne +Again SHell, a complete implementation of the POSIX.2 shell spec, +but also with interactive command line editing, job control on +architectures that support it, csh-like features such as history +substitution and brace expansion, and a slew of other features. +For more information on the features of Bash that are new to this +type of shell, see the file `doc/bashref.texi'. There is also a +large Unix-style man page. The man page is the definitive description +of the shell's features. + +See the file POSIX for a discussion of how the Bash defaults differ +from the POSIX.2 spec and a description of the Bash `posix mode'. + +There are some user-visible incompatibilities between this version +of Bash and previous widely-distributed versions, bash-3.2 and +bash-4.0. For details, see the file COMPAT. The NEWS file tersely +lists features that are new in this release. + +Bash is free software, distributed under the terms of the [GNU] General +Public License as published by the Free Software Foundation, +version 3 of the License (or any later version). For more information, +see the file COPYING. + +A number of frequently-asked questions are answered in the file +`doc/FAQ'. + +To compile Bash, try typing `./configure', then `make'. Bash +auto-configures the build process, so no further intervention +should be necessary. Bash builds with `gcc' by default if it is +available. If you want to use `cc' instead, type + + CC=cc ./configure + +if you are using a Bourne-style shell. If you are not, the following +may work: + + env CC=cc ./configure + +Read the file INSTALL in this directory for more information about how +to customize and control the build process. The file NOTES contains +platform-specific installation and configuration information. + +If you are a csh user and wish to convert your csh aliases to Bash +aliases, you may wish to use the script `examples/misc/alias-conv.sh' +as a starting point. The script `examples/misc/cshtobash' is a +more ambitious script that attempts to do a more complete job. + +Reporting Bugs +============== + +Bug reports for bash should be sent to: + + bug-bash@gnu.org + +using the `bashbug' program that is built and installed at the same +time as bash. + +The discussion list `bug-bash@gnu.org' often contains information +about new ports of Bash, or discussions of new features or behavior +changes that people would like. This mailing list is also available +as a usenet newsgroup: gnu.bash.bug. + +When you send a bug report, please use the `bashbug' program that is +built at the same time as bash. If bash fails to build, try building +bashbug directly with `make bashbug'. If you cannot build `bashbug', +please send mail to bug-bash@gnu.org with the following information: + + * the version number and release status of Bash (e.g., 2.05a-release) + * the machine and OS that it is running on (you may run + `bashversion -l' from the bash build directory for this information) + * a list of the compilation flags or the contents of `config.h', if + appropriate + * a description of the bug + * a recipe for recreating the bug reliably + * a fix for the bug if you have one! + +The `bashbug' program includes much of this automatically. + +If you would like to contact the Bash maintainers directly, send mail +to bash-maintainers@gnu.org. + +While the Bash maintainers do not promise to fix all bugs, we would +like this shell to be the best that we can make it. + +Enjoy! + +Chet Ramey +chet.ramey@case.edu + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0 index 3b3ecb30..d49e2c7f 100644 --- a/autom4te.cache/output.0 +++ b/autom4te.cache/output.0 @@ -1,7 +1,7 @@ @%:@! /bin/sh @%:@ From configure.in for Bash 4.2, version 4.033. @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.63 for bash 4.2-devel. +@%:@ Generated by GNU Autoconf 2.63 for bash 4.2-alpha. @%:@ @%:@ Report bugs to <bug-bash@gnu.org>. @%:@ @@ -597,8 +597,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='4.2-devel' -PACKAGE_STRING='bash 4.2-devel' +PACKAGE_VERSION='4.2-alpha' +PACKAGE_STRING='bash 4.2-alpha' PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_unique_file="shell.h" @@ -1408,7 +1408,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 4.2-devel to adapt to many kinds of systems. +\`configure' configures bash 4.2-alpha to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1473,7 +1473,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 4.2-devel:";; + short | recursive ) echo "Configuration of bash 4.2-alpha:";; esac cat <<\_ACEOF @@ -1648,7 +1648,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 4.2-devel +bash configure 4.2-alpha generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1662,7 +1662,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 4.2-devel, which was +It was created by bash $as_me 4.2-alpha, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -2076,7 +2076,7 @@ ac_config_headers="$ac_config_headers config.h" BASHVERS=4.2 -RELSTATUS=devel +RELSTATUS=alpha case "$RELSTATUS" in alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -31860,7 +31860,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 4.2-devel, which was +This file was extended by bash $as_me 4.2-alpha, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -31923,7 +31923,7 @@ Report bugs to <bug-autoconf@gnu.org>." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -bash config.status 4.2-devel +bash config.status 4.2-alpha configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/autom4te.cache/requests b/autom4te.cache/requests index 014c1526..4a5e08c9 100644 --- a/autom4te.cache/requests +++ b/autom4te.cache/requests @@ -15,25 +15,25 @@ 'configure.in' ], { - 'AM_PROG_F77_C_O' => 1, '_LT_AC_TAGCONFIG' => 1, - 'm4_pattern_forbid' => 1, + 'AM_PROG_F77_C_O' => 1, 'AC_INIT' => 1, - 'AC_CANONICAL_TARGET' => 1, + 'm4_pattern_forbid' => 1, '_AM_COND_IF' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CANONICAL_TARGET' => 1, 'AC_SUBST' => 1, - 'AC_CANONICAL_HOST' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_FC_SRCEXT' => 1, + 'AC_CANONICAL_HOST' => 1, 'AC_PROG_LIBTOOL' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'LT_CONFIG_LTDL_DIR' => 1, - 'AC_CONFIG_LINKS' => 1, 'AC_REQUIRE_AUX_FILE' => 1, - 'LT_SUPPORTED_TAG' => 1, + 'AC_CONFIG_LINKS' => 1, 'm4_sinclude' => 1, + 'LT_SUPPORTED_TAG' => 1, 'AM_MAINTAINER_MODE' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, '_m4_warn' => 1, @@ -49,13 +49,13 @@ 'AC_CANONICAL_BUILD' => 1, 'AC_FC_FREEFORM' => 1, 'AH_OUTPUT' => 1, - 'AC_CONFIG_AUX_DIR' => 1, '_AM_SUBST_NOTMAKE' => 1, - 'AM_PROG_CC_C_O' => 1, - 'm4_pattern_allow' => 1, + 'AC_CONFIG_AUX_DIR' => 1, 'sinclude' => 1, - 'AM_CONDITIONAL' => 1, + 'm4_pattern_allow' => 1, + 'AM_PROG_CC_C_O' => 1, 'AC_CANONICAL_SYSTEM' => 1, + 'AM_CONDITIONAL' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'm4_include' => 1, diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0 index 57ddf76c..c38446da 100644 --- a/autom4te.cache/traces.0 +++ b/autom4te.cache/traces.0 @@ -1,4 +1,4 @@ -m4trace:configure.in:29: -1- AC_INIT([bash], [4.2-devel], [bug-bash@gnu.org]) +m4trace:configure.in:29: -1- AC_INIT([bash], [4.2-alpha], [bug-bash@gnu.org]) m4trace:configure.in:29: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:29: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:29: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) @@ -993,6 +993,20 @@ bash_forward_shellword (count, key) return 0; } + /* Are we in a quoted string? If we are, move to the end of the quoted + string and continue the outer loop. We only want quoted strings, not + backslash-escaped characters, but char_is_quoted doesn't + differentiate. */ + if (char_is_quoted (rl_line_buffer, p) && p > 0 && rl_line_buffer[p-1] != '\\') + { + do + ADVANCE_CHAR (rl_line_buffer, slen, p); + while (p < rl_end && char_is_quoted (rl_line_buffer, p)); + count--; + continue; + } + + /* Rest of code assumes we are not in a quoted string. */ /* Move forward until we hit a non-metacharacter. */ while (p < rl_end && (c = rl_line_buffer[p]) && WORDDELIM (c)) { diff --git a/bashline.c~ b/bashline.c~ index 7fee50d2..9bb2c25c 100644 --- a/bashline.c~ +++ b/bashline.c~ @@ -993,6 +993,18 @@ bash_forward_shellword (count, key) return 0; } + /* Are we in a quoted string? If we are, move to the end of the quoted + string and continue the outer loop. */ + if (char_is_quoted (rl_line_buffer, p) && p > 0 && rl_line_buffer[p-1] != '\\') + { + do + ADVANCE_CHAR (rl_line_buffer, slen, p); + while (p < rl_end && char_is_quoted (rl_line_buffer, p)); + count--; + continue; + } + + /* Rest of code assumes we are not in a quoted string. */ /* Move forward until we hit a non-metacharacter. */ while (p < rl_end && (c = rl_line_buffer[p]) && WORDDELIM (c)) { @@ -1400,12 +1412,12 @@ bash_default_completion (text, start, end, qc, compflags) /* If the word starts in `~', and there is no slash in the word, then try completing this word as a username. */ - if (matches ==0 && *text == '~' && mbschr (text, '/') == 0) + if (matches == 0 && *text == '~' && mbschr (text, '/') == 0) matches = rl_completion_matches (text, rl_username_completion_function); /* Another one. Why not? If the word starts in '@', then look through the world of known hostnames for completion first. */ - if (!matches && perform_hostname_completion && *text == '@') + if (matches == 0 && perform_hostname_completion && *text == '@') matches = rl_completion_matches (text, hostname_completion_function); /* And last, (but not least) if this word is in a command position, then @@ -63,7 +63,7 @@ static const int brace_arg_separator = ','; static int brace_gobbler __P((char *, size_t, int *, int)); static char **expand_amble __P((char *, size_t, int)); static char **expand_seqterm __P((char *, size_t)); -static char **mkseq __P((int, int, int, int, int)); +static char **mkseq __P((intmax_t, intmax_t, int, int, int)); static char **array_concat __P((char **, char **)); #else static int brace_gobbler (); @@ -307,13 +307,15 @@ expand_amble (text, tlen, flags) static char ** mkseq (start, end, incr, type, width) - int start, end, incr, type, width; + intmax_t start, end; + int incr, type, width; { - int n, i; + intmax_t n; + int i; char **result, *t; - n = abs (end - start) + 1; - result = strvec_create (n + 1); + i = abs (end - start) + 1; + result = strvec_create (i + 1); if (incr == 0) incr = 1; @@ -362,7 +364,8 @@ expand_seqterm (text, tlen) size_t tlen; { char *t, *lhs, *rhs; - int i, lhs_t, rhs_t, lhs_v, rhs_v, incr, lhs_l, rhs_l, width; + int i, lhs_t, rhs_t, incr, lhs_l, rhs_l, width; + intmax_t lhs_v, rhs_v; intmax_t tl, tr; char **result, *ep, *oep; diff --git a/braces.c.save1 b/braces.c.save1 new file mode 100644 index 00000000..f787de29 --- /dev/null +++ b/braces.c.save1 @@ -0,0 +1,688 @@ +/* braces.c -- code for doing word expansion in curly braces. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see <http://www.gnu.org/licenses/>. +*/ + +/* Stuff in curly braces gets expanded before all other shell expansions. */ + +#include "config.h" + +#if defined (BRACE_EXPANSION) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include <sys/types.h> +# endif +# include <unistd.h> +#endif + +#include "bashansi.h" + +#if defined (SHELL) +# include "shell.h" +#endif /* SHELL */ + +#include "general.h" +#include "shmbutil.h" +#include "chartypes.h" + +#define brace_whitespace(c) (!(c) || (c) == ' ' || (c) == '\t' || (c) == '\n') + +#define BRACE_SEQ_SPECIFIER ".." + +extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); + +/* Basic idea: + + Segregate the text into 3 sections: preamble (stuff before an open brace), + postamble (stuff after the matching close brace) and amble (stuff after + preamble, and before postamble). Expand amble, and then tack on the + expansions to preamble. Expand postamble, and tack on the expansions to + the result so far. + */ + +/* The character which is used to separate arguments. */ +static const int brace_arg_separator = ','; + +#if defined (__P) +static int brace_gobbler __P((char *, size_t, int *, int)); +static char **expand_amble __P((char *, size_t, int)); +static char **expand_seqterm __P((char *, size_t)); +static char **mkseq __P((int, int, int, int, int)); +static char **array_concat __P((char **, char **)); +#else +static int brace_gobbler (); +static char **expand_amble (); +static char **expand_seqterm (); +static char **mkseq(); +static char **array_concat (); +#endif + +#if 0 +static void +dump_result (a) + char **a; +{ + int i; + + for (i = 0; a[i]; i++) + printf ("dump_result: a[%d] = -%s-\n", i, a[i]); +} +#endif + +/* Return an array of strings; the brace expansion of TEXT. */ +char ** +brace_expand (text) + char *text; +{ + register int start; + size_t tlen; + char *preamble, *postamble, *amble; + size_t alen; + char **tack, **result; + int i, j, c, c1; + + DECLARE_MBSTATE; + + /* Find the text of the preamble. */ + tlen = strlen (text); + i = 0; +#if defined (CSH_BRACE_COMPAT) + c = brace_gobbler (text, tlen, &i, '{'); /* } */ +#else + /* Make sure that when we exit this loop, c == 0 or text[i] begins a + valid brace expansion sequence. */ + do + { + c = brace_gobbler (text, tlen, &i, '{'); /* } */ + c1 = c; + /* Verify that c begins a valid brace expansion word. If it doesn't, we + go on. Loop stops when there are no more open braces in the word. */ + if (c) + { + start = j = i + 1; /* { */ + c = brace_gobbler (text, tlen, &j, '}'); + if (c == 0) /* it's not */ + { + i++; + c = c1; + continue; + } + else /* it is */ + { + c = c1; + break; + } + } + else + break; + } + while (c); +#endif /* !CSH_BRACE_COMPAT */ + + preamble = (char *)xmalloc (i + 1); + strncpy (preamble, text, i); + preamble[i] = '\0'; + + result = (char **)xmalloc (2 * sizeof (char *)); + result[0] = preamble; + result[1] = (char *)NULL; + + /* Special case. If we never found an exciting character, then + the preamble is all of the text, so just return that. */ + if (c != '{') + return (result); + + /* Find the amble. This is the stuff inside this set of braces. */ + start = ++i; + c = brace_gobbler (text, tlen, &i, '}'); + + /* What if there isn't a matching close brace? */ + if (c == 0) + { +#if defined (NOTDEF) + /* Well, if we found an unquoted BRACE_ARG_SEPARATOR between START + and I, then this should be an error. Otherwise, it isn't. */ + j = start; + while (j < i) + { + if (text[j] == '\\') + { + j++; + ADVANCE_CHAR (text, tlen, j); + continue; + } + + if (text[j] == brace_arg_separator) + { /* { */ + strvec_dispose (result); + report_error ("no closing `%c' in %s", '}', text); + throw_to_top_level (); + } + ADVANCE_CHAR (text, tlen, j); + } +#endif + free (preamble); /* Same as result[0]; see initialization. */ + result[0] = savestring (text); + return (result); + } + +#if defined (SHELL) + amble = substring (text, start, i); + alen = i - start; +#else + amble = (char *)xmalloc (1 + (i - start)); + strncpy (amble, &text[start], (i - start)); + alen = i - start; + amble[alen] = '\0'; +#endif + +#if defined (SHELL) + INITIALIZE_MBSTATE; + + /* If the amble does not contain an unquoted BRACE_ARG_SEPARATOR, then + just return without doing any expansion. */ + j = 0; + while (amble[j]) + { + if (amble[j] == '\\') + { + j++; + ADVANCE_CHAR (amble, alen, j); + continue; + } + + if (amble[j] == brace_arg_separator) + break; + + ADVANCE_CHAR (amble, alen, j); + } + + if (amble[j] == 0) + { + tack = expand_seqterm (amble, alen); + if (tack) + goto add_tack; + else + { + free (amble); + free (preamble); + result[0] = savestring (text); + return (result); + } + } +#endif /* SHELL */ + + tack = expand_amble (amble, alen, 0); +add_tack: + result = array_concat (result, tack); + free (amble); + strvec_dispose (tack); + + postamble = text + i + 1; + + tack = brace_expand (postamble); + result = array_concat (result, tack); + strvec_dispose (tack); + + return (result); +} + +/* Expand the text found inside of braces. We simply try to split the + text at BRACE_ARG_SEPARATORs into separate strings. We then brace + expand each slot which needs it, until there are no more slots which + need it. */ +static char ** +expand_amble (text, tlen, flags) + char *text; + size_t tlen; + int flags; +{ + char **result, **partial; + char *tem; + int start, i, c; + + DECLARE_MBSTATE; + + result = (char **)NULL; + + start = i = 0; + c = 1; + while (c) + { + c = brace_gobbler (text, tlen, &i, brace_arg_separator); +#if defined (SHELL) + tem = substring (text, start, i); +#else + tem = (char *)xmalloc (1 + (i - start)); + strncpy (tem, &text[start], (i - start)); + tem[i- start] = '\0'; +#endif + + partial = brace_expand (tem); + + if (!result) + result = partial; + else + { + register int lr, lp, j; + + lr = strvec_len (result); + lp = strvec_len (partial); + + result = strvec_resize (result, lp + lr + 1); + + for (j = 0; j < lp; j++) + result[lr + j] = partial[j]; + + result[lr + j] = (char *)NULL; + free (partial); + } + free (tem); + ADVANCE_CHAR (text, tlen, i); + start = i; + } + return (result); +} + +#define ST_BAD 0 +#define ST_INT 1 +#define ST_CHAR 2 +#define ST_ZINT 3 + +static char ** +mkseq (start, end, incr, type, width) + int start, end; + int incr, type, width; +{ + int n, i; + char **result, *t; + + n = abs (end - start) + 1; + result = strvec_create (n + 1); + + if (incr == 0) + incr = 1; + + if (start > end && incr > 0) + incr = -incr; + else if (start < end && incr < 0) + incr = -incr; + + /* Make sure we go through the loop at least once, so {3..3} prints `3' */ + i = 0; + n = start; + do + { +#if defined (SHELL) + QUIT; /* XXX - memory leak here */ +#endif + if (type == ST_INT) + result[i++] = itos (n); + else if (type == ST_ZINT) + { + int len; + len = asprintf (&t, "%0*d", width, n); + result[i++] = t; + } + else + { + t = (char *)xmalloc (2); + t[0] = n; + t[1] = '\0'; + result[i++] = t; + } + n += incr; + if ((incr < 0 && n < end) || (incr > 0 && n > end)) + break; + } + while (1); + + result[i] = (char *)0; + return (result); +} + +static char ** +expand_seqterm (text, tlen) + char *text; + size_t tlen; +{ + char *t, *lhs, *rhs; + int i, lhs_t, rhs_t, lhs_v, rhs_v, incr, lhs_l, rhs_l, width; + intmax_t tl, tr; + char **result, *ep, *oep; + + t = strstr (text, BRACE_SEQ_SPECIFIER); + if (t == 0) + return ((char **)NULL); + + lhs_l = t - text; /* index of start of BRACE_SEQ_SPECIFIER */ + lhs = substring (text, 0, lhs_l); + rhs = substring (text, lhs_l + sizeof(BRACE_SEQ_SPECIFIER) - 1, tlen); + + if (lhs[0] == 0 || rhs[0] == 0) + { + free (lhs); + free (rhs); + return ((char **)NULL); + } + + /* Now figure out whether LHS and RHS are integers or letters. Both + sides have to match. */ + lhs_t = (legal_number (lhs, &tl)) ? ST_INT : + ((ISALPHA (lhs[0]) && lhs[1] == 0) ? ST_CHAR : ST_BAD); + + /* Decide on rhs and whether or not it looks like the user specified + an increment */ + ep = 0; + if (ISDIGIT (rhs[0]) || ((rhs[0] == '+' || rhs[0] == '-') && ISDIGIT (rhs[1]))) + { + rhs_t = ST_INT; + tr = strtoimax (rhs, &ep, 10); + if (ep && *ep != 0 && *ep != '.') + rhs_t = ST_BAD; /* invalid */ + } + else if (ISALPHA (rhs[0]) && (rhs[1] == 0 || rhs[1] == '.')) + { + rhs_t = ST_CHAR; + ep = rhs + 1; + } + else + { + rhs_t = ST_BAD; + ep = 0; + } + + incr = 1; + if (rhs_t != ST_BAD) + { + oep = ep; + if (ep && *ep == '.' && ep[1] == '.' && ep[2]) + incr = strtoimax (ep + 2, &ep, 10); + if (*ep != 0) + rhs_t = ST_BAD; /* invalid incr */ + tlen -= ep - oep; + } + + if (lhs_t != rhs_t || lhs_t == ST_BAD || rhs_t == ST_BAD) + { + free (lhs); + free (rhs); + return ((char **)NULL); + } + + /* OK, we have something. It's either a sequence of integers, ascending + or descending, or a sequence or letters, ditto. Generate the sequence, + put it into a string vector, and return it. */ + + if (lhs_t == ST_CHAR) + { + lhs_v = (unsigned char)lhs[0]; + rhs_v = (unsigned char)rhs[0]; + width = 1; + } + else + { + lhs_v = tl; /* integer truncation */ + rhs_v = tr; + + /* Decide whether or not the terms need zero-padding */ + rhs_l = tlen - lhs_l - sizeof (BRACE_SEQ_SPECIFIER) + 1; + width = 0; + if (lhs_l > 1 && lhs[0] == '0') + width = lhs_l, lhs_t = ST_ZINT; + if (lhs_l > 2 && lhs[0] == '-' && lhs[1] == '0') + width = lhs_l, lhs_t = ST_ZINT; + if (rhs_l > 1 && rhs[0] == '0' && width < rhs_l) + width = rhs_l, lhs_t = ST_ZINT; + if (rhs_l > 2 && rhs[0] == '-' && rhs[1] == '0' && width < rhs_l) + width = rhs_l, lhs_t = ST_ZINT; + + if (width < lhs_l && lhs_t == ST_ZINT) + width = lhs_l; + if (width < rhs_l && lhs_t == ST_ZINT) + width = rhs_l; + } + + result = mkseq (lhs_v, rhs_v, incr, lhs_t, width); + + free (lhs); + free (rhs); + + return (result); +} + +/* Start at INDEX, and skip characters in TEXT. Set INDEX to the + index of the character matching SATISFY. This understands about + quoting. Return the character that caused us to stop searching; + this is either the same as SATISFY, or 0. */ +/* If SATISFY is `}', we are looking for a brace expression, so we + should enforce the rules that govern valid brace expansions: + 1) to count as an arg separator, a comma or `..' has to be outside + an inner set of braces. +*/ +static int +brace_gobbler (text, tlen, indx, satisfy) + char *text; + size_t tlen; + int *indx; + int satisfy; +{ + register int i, c, quoted, level, commas, pass_next; +#if defined (SHELL) + int si; + char *t; +#endif + DECLARE_MBSTATE; + + level = quoted = pass_next = 0; +#if defined (CSH_BRACE_COMPAT) + commas = 1; +#else + commas = (satisfy == '}') ? 0 : 1; +#endif + + i = *indx; + while (c = text[i]) + { + if (pass_next) + { + pass_next = 0; + ADVANCE_CHAR (text, tlen, i); + continue; + } + + /* A backslash escapes the next character. This allows backslash to + escape the quote character in a double-quoted string. */ + if (c == '\\' && (quoted == 0 || quoted == '"' || quoted == '`')) + { + pass_next = 1; + i++; + continue; + } + +#if defined (SHELL) + /* If compiling for the shell, treat ${...} like \{...} */ + if (c == '$' && text[i+1] == '{' && quoted != '\'') /* } */ + { + pass_next = 1; + i++; + if (quoted == 0) + level++; + continue; + } +#endif + + if (quoted) + { + if (c == quoted) + quoted = 0; + ADVANCE_CHAR (text, tlen, i); + continue; + } + + if (c == '"' || c == '\'' || c == '`') + { + quoted = c; + i++; + continue; + } + +#if defined (SHELL) + /* Pass new-style command and process substitutions through unchanged. */ + if ((c == '$' || c == '<' || c == '>') && text[i+1] == '(') /* ) */ + { + si = i + 2; + t = extract_command_subst (text, &si, 0); + i = si; + free (t); + i++; + continue; + } +#endif + + if (c == satisfy && level == 0 && quoted == 0 && commas > 0) + { + /* We ignore an open brace surrounded by whitespace, and also + an open brace followed immediately by a close brace preceded + by whitespace. */ + if (c == '{' && + ((!i || brace_whitespace (text[i - 1])) && + (brace_whitespace (text[i + 1]) || text[i + 1] == '}'))) + { + i++; + continue; + } + + break; + } + + if (c == '{') + level++; + else if (c == '}' && level) + level--; +#if !defined (CSH_BRACE_COMPAT) + else if (satisfy == '}' && c == brace_arg_separator && level == 0) + commas++; + else if (satisfy == '}' && STREQN (text+i, BRACE_SEQ_SPECIFIER, 2) && + text[i+2] != satisfy && level == 0) + commas++; +#endif + + ADVANCE_CHAR (text, tlen, i); + } + + *indx = i; + return (c); +} + +/* Return a new array of strings which is the result of appending each + string in ARR2 to each string in ARR1. The resultant array is + len (arr1) * len (arr2) long. For convenience, ARR1 (and its contents) + are free ()'ed. ARR1 can be NULL, in that case, a new version of ARR2 + is returned. */ +static char ** +array_concat (arr1, arr2) + char **arr1, **arr2; +{ + register int i, j, len, len1, len2; + register char **result; + + if (arr1 == 0) + return (strvec_copy (arr2)); + + if (arr2 == 0) + return (strvec_copy (arr1)); + + len1 = strvec_len (arr1); + len2 = strvec_len (arr2); + + result = (char **)xmalloc ((1 + (len1 * len2)) * sizeof (char *)); + + len = 0; + for (i = 0; i < len1; i++) + { + int strlen_1 = strlen (arr1[i]); + + for (j = 0; j < len2; j++) + { + result[len] = (char *)xmalloc (1 + strlen_1 + strlen (arr2[j])); + strcpy (result[len], arr1[i]); + strcpy (result[len] + strlen_1, arr2[j]); + len++; + } + free (arr1[i]); + } + free (arr1); + + result[len] = (char *)NULL; + return (result); +} + +#if defined (TEST) +#include <stdio.h> + +fatal_error (format, arg1, arg2) + char *format, *arg1, *arg2; +{ + report_error (format, arg1, arg2); + exit (1); +} + +report_error (format, arg1, arg2) + char *format, *arg1, *arg2; +{ + fprintf (stderr, format, arg1, arg2); + fprintf (stderr, "\n"); +} + +main () +{ + char example[256]; + + for (;;) + { + char **result; + int i; + + fprintf (stderr, "brace_expand> "); + + if ((!fgets (example, 256, stdin)) || + (strncmp (example, "quit", 4) == 0)) + break; + + if (strlen (example)) + example[strlen (example) - 1] = '\0'; + + result = brace_expand (example); + + for (i = 0; result[i]; i++) + printf ("%s\n", result[i]); + + free_array (result); + } +} + +/* + * Local variables: + * compile-command: "gcc -g -Bstatic -DTEST -o brace_expand braces.c general.o" + * end: + */ + +#endif /* TEST */ +#endif /* BRACE_EXPANSION */ diff --git a/braces.c~ b/braces.c~ new file mode 100644 index 00000000..15e9c7fa --- /dev/null +++ b/braces.c~ @@ -0,0 +1,689 @@ +/* braces.c -- code for doing word expansion in curly braces. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see <http://www.gnu.org/licenses/>. +*/ + +/* Stuff in curly braces gets expanded before all other shell expansions. */ + +#include "config.h" + +#if defined (BRACE_EXPANSION) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include <sys/types.h> +# endif +# include <unistd.h> +#endif + +#include "bashansi.h" + +#if defined (SHELL) +# include "shell.h" +#endif /* SHELL */ + +#include "general.h" +#include "shmbutil.h" +#include "chartypes.h" + +#define brace_whitespace(c) (!(c) || (c) == ' ' || (c) == '\t' || (c) == '\n') + +#define BRACE_SEQ_SPECIFIER ".." + +extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); + +/* Basic idea: + + Segregate the text into 3 sections: preamble (stuff before an open brace), + postamble (stuff after the matching close brace) and amble (stuff after + preamble, and before postamble). Expand amble, and then tack on the + expansions to preamble. Expand postamble, and tack on the expansions to + the result so far. + */ + +/* The character which is used to separate arguments. */ +static const int brace_arg_separator = ','; + +#if defined (__P) +static int brace_gobbler __P((char *, size_t, int *, int)); +static char **expand_amble __P((char *, size_t, int)); +static char **expand_seqterm __P((char *, size_t)); +static char **mkseq __P((intmax_t, intmax_t, int, int, int)); +static char **array_concat __P((char **, char **)); +#else +static int brace_gobbler (); +static char **expand_amble (); +static char **expand_seqterm (); +static char **mkseq(); +static char **array_concat (); +#endif + +#if 0 +static void +dump_result (a) + char **a; +{ + int i; + + for (i = 0; a[i]; i++) + printf ("dump_result: a[%d] = -%s-\n", i, a[i]); +} +#endif + +/* Return an array of strings; the brace expansion of TEXT. */ +char ** +brace_expand (text) + char *text; +{ + register int start; + size_t tlen; + char *preamble, *postamble, *amble; + size_t alen; + char **tack, **result; + int i, j, c, c1; + + DECLARE_MBSTATE; + + /* Find the text of the preamble. */ + tlen = strlen (text); + i = 0; +#if defined (CSH_BRACE_COMPAT) + c = brace_gobbler (text, tlen, &i, '{'); /* } */ +#else + /* Make sure that when we exit this loop, c == 0 or text[i] begins a + valid brace expansion sequence. */ + do + { + c = brace_gobbler (text, tlen, &i, '{'); /* } */ + c1 = c; + /* Verify that c begins a valid brace expansion word. If it doesn't, we + go on. Loop stops when there are no more open braces in the word. */ + if (c) + { + start = j = i + 1; /* { */ + c = brace_gobbler (text, tlen, &j, '}'); + if (c == 0) /* it's not */ + { + i++; + c = c1; + continue; + } + else /* it is */ + { + c = c1; + break; + } + } + else + break; + } + while (c); +#endif /* !CSH_BRACE_COMPAT */ + + preamble = (char *)xmalloc (i + 1); + strncpy (preamble, text, i); + preamble[i] = '\0'; + + result = (char **)xmalloc (2 * sizeof (char *)); + result[0] = preamble; + result[1] = (char *)NULL; + + /* Special case. If we never found an exciting character, then + the preamble is all of the text, so just return that. */ + if (c != '{') + return (result); + + /* Find the amble. This is the stuff inside this set of braces. */ + start = ++i; + c = brace_gobbler (text, tlen, &i, '}'); + + /* What if there isn't a matching close brace? */ + if (c == 0) + { +#if defined (NOTDEF) + /* Well, if we found an unquoted BRACE_ARG_SEPARATOR between START + and I, then this should be an error. Otherwise, it isn't. */ + j = start; + while (j < i) + { + if (text[j] == '\\') + { + j++; + ADVANCE_CHAR (text, tlen, j); + continue; + } + + if (text[j] == brace_arg_separator) + { /* { */ + strvec_dispose (result); + report_error ("no closing `%c' in %s", '}', text); + throw_to_top_level (); + } + ADVANCE_CHAR (text, tlen, j); + } +#endif + free (preamble); /* Same as result[0]; see initialization. */ + result[0] = savestring (text); + return (result); + } + +#if defined (SHELL) + amble = substring (text, start, i); + alen = i - start; +#else + amble = (char *)xmalloc (1 + (i - start)); + strncpy (amble, &text[start], (i - start)); + alen = i - start; + amble[alen] = '\0'; +#endif + +#if defined (SHELL) + INITIALIZE_MBSTATE; + + /* If the amble does not contain an unquoted BRACE_ARG_SEPARATOR, then + just return without doing any expansion. */ + j = 0; + while (amble[j]) + { + if (amble[j] == '\\') + { + j++; + ADVANCE_CHAR (amble, alen, j); + continue; + } + + if (amble[j] == brace_arg_separator) + break; + + ADVANCE_CHAR (amble, alen, j); + } + + if (amble[j] == 0) + { + tack = expand_seqterm (amble, alen); + if (tack) + goto add_tack; + else + { + free (amble); + free (preamble); + result[0] = savestring (text); + return (result); + } + } +#endif /* SHELL */ + + tack = expand_amble (amble, alen, 0); +add_tack: + result = array_concat (result, tack); + free (amble); + strvec_dispose (tack); + + postamble = text + i + 1; + + tack = brace_expand (postamble); + result = array_concat (result, tack); + strvec_dispose (tack); + + return (result); +} + +/* Expand the text found inside of braces. We simply try to split the + text at BRACE_ARG_SEPARATORs into separate strings. We then brace + expand each slot which needs it, until there are no more slots which + need it. */ +static char ** +expand_amble (text, tlen, flags) + char *text; + size_t tlen; + int flags; +{ + char **result, **partial; + char *tem; + int start, i, c; + + DECLARE_MBSTATE; + + result = (char **)NULL; + + start = i = 0; + c = 1; + while (c) + { + c = brace_gobbler (text, tlen, &i, brace_arg_separator); +#if defined (SHELL) + tem = substring (text, start, i); +#else + tem = (char *)xmalloc (1 + (i - start)); + strncpy (tem, &text[start], (i - start)); + tem[i- start] = '\0'; +#endif + + partial = brace_expand (tem); + + if (!result) + result = partial; + else + { + register int lr, lp, j; + + lr = strvec_len (result); + lp = strvec_len (partial); + + result = strvec_resize (result, lp + lr + 1); + + for (j = 0; j < lp; j++) + result[lr + j] = partial[j]; + + result[lr + j] = (char *)NULL; + free (partial); + } + free (tem); + ADVANCE_CHAR (text, tlen, i); + start = i; + } + return (result); +} + +#define ST_BAD 0 +#define ST_INT 1 +#define ST_CHAR 2 +#define ST_ZINT 3 + +static char ** +mkseq (start, end, incr, type, width) + intmax_t start, end; + int incr, type, width; +{ + intmax_t n; + int i; + char **result, *t; + + i = abs (end - start) + 1; + result = strvec_create (i + 1); + + if (incr == 0) + incr = 1; + + if (start > end && incr > 0) + incr = -incr; + else if (start < end && incr < 0) + incr = -incr; + + /* Make sure we go through the loop at least once, so {3..3} prints `3' */ + i = 0; + n = start; + do + { +#if defined (SHELL) + QUIT; /* XXX - memory leak here */ +#endif + if (type == ST_INT) + result[i++] = itos (n); + else if (type == ST_ZINT) + { + int len; + len = asprintf (&t, "%0*d", width, n); + result[i++] = t; + } + else + { + t = (char *)xmalloc (2); + t[0] = n; + t[1] = '\0'; + result[i++] = t; + } + n += incr; + if ((incr < 0 && n < end) || (incr > 0 && n > end)) + break; + } + while (1); + + result[i] = (char *)0; + return (result); +} + +static char ** +expand_seqterm (text, tlen) + char *text; + size_t tlen; +{ + char *t, *lhs, *rhs; + int i, lhs_t, rhs_t, lhs_v, rhs_v, incr, lhs_l, rhs_l, width; + intmax_t tl, tr; + char **result, *ep, *oep; + + t = strstr (text, BRACE_SEQ_SPECIFIER); + if (t == 0) + return ((char **)NULL); + + lhs_l = t - text; /* index of start of BRACE_SEQ_SPECIFIER */ + lhs = substring (text, 0, lhs_l); + rhs = substring (text, lhs_l + sizeof(BRACE_SEQ_SPECIFIER) - 1, tlen); + + if (lhs[0] == 0 || rhs[0] == 0) + { + free (lhs); + free (rhs); + return ((char **)NULL); + } + + /* Now figure out whether LHS and RHS are integers or letters. Both + sides have to match. */ + lhs_t = (legal_number (lhs, &tl)) ? ST_INT : + ((ISALPHA (lhs[0]) && lhs[1] == 0) ? ST_CHAR : ST_BAD); + + /* Decide on rhs and whether or not it looks like the user specified + an increment */ + ep = 0; + if (ISDIGIT (rhs[0]) || ((rhs[0] == '+' || rhs[0] == '-') && ISDIGIT (rhs[1]))) + { + rhs_t = ST_INT; + tr = strtoimax (rhs, &ep, 10); + if (ep && *ep != 0 && *ep != '.') + rhs_t = ST_BAD; /* invalid */ + } + else if (ISALPHA (rhs[0]) && (rhs[1] == 0 || rhs[1] == '.')) + { + rhs_t = ST_CHAR; + ep = rhs + 1; + } + else + { + rhs_t = ST_BAD; + ep = 0; + } + + incr = 1; + if (rhs_t != ST_BAD) + { + oep = ep; + if (ep && *ep == '.' && ep[1] == '.' && ep[2]) + incr = strtoimax (ep + 2, &ep, 10); + if (*ep != 0) + rhs_t = ST_BAD; /* invalid incr */ + tlen -= ep - oep; + } + + if (lhs_t != rhs_t || lhs_t == ST_BAD || rhs_t == ST_BAD) + { + free (lhs); + free (rhs); + return ((char **)NULL); + } + + /* OK, we have something. It's either a sequence of integers, ascending + or descending, or a sequence or letters, ditto. Generate the sequence, + put it into a string vector, and return it. */ + + if (lhs_t == ST_CHAR) + { + lhs_v = (unsigned char)lhs[0]; + rhs_v = (unsigned char)rhs[0]; + width = 1; + } + else + { + lhs_v = tl; /* integer truncation */ + rhs_v = tr; + + /* Decide whether or not the terms need zero-padding */ + rhs_l = tlen - lhs_l - sizeof (BRACE_SEQ_SPECIFIER) + 1; + width = 0; + if (lhs_l > 1 && lhs[0] == '0') + width = lhs_l, lhs_t = ST_ZINT; + if (lhs_l > 2 && lhs[0] == '-' && lhs[1] == '0') + width = lhs_l, lhs_t = ST_ZINT; + if (rhs_l > 1 && rhs[0] == '0' && width < rhs_l) + width = rhs_l, lhs_t = ST_ZINT; + if (rhs_l > 2 && rhs[0] == '-' && rhs[1] == '0' && width < rhs_l) + width = rhs_l, lhs_t = ST_ZINT; + + if (width < lhs_l && lhs_t == ST_ZINT) + width = lhs_l; + if (width < rhs_l && lhs_t == ST_ZINT) + width = rhs_l; + } + + result = mkseq (lhs_v, rhs_v, incr, lhs_t, width); + + free (lhs); + free (rhs); + + return (result); +} + +/* Start at INDEX, and skip characters in TEXT. Set INDEX to the + index of the character matching SATISFY. This understands about + quoting. Return the character that caused us to stop searching; + this is either the same as SATISFY, or 0. */ +/* If SATISFY is `}', we are looking for a brace expression, so we + should enforce the rules that govern valid brace expansions: + 1) to count as an arg separator, a comma or `..' has to be outside + an inner set of braces. +*/ +static int +brace_gobbler (text, tlen, indx, satisfy) + char *text; + size_t tlen; + int *indx; + int satisfy; +{ + register int i, c, quoted, level, commas, pass_next; +#if defined (SHELL) + int si; + char *t; +#endif + DECLARE_MBSTATE; + + level = quoted = pass_next = 0; +#if defined (CSH_BRACE_COMPAT) + commas = 1; +#else + commas = (satisfy == '}') ? 0 : 1; +#endif + + i = *indx; + while (c = text[i]) + { + if (pass_next) + { + pass_next = 0; + ADVANCE_CHAR (text, tlen, i); + continue; + } + + /* A backslash escapes the next character. This allows backslash to + escape the quote character in a double-quoted string. */ + if (c == '\\' && (quoted == 0 || quoted == '"' || quoted == '`')) + { + pass_next = 1; + i++; + continue; + } + +#if defined (SHELL) + /* If compiling for the shell, treat ${...} like \{...} */ + if (c == '$' && text[i+1] == '{' && quoted != '\'') /* } */ + { + pass_next = 1; + i++; + if (quoted == 0) + level++; + continue; + } +#endif + + if (quoted) + { + if (c == quoted) + quoted = 0; + ADVANCE_CHAR (text, tlen, i); + continue; + } + + if (c == '"' || c == '\'' || c == '`') + { + quoted = c; + i++; + continue; + } + +#if defined (SHELL) + /* Pass new-style command and process substitutions through unchanged. */ + if ((c == '$' || c == '<' || c == '>') && text[i+1] == '(') /* ) */ + { + si = i + 2; + t = extract_command_subst (text, &si, 0); + i = si; + free (t); + i++; + continue; + } +#endif + + if (c == satisfy && level == 0 && quoted == 0 && commas > 0) + { + /* We ignore an open brace surrounded by whitespace, and also + an open brace followed immediately by a close brace preceded + by whitespace. */ + if (c == '{' && + ((!i || brace_whitespace (text[i - 1])) && + (brace_whitespace (text[i + 1]) || text[i + 1] == '}'))) + { + i++; + continue; + } + + break; + } + + if (c == '{') + level++; + else if (c == '}' && level) + level--; +#if !defined (CSH_BRACE_COMPAT) + else if (satisfy == '}' && c == brace_arg_separator && level == 0) + commas++; + else if (satisfy == '}' && STREQN (text+i, BRACE_SEQ_SPECIFIER, 2) && + text[i+2] != satisfy && level == 0) + commas++; +#endif + + ADVANCE_CHAR (text, tlen, i); + } + + *indx = i; + return (c); +} + +/* Return a new array of strings which is the result of appending each + string in ARR2 to each string in ARR1. The resultant array is + len (arr1) * len (arr2) long. For convenience, ARR1 (and its contents) + are free ()'ed. ARR1 can be NULL, in that case, a new version of ARR2 + is returned. */ +static char ** +array_concat (arr1, arr2) + char **arr1, **arr2; +{ + register int i, j, len, len1, len2; + register char **result; + + if (arr1 == 0) + return (strvec_copy (arr2)); + + if (arr2 == 0) + return (strvec_copy (arr1)); + + len1 = strvec_len (arr1); + len2 = strvec_len (arr2); + + result = (char **)xmalloc ((1 + (len1 * len2)) * sizeof (char *)); + + len = 0; + for (i = 0; i < len1; i++) + { + int strlen_1 = strlen (arr1[i]); + + for (j = 0; j < len2; j++) + { + result[len] = (char *)xmalloc (1 + strlen_1 + strlen (arr2[j])); + strcpy (result[len], arr1[i]); + strcpy (result[len] + strlen_1, arr2[j]); + len++; + } + free (arr1[i]); + } + free (arr1); + + result[len] = (char *)NULL; + return (result); +} + +#if defined (TEST) +#include <stdio.h> + +fatal_error (format, arg1, arg2) + char *format, *arg1, *arg2; +{ + report_error (format, arg1, arg2); + exit (1); +} + +report_error (format, arg1, arg2) + char *format, *arg1, *arg2; +{ + fprintf (stderr, format, arg1, arg2); + fprintf (stderr, "\n"); +} + +main () +{ + char example[256]; + + for (;;) + { + char **result; + int i; + + fprintf (stderr, "brace_expand> "); + + if ((!fgets (example, 256, stdin)) || + (strncmp (example, "quit", 4) == 0)) + break; + + if (strlen (example)) + example[strlen (example) - 1] = '\0'; + + result = brace_expand (example); + + for (i = 0; result[i]; i++) + printf ("%s\n", result[i]); + + free_array (result); + } +} + +/* + * Local variables: + * compile-command: "gcc -g -Bstatic -DTEST -o brace_expand braces.c general.o" + * end: + */ + +#endif /* TEST */ +#endif /* BRACE_EXPANSION */ diff --git a/builtins/cd.def b/builtins/cd.def index 5526c4df..148c59db 100644 --- a/builtins/cd.def +++ b/builtins/cd.def @@ -283,6 +283,7 @@ cd_builtin (list) free (temp); } +#if 0 /* changed for bash-4.2 Posix cd description steps 5-6 */ /* POSIX.2 says that if `.' does not appear in $CDPATH, we don't try the current directory, so we just punt now with an error message if POSIXLY_CORRECT is non-zero. The check for cdpath[0] @@ -293,6 +294,7 @@ cd_builtin (list) builtin_error ("%s: %s", dirname, strerror (ENOENT)); return (EXECUTION_FAILURE); } +#endif } else dirname = list->word->word; diff --git a/builtins/trap.def b/builtins/trap.def index 9523cfc3..2119f5b3 100644 --- a/builtins/trap.def +++ b/builtins/trap.def @@ -35,7 +35,11 @@ value. If ARG is the null string each SIGNAL_SPEC is ignored by the shell and by the commands it invokes. If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If -a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. +a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If +a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a +script run by the . or source builtins finishes executing. A SIGNAL_SPEC +of ERR means to execute ARG each time a command's failure would cause the +shell to exit when the -e option is enabled. If no arguments are supplied, trap prints the list of commands associated with each signal. @@ -1,7 +1,7 @@ #! /bin/sh # From configure.in for Bash 4.2, version 4.033. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.63 for bash 4.2-devel. +# Generated by GNU Autoconf 2.63 for bash 4.2-alpha. # # Report bugs to <bug-bash@gnu.org>. # @@ -597,8 +597,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='4.2-devel' -PACKAGE_STRING='bash 4.2-devel' +PACKAGE_VERSION='4.2-alpha' +PACKAGE_STRING='bash 4.2-alpha' PACKAGE_BUGREPORT='bug-bash@gnu.org' ac_unique_file="shell.h" @@ -1408,7 +1408,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 4.2-devel to adapt to many kinds of systems. +\`configure' configures bash 4.2-alpha to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1473,7 +1473,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 4.2-devel:";; + short | recursive ) echo "Configuration of bash 4.2-alpha:";; esac cat <<\_ACEOF @@ -1648,7 +1648,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 4.2-devel +bash configure 4.2-alpha generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1662,7 +1662,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 4.2-devel, which was +It was created by bash $as_me 4.2-alpha, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -2076,7 +2076,7 @@ ac_config_headers="$ac_config_headers config.h" BASHVERS=4.2 -RELSTATUS=devel +RELSTATUS=alpha case "$RELSTATUS" in alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -31860,7 +31860,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 4.2-devel, which was +This file was extended by bash $as_me 4.2-alpha, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -31923,7 +31923,7 @@ Report bugs to <bug-autoconf@gnu.org>." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -bash config.status 4.2-devel +bash config.status 4.2-alpha configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/configure.in b/configure.in index a14562d1..f0216460 100644 --- a/configure.in +++ b/configure.in @@ -24,7 +24,7 @@ dnl Process this file with autoconf to produce a configure script. AC_REVISION([for Bash 4.2, version 4.033])dnl define(bashvers, 4.2) -define(relstatus, devel) +define(relstatus, alpha) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) diff --git a/configure.in~ b/configure.in~ index 4c9289aa..a14562d1 100644 --- a/configure.in~ +++ b/configure.in~ @@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -AC_REVISION([for Bash 4.2, version 4.032])dnl +AC_REVISION([for Bash 4.2, version 4.033])dnl define(bashvers, 4.2) define(relstatus, devel) @@ -98,7 +98,7 @@ esac dnl dnl macros for the bash debugger dnl -AM_PATH_LISPDIR +dnl AM_PATH_LISPDIR AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file]) dnl arguments to configure @@ -905,6 +905,8 @@ BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], int, HAVE_SOCKLEN_T) fi BASH_TYPE_RLIMIT +AC_CHECK_SIZEOF(intmax_t, 8) + dnl presence and contents of structures used by system calls BASH_STRUCT_TERMIOS_LDISC BASH_STRUCT_TERMIO_LDISC @@ -0,0 +1,135 @@ +*** ../bash-20101015/redir.c 2009-09-17 10:04:18.000000000 -0400 +--- redir.c 2010-11-06 13:38:22.000000000 -0400 +*************** +*** 63,73 **** + + extern int posixly_correct; + extern REDIRECT *redirection_undo_list; + extern REDIRECT *exec_redirection_undo_list; + + /* Static functions defined and used in this file. */ +- static void add_undo_close_redirect __P((int)); + static void add_exec_redirect __P((REDIRECT *)); + static int add_undo_redirect __P((int, enum r_instruction, int)); + static int expandable_redirection_filename __P((REDIRECT *)); + static int stdin_redirection __P((enum r_instruction, int)); +--- 63,74 ---- + + extern int posixly_correct; ++ extern int last_command_exit_value; + extern REDIRECT *redirection_undo_list; + extern REDIRECT *exec_redirection_undo_list; + + /* Static functions defined and used in this file. */ + static void add_exec_redirect __P((REDIRECT *)); + static int add_undo_redirect __P((int, enum r_instruction, int)); ++ static int add_undo_close_redirect __P((int)); + static int expandable_redirection_filename __P((REDIRECT *)); + static int stdin_redirection __P((enum r_instruction, int)); +*************** +*** 94,97 **** +--- 95,105 ---- + static int heredoc_errno; + ++ #define REDIRECTION_ERROR(r, e) \ ++ if ((r) != 0) \ ++ { \ ++ last_command_exit_value = EXECUTION_FAILURE;\ ++ return ((e) == 0 ? EINVAL : (e));\ ++ } ++ + void + redirection_error (temp, error) +*************** +*** 814,820 **** + /* Only setup to undo it if the thing to undo is active. */ + if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) +! add_undo_redirect (redirector, ri, -1); + else +! add_undo_close_redirect (redirector); + } + +--- 822,829 ---- + /* Only setup to undo it if the thing to undo is active. */ + if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) +! r = add_undo_redirect (redirector, ri, -1); + else +! r = add_undo_close_redirect (redirector); +! REDIRECTION_ERROR (r, errno); + } + +*************** +*** 919,925 **** + /* Only setup to undo it if the thing to undo is active. */ + if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) +! add_undo_redirect (redirector, ri, -1); + else +! add_undo_close_redirect (redirector); + } + +--- 928,935 ---- + /* Only setup to undo it if the thing to undo is active. */ + if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) +! r = add_undo_redirect (redirector, ri, -1); + else +! r = add_undo_close_redirect (redirector); +! REDIRECTION_ERROR(r, errno); + } + +*************** +*** 973,979 **** + /* Only setup to undo it if the thing to undo is active. */ + if (fcntl (redirector, F_GETFD, 0) != -1) +! add_undo_redirect (redirector, ri, redir_fd); + else +! add_undo_close_redirect (redirector); + } + #if defined (BUFFERED_INPUT) +--- 983,990 ---- + /* Only setup to undo it if the thing to undo is active. */ + if (fcntl (redirector, F_GETFD, 0) != -1) +! r = add_undo_redirect (redirector, ri, redir_fd); + else +! r = add_undo_close_redirect (redirector); +! REDIRECTION_ERROR(r, errno); + } + #if defined (BUFFERED_INPUT) +*************** +*** 1047,1052 **** + } + + if ((flags & RX_UNDOABLE) && (fcntl (redirector, F_GETFD, 0) != -1)) +! add_undo_redirect (redirector, ri, -1); + + #if defined (COPROCESS_SUPPORT) +--- 1058,1065 ---- + } + ++ r = 0; + if ((flags & RX_UNDOABLE) && (fcntl (redirector, F_GETFD, 0) != -1)) +! r = add_undo_redirect (redirector, ri, -1); +! REDIRECTION_ERROR (r, errno); + + #if defined (COPROCESS_SUPPORT) +*************** +*** 1165,1169 **** + /* Set up to close FD when we are finished with the current command + and its redirections. */ +! static void + add_undo_close_redirect (fd) + int fd; +--- 1178,1182 ---- + /* Set up to close FD when we are finished with the current command + and its redirections. */ +! static int + add_undo_close_redirect (fd) + int fd; +*************** +*** 1178,1181 **** +--- 1191,1196 ---- + closer->next = redirection_undo_list; + redirection_undo_list = closer; ++ ++ return 0; + } + diff --git a/doc/FAQ-4.2 b/doc/FAQ-4.2 new file mode 100644 index 00000000..e17610a7 --- /dev/null +++ b/doc/FAQ-4.2 @@ -0,0 +1,2273 @@ +This is the Bash FAQ, version 4.12, for Bash version 4.2. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet.ramey@case.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX Shell and Utilities standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 4.2? +B2) Are there any user-visible incompatibilities between bash-4.2 and + previous bash versions? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? +E12) Why don't negative offsets in substring expansion work like I expect? +E13) Why does filename completion misbehave if a colon appears in the filename? +E14) Why does quoting the pattern argument to the regular expression matching + conditional operator (=~) cause matching to stop working? +E15) Tell me more about the shell compatibility level. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 4.2, first made available on NN December, 2010. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 4.2: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-4.2.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.2.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-4.2.tar.gz + +Any patches for the current version are available with the URL: + +ftp://ftp.cwru.edu/pub/bash/bash-4.2-patches/ + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of Unix. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of Unix you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions (now part of Red Hat) as part +of their CYGWIN project. For more information about the project, see +http://www.cygwin.com/. + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done +ports of bash-3.2 and bash-4.0 to the CYGWIN environment, and both +are available as part of their current release. + +Bash-2.05b and later versions should require no local Cygnus changes to +build and run under CYGWIN. + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark began to work with bash-2.05, but I don't know the current status. + +Bash-3.0 compiles and runs with no modifications under Microsoft's Services +for Unix (SFU), once known as Interix. I do not anticipate any problems +with building bash-4.2, but will gladly accept any patches that are needed. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX Shell and Utilities standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard was originally developed by +IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with +the original 1003.1 Working Group and is maintained by the Austin +Group (a joint working group of the IEEE, The Open Group and +ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume +within the set of documents that make up IEEE Std 1003.1-2001, and +thus now the former POSIX.2 (from 1992) is now part of the current +POSIX.1 standard (POSIX 1003.1-2001). + +The Shell and Utilities volume concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. The standard is freely +available on the web at http://www.UNIX-systems.org/version3/ . +Work continues at the Austin Group on maintenance issues; see +http://www.opengroup.org/austin/ to join the discussions. + +Bash is concerned with the aspects of the shell's behavior defined +by the POSIX Shell and Utilities volume. The shell command +language has of course been standardized, including the basic flow +control and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The latest version of the POSIX Shell and Utilities standard is +available (now updated to the 2004 Edition) as part of the Single +UNIX Specification Version 3 at + +http://www.UNIX-systems.org/version3/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 4.2? + +Bash-4.2 is the second revision to the fourth major release of bash. + +Bash-4.2 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-4.2 +distribution): + +o `exec -a foo' now sets $0 to `foo' in an executable shell script without a + leading #!. + +o Subshells begun to execute command substitutions or run shell functions or + builtins in subshells do not reset trap strings until a new trap is + specified. This allows $(trap) to display the caller's traps and the + trap strings to persist until a new trap is set. + +o `trap -p' will now show signals ignored at shell startup, though their + disposition still cannot be modified. + +o $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences. + +o declare/typeset has a new `-g' option, which creates variables in the + global scope even when run in a shell function. + +o test/[/[[ have a new -v variable unary operator, which returns success if + `variable' has been set. + +o Posix parsing changes to allow `! time command' and multiple consecutive + instances of `!' (which toggle) and `time' (which have no cumulative + effect). + +o Posix change to allow `time' as a command by itself to print the elapsed + user, system, and real times for the shell and its children. + +o $((...)) is always parsed as an arithmetic expansion first, instead of as + a potential nested command substitution, as Posix requires. + +o A new FUNCNEST variable to allow the user to control the maximum shell + function nesting (recursive execution) level. + +o The mapfile builtin now supplies a third argument to the callback command: + the line about to be assigned to the supplied array index. + +o The printf builtin has as new %(fmt)T specifier, which allows time values + to use strftime-like formatting. + +o There is a new `compat41' shell option. + +o The cd builtin has a new Posix-mandated `-e' option. + +o Negative subscripts to indexed arrays, previously errors, now are treated + as offsets from the maximum assigned index + 1. + +o Negative length specifications in the ${var:offset:length} expansion, + previously errors, are now treated as offsets from the end of the variable. + +o Parsing change to allow `time -p --'. + +o Posix-mode parsing change to not recognize `time' as a keyword if the + following token begins with a `-'. This means no more Posix-mode + `time -p'. Posix interpretation 267. + +o There is a new `lastpipe' shell option that runs the last command of a + pipeline in the current shell context. The lastpipe option has no + effect if job control is enabled. + +o History expansion no longer expands the `$!' variable expansion. + +o Posix mode shells no longer exit if a variable assignment error occurs + with an assignment preceding a command that is not a special builtin. + +o Non-interactive mode shells exit if -u is enabled an an attempt is made + to use an unset variable with the % or # expansions, the `//', `^', or + `,' expansions, or the parameter length expansion. + +o Posix-mode shells use the argument passed to `.' as-is if a $PATH search + fails, effectively searching the current directory. Posix-2008 change. + +A short feature history dating back to Bash-2.0: + +Bash-4.1 contained the following new features: + +o Here-documents within $(...) command substitutions may once more be + delimited by the closing right paren, instead of requiring a newline. + +o Bash's file status checks (executable, readable, etc.) now take file + system ACLs into account on file systems that support them. + +o Bash now passes environment variables with names that are not valid + shell variable names through into the environment passed to child + processes. + +o The `execute-unix-command' readline function now attempts to clear and + reuse the current line rather than move to a new one after the command + executes. + +o `printf -v' can now assign values to array indices. + +o New `complete -E' and `compopt -E' options that work on the "empty" + completion: completion attempted on an empty command line. + +o New complete/compgen/compopt -D option to define a `default' completion: + a completion to be invoked on command for which no completion has been + defined. If this function returns 124, programmable completion is + attempted again, allowing a user to dynamically build a set of completions + as completion is attempted by having the default completion function + install individual completion functions each time it is invoked. + +o When displaying associative arrays, subscripts are now quoted. + +o Changes to dabbrev-expand to make it more `emacs-like': no space appended + after matches, completions are not sorted, and most recent history entries + are presented first. + +o The [[ and (( commands are now subject to the setting of `set -e' and the + ERR trap. + +o The source/. builtin now removes NUL bytes from the file before attempting + to parse commands. + +o There is a new configuration option (in config-top.h) that forces bash to + forward all history entries to syslog. + +o A new variable $BASHOPTS to export shell options settable using `shopt' to + child processes. + +o There is a new confgure option that forces the extglob option to be + enabled by default. + +o New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace + output to that file descriptor. + +o If the optional left-hand-side of a redirection is of the form {var}, the + shell assigns the file descriptor used to $var or uses $var as the file + descriptor to move or close, depending on the redirection operator. + +o The < and > operators to the [[ conditional command now do string + comparison according to the current locale. + +o Programmable completion now uses the completion for `b' instead of `a' + when completion is attempted on a line like: a $(b c. + +o Force extglob on temporarily when parsing the pattern argument to + the == and != operators to the [[ command, for compatibility. + +o Changed the behavior of interrupting the wait builtin when a SIGCHLD is + received and a trap on SIGCHLD is set to be Posix-mode only. + +o The read builtin has a new `-N nchars' option, which reads exactly NCHARS + characters, ignoring delimiters like newline. + +o The mapfile/readarray builtin no longer stores the commands it invokes via + callbacks in the history list. + +o There is a new `compat40' shopt option. + +o The < and > operators to [[ do string comparisons using the current locale + only if the compatibility level is greater than 40 (set to 41 by default). + +o New bindable readline function: menu-complete-backward. + +o In the readline vi-mode insertion keymap, C-n is now bound to menu-complete + by default, and C-p to menu-complete-backward. + +o When in readline vi command mode, repeatedly hitting ESC now does nothing, + even when ESC introduces a bound key sequence. This is closer to how + historical vi behaves. + +o New bindable readline function: skip-csi-sequence. Can be used as a + default to consume key sequences generated by keys like Home and End + without having to bind all keys. + +o New bindable readline variable: skip-completed-text, active when + completing in the middle of a word. If enabled, it means that characters + in the completion that match characters in the remainder of the word are + "skipped" rather than inserted into the line. + +o The pre-readline-6.0 version of menu completion is available as + "old-menu-complete" for users who do not like the readline-6.0 version. + +o New bindable readline variable: echo-control-characters. If enabled, and + the tty ECHOCTL bit is set, controls the echoing of characters + corresponding to keyboard-generated signals. + +o New bindable readline variable: enable-meta-key. Controls whether or not + readline sends the smm/rmm sequences if the terminal indicates it has a + meta key that enables eight-bit characters. + +Bash-4.0 contained the following new features: + +o When using substring expansion on the positional parameters, a starting + index of 0 now causes $0 to be prefixed to the list. + +o There is a new variable, $BASHPID, which always returns the process id of + the current shell. + +o There is a new `autocd' option that, when enabled, causes bash to attempt + to `cd' to a directory name that is supplied as the first word of a + simple command. + +o There is a new `checkjobs' option that causes the shell to check for and + report any running or stopped jobs at exit. + +o The programmable completion code exports a new COMP_TYPE variable, set to + a character describing the type of completion being attempted. + +o The programmable completion code exports a new COMP_KEY variable, set to + the character that caused the completion to be invoked (e.g., TAB). + +o The programmable completion code now uses the same set of characters as + readline when breaking the command line into a list of words. + +o The block multiplier for the ulimit -c and -f options is now 512 when in + Posix mode, as Posix specifies. + +o Changed the behavior of the read builtin to save any partial input received + in the specified variable when the read builtin times out. This also + results in variables specified as arguments to read to be set to the empty + string when there is no input available. When the read builtin times out, + it returns an exit status greater than 128. + +o The shell now has the notion of a `compatibility level', controlled by + new variables settable by `shopt'. Setting this variable currently + restores the bash-3.1 behavior when processing quoted strings on the rhs + of the `=~' operator to the `[[' command. + +o The `ulimit' builtin now has new -b (socket buffer size) and -T (number + of threads) options. + +o There is a new `compopt' builtin that allows completion functions to modify + completion options for existing completions or the completion currently + being executed. + +o The `read' builtin has a new -i option which inserts text into the reply + buffer when using readline. + +o A new `-E' option to the complete builtin allows control of the default + behavior for completion on an empty line. + +o There is now limited support for completing command name words containing + globbing characters. + +o The `help' builtin now has a new -d option, to display a short description, + and a -m option, to print help information in a man page-like format. + +o There is a new `mapfile' builtin to populate an array with lines from a + given file. + +o If a command is not found, the shell attempts to execute a shell function + named `command_not_found_handle', supplying the command words as the + function arguments. + +o There is a new shell option: `globstar'. When enabled, the globbing code + treats `**' specially -- it matches all directories (and files within + them, when appropriate) recursively. + +o There is a new shell option: `dirspell'. When enabled, the filename + completion code performs spelling correction on directory names during + completion. + +o The `-t' option to the `read' builtin now supports fractional timeout + values. + +o Brace expansion now allows zero-padding of expanded numeric values and + will add the proper number of zeroes to make sure all values contain the + same number of digits. + +o There is a new bash-specific bindable readline function: `dabbrev-expand'. + It uses menu completion on a set of words taken from the history list. + +o The command assigned to a key sequence with `bind -x' now sets two new + variables in the environment of the executed command: READLINE_LINE_BUFFER + and READLINE_POINT. The command can change the current readline line + and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, + respectively. + +o There is a new >>& redirection operator, which appends the standard output + and standard error to the named file. + +o The parser now understands `|&' as a synonym for `2>&1 |', which redirects + the standard error for a command through a pipe. + +o The new `;&' case statement action list terminator causes execution to + continue with the action associated with the next pattern in the + statement rather than terminating the command. + +o The new `;;&' case statement action list terminator causes the shell to + test the next set of patterns after completing execution of the current + action, rather than terminating the command. + +o The shell understands a new variable: PROMPT_DIRTRIM. When set to an + integer value greater than zero, prompt expansion of \w and \W will + retain only that number of trailing pathname components and replace + the intervening characters with `...'. + +o There are new case-modifying word expansions: uppercase (^[^]) and + lowercase (,[,]). They can work on either the first character or + array element, or globally. They accept an optional shell pattern + that determines which characters to modify. There is an optionally- + configured feature to include capitalization operators. + +o The shell provides associative array variables, with the appropriate + support to create, delete, assign values to, and expand them. + +o The `declare' builtin now has new -l (convert value to lowercase upon + assignment) and -u (convert value to uppercase upon assignment) options. + There is an optionally-configurable -c option to capitalize a value at + assignment. + +o There is a new `coproc' reserved word that specifies a coprocess: an + asynchronous command run with two pipes connected to the creating shell. + Coprocs can be named. The input and output file descriptors and the + PID of the coprocess are available to the calling shell in variables + with coproc-specific names. + +o A value of 0 for the -t option to `read' now returns success if there is + input available to be read from the specified file descriptor. + +o CDPATH and GLOBIGNORE are ignored when the shell is running in privileged + mode. + +o New bindable readline functions shell-forward-word and shell-backward-word, + which move forward and backward words delimited by shell metacharacters + and honor shell quoting. + +o New bindable readline functions shell-backward-kill-word and shell-kill-word + which kill words backward and forward, but use the same word boundaries + as shell-forward-word and shell-backward-word. + +Bash-3.2 contained the following new features: + +o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing + characters when deciding whether or not a script is a binary file. + +o Quoting the string argument to the [[ command's =~ (regexp) operator now + forces string matching, as with the other pattern-matching operators. + +Bash-3.1 contained the following new features: + +o Bash-3.1 may now be configured and built in a mode that enforces strict + POSIX compliance. + +o The `+=' assignment operator, which appends to the value of a string or + array variable, has been implemented. + +o It is now possible to ignore case when matching in contexts other than + filename generation using the new `nocasematch' shell option. + +Bash-3.0 contained the following new features: + +o Features to support the bash debugger have been implemented, and there + is a new `extdebug' option to turn the non-default options on + +o HISTCONTROL is now a colon-separated list of options and has been + extended with a new `erasedups' option that will result in only one + copy of a command being kept in the history list + +o Brace expansion has been extended with a new {x..y} form, producing + sequences of digits or characters + +o Timestamps are now kept with history entries, with an option to save + and restore them from the history file; there is a new HISTTIMEFORMAT + variable describing how to display the timestamps when listing history + entries + +o The `[[' command can now perform extended regular expression (egrep-like) + matching, with matched subexpressions placed in the BASH_REMATCH array + variable + +o A new `pipefail' option causes a pipeline to return a failure status if + any command in it fails + +o The `jobs', `kill', and `wait' builtins now accept job control notation + in their arguments even if job control is not enabled + +o The `gettext' package and libintl have been integrated, and the shell + messages may be translated into other languages + +Bash-2.05b introduced the following new features: + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(<filename) command substitution, which is equivalent to + $(cat filename) +new tilde prefixes that expand to directories from the directory stack +new `**' arithmetic operator to do exponentiation +case-insensitive globbing (filename expansion) +menu completion a la tcsh +`magic-space' history expansion function like tcsh +the readline inputrc `language' has a new file inclusion directive ($include) + +Bash-2.01 contained only a few new features: + +new `GROUPS' builtin array variable containing the user's group list +new bindable readline commands: history-and-alias-expand-line and + alias-expand-line + +Bash-2.0 contained extensive changes and new features from bash-1.14.7. +Here's a short list: + +new `time' reserved word to time pipelines, shell builtins, and + shell functions +one-dimensional arrays with a new compound assignment statement, + appropriate expansion constructs and modifications to some + of the builtins (read, declare, etc.) to use them +new quoting syntaxes for ANSI-C string expansion and locale-specific + string translation +new expansions to do substring extraction, pattern replacement, and + indirect variable expansion +new builtins: `disown' and `shopt' +new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE, + MACHTYPE, BASH_VERSINFO +special handling of many unused or redundant variables removed + (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec) +dynamic loading of new builtin commands; many loadable examples provided +new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V +history and aliases available in shell scripts +new readline variables: enable-keypad, mark-directories, input-meta, + visible-stats, disable-completion, comment-begin +new readline commands to manipulate the mark and operate on the region +new readline emacs mode commands and bindings for ksh-88 compatibility +updated and extended builtins +new DEBUG trap +expanded (and now documented) restricted shell mode + +implementation stuff: +autoconf-based configuration +nearly all of the bugs reported since version 1.14 have been fixed +most builtins converted to use builtin `getopt' for consistency +most builtins use -p option to display output in a reusable form + (for consistency) +grammar tighter and smaller (66 reduce-reduce conflicts gone) +lots of code now smaller and faster +test suite greatly expanded + +B2) Are there any user-visible incompatibilities between bash-4.2 and + previous bash versions? + +There are a few incompatibilities between version 4.2 and previous +versions. They are detailed in the file COMPAT in the bash distribution. +That file is not meant to be all-encompassing; send mail to +bash-maintainers@gnu.org (or bug-bash@gnu.org if you would like +community discussion) if if you find something that's not mentioned there. + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? + +This is a non-comprehensive list of features that differentiate bash +from the SVR4.2 shell. The bash manual page explains these more +completely. + +Things bash has that sh does not: + long invocation options + [+-]O invocation option + -l invocation option + `!' reserved word to invert pipeline return value + `time' reserved word to time pipelines and shell builtins + the `function' reserved word + the `select' compound command and reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + new $'...' and $"..." quoting + the $(...) form of command substitution + the $(<filename) form of command substitution, equivalent to + $(cat filename) + the ${#param} parameter value length operator + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + expansions to perform substring removal (${p%[%]w}, ${p#[#]w}) + expansion of positional parameters beyond $9 with ${num} + variables: BASH, BASHPID, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY, + TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS, + LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME, + ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE, + HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS, + PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC, + SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars, + auto_resume, PROMPT_DIRTRIM, BASHOPTS, BASH_XTRACEFD + DEBUG trap + ERR trap + variable arrays with new compound assignment syntax + redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-, >>& + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u/-i/-N, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf, compopt, mapfile + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode and strict posix conformance + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + debugger support, including `caller' builtin and new variables + RETURN trap + the `+=' assignment operator + autocd shell option and behavior + command-not-found hook with command_not_found_handle shell function + globstar shell option and `**' globbing behavior + |& synonym for `2>&1 |' + ;& and ;;& case action list terminators + case-modifying word expansions and variable attributes + associative arrays + coprocesses using the `coproc' reserved word and variables + shell assignment of a file descriptor used in a redirection to a variable + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>& + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s/-N, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, + shopt, disown, printf, complete, compgen, compopt, mapfile + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + debugger support, including the `caller' builtin + RETURN trap + Timestamps in history entries + {x..y} brace expansion + The `+=' assignment operator + autocd shell option and behavior + command-not-found hook with command_not_found_handle shell function + globstar shell option and `**' globbing behavior + |& synonym for `2>&1 |' + ;& and ;;& case action list terminators + case-modifying word expansions and variable attributes + associative arrays + coprocesses using the `coproc' reserved word and variables + shell assignment of a file descriptor used in a redirection to a variable + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (bash uses different syntax) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +This list is current through ksh93t+ (05/05/2009) + +New things in ksh-93 not in bash-4.2: + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching (match all instead of any) + exit statuses between 0 and 255 + FPATH and PATH mixing + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + $'' \C[.collating-element.] escape sequence + -C/-I invocation options + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + getopts -a + printf %B, %H, %P, %R, %Z modifiers, output base for %d, `=' flag + read -n/-N differ/-v + set -o showme/-o multiline (bash default) + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + [[ -R name ]] (checks whether or not name is a nameref) + typeset -C/-S/-T/-X/-h/-s + experimental `type' definitions (a la typedef) using typeset + array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} + associative array assignments using `;' as element separator + command substitution $(n<#) expands to current byte offset for fd N + new '${ ' form of command substitution, executed in current shell + new >;/<>;/<#pat/<##pat/<#/># redirections + brace expansion printf-like formats + +New things in ksh-93 present in bash-4.2: + associative arrays + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + negative subscripts for indexed array variables + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + brace expansion and set -B + changes to kill builtin + `command', `builtin', `disown' builtins + echo -e + exec -c/-a + printf %T modifier + read -A (bash uses read -a) + read -t/-d + trap -p + `.' restores the positional parameters when it completes + set -o notify/-C + set -o pipefail + set -G (-o globstar) and ** + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion, TAB displaying possible completions + ENV processed only for interactive shells + The `+=' assignment operator + the `;&' case statement "fallthrough" pattern list terminator + csh-style history expansion and set -H + negative offsets in ${param:offset:length} + redirection operators preceded with {varname} to store fd number in varname + DEBUG can force skipping following command + [[ -v var ]] operator (checks whether or not var is set) + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. Many Linux distributions +use GNU `which', which is a C program that can understand shell +aliases. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +As of bash-3.1, bash does not report SIGPIPE errors by default. You +can build a version of bash that will report such errors. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline, even a builtin or shell function, +runs in a separate process, a child of the shell running the +pipeline. A subprocess cannot affect its parent's environment. +When the `read' command sets the variable to the input, that +variable is set only in the subshell, not the parent shell. When +the subshell exits, the value of the variable is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest updated POSIX standard has changed this: the word list +is no longer required. Bash versions 2.05a and later accept the +new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +E12) Why don't negative offsets in substring expansion work like I expect? + +When substring expansion of the form ${param:offset[:length} is used, +an `offset' that evaluates to a number less than zero counts back from +the end of the expanded value of $param. + +When a negative `offset' begins with a minus sign, however, unexpected things +can happen. Consider + + a=12345678 + echo ${a:-4} + +intending to print the last four characters of $a. The problem is that +${param:-word} already has a well-defined meaning: expand to word if the +expanded value of param is unset or null, and $param otherwise. + +To use negative offsets that begin with a minus sign, separate the +minus sign and the colon with a space. + +E13) Why does filename completion misbehave if a colon appears in the filename? + +Filename completion (and word completion in general) may appear to behave +improperly if there is a colon in the word to be completed. + +The colon is special to readline's word completion code: it is one of the +characters that breaks words for the completer. Readline uses these characters +in sort of the same way that bash uses $IFS: they break or separate the words +the completion code hands to the application-specific or default word +completion functions. The original intent was to make it easy to edit +colon-separated lists (such as $PATH in bash) in various applications using +readline for input. + +This is complicated by the fact that some versions of the popular +`bash-completion' programmable completion package have problems with the +default completion behavior in the presence of colons. + +The current set of completion word break characters is available in bash as +the value of the COMP_WORDBREAKS variable. Removing `:' from that value is +enough to make the colon not special to completion: + +COMP_WORDBREAKS=${COMP_WORDBREAKS//:} + +You can also quote the colon with a backslash to achieve the same result +temporarily. + +E14) Why does quoting the pattern argument to the regular expression matching + conditional operator (=~) cause regexp matching to stop working? + +In versions of bash prior to bash-3.2, the effect of quoting the regular +expression argument to the [[ command's =~ operator was not specified. +The practical effect was that double-quoting the pattern argument required +backslashes to quote special pattern characters, which interfered with the +backslash processing performed by double-quoted word expansion and was +inconsistent with how the == shell pattern matching operator treated +quoted characters. + +In bash-3.2, the shell was changed to internally quote characters in single- +and double-quoted string arguments to the =~ operator, which suppresses the +special meaning of the characters special to regular expression processing +(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces +them to be matched literally. This is consistent with how the `==' pattern +matching operator treats quoted portions of its pattern argument. + +Since the treatment of quoted string arguments was changed, several issues +have arisen, chief among them the problem of white space in pattern arguments +and the differing treatment of quoted strings between bash-3.1 and bash-3.2. +Both problems may be solved by using a shell variable to hold the pattern. +Since word splitting is not performed when expanding shell variables in all +operands of the [[ command, this allows users to quote patterns as they wish +when assigning the variable, then expand the values to a single string that +may contain whitespace. The first problem may be solved by using backslashes +or any other quoting mechanism to escape the white space in the patterns. + +Bash-4.0 introduces the concept of a `compatibility level', controlled by +several options to the `shopt' builtin. If the `compat31' option is enabled, +bash reverts to the bash-3.1 behavior with respect to quoting the rhs of +the =~ operator. + +E15) Tell me more about the shell compatibility level. + +Bash-4.0 introduced the concept of a `shell compatibility level', specified +as a set of options to the shopt builtin (compat31, compat32, compat40 at +this writing). There is only one current compatibility level -- each +option is mutually exclusive. This list does not mention behavior that is +standard for a particular version (e.g., setting compat32 means that quoting +the rhs of the regexp matching operator quotes special regexp characters in +the word, which is default behavior in bash-3.2 and above). + +compat31 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + - quoting the rhs of the regexp matching operator (=~) has no + special effect + +compat32 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + +compat40 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + - interrupting a command list such as "a ; b ; c" causes the execution + of the entire list to be aborted (in versions before bash-4.0, + interrupting one command in a list caused the next to be executed) + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +The script examples/scripts.noah/meta.bash encapsulates the bind +commands in a shell function. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. It's a variant of + + echo .[!.]* ..?* * + +(The ..?* catches files with names of three or more characters beginning +with `..') + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +of the third edition, published in March, 2005, is 0-596-00965-8. Look for +it in fine bookstores near you. This edition of the book has been updated +to cover bash-3.0. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers +bash-3.2 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', +published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, +was published in May, 2005. + +Chris F. A. Johnson, a frequent contributor to comp.unix.shell and +gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution +Approach,'' a new book on shell scripting, concentrating on features of +the POSIX standard helpful to shell script writers. The first edition from +Apress, with ISBN number 1-59059-471-1, was published in May, 2005. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +Rocky Bernstein's bash debugger (support is included with bash-4.0) + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2010. Never make predictions. + +This document is Copyright 1995-2010 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. diff --git a/doc/FAQ-4.2~ b/doc/FAQ-4.2~ new file mode 100644 index 00000000..fc340293 --- /dev/null +++ b/doc/FAQ-4.2~ @@ -0,0 +1,2273 @@ +This is the Bash FAQ, version 4.12, for Bash version 4.2. + +This document contains a set of frequently-asked questions concerning +Bash, the GNU Bourne-Again Shell. Bash is a freely-available command +interpreter with advanced features for both interactive use and shell +programming. + +Another good source of basic information about shells is the collection +of FAQ articles periodically posted to comp.unix.shell. + +Questions and comments concerning this document should be sent to +chet.ramey@case.edu. + +This document is available for anonymous FTP with the URL + +ftp://ftp.cwru.edu/pub/bash/FAQ + +The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html + +---------- +Contents: + +Section A: The Basics + +A1) What is it? +A2) What's the latest version? +A3) Where can I get it? +A4) On what machines will bash run? +A5) Will bash run on operating systems other than Unix? +A6) How can I build bash with gcc? +A7) How can I make bash my login shell? +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? +A9) What's the `POSIX Shell and Utilities standard'? +A10) What is the bash `posix mode'? + +Section B: The latest version + +B1) What's new in version 4.2? +B2) Are there any user-visible incompatibilities between bash-4.2 and + previous bash versions? + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? +C2) How does bash differ from the Korn shell, version ksh88? +C3) Which new features in ksh-93 are not in bash, and which are? + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? +D2) Why doesn't bash treat brace expansions exactly like csh? +D3) Why doesn't bash have csh variable modifiers? +D4) How can I make my csh aliases work when I convert to bash? +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +Section E: Why does bash do certain things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? +E2) Why does bash sometimes say `Broken pipe'? +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? +E6) Why doesn't a while or for loop get suspended when I type ^Z? +E7) What about empty for loops in Makefiles? +E8) Why does the arithmetic evaluation code complain about `08'? +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? +E10) Why does `cd //' leave $PWD as `//'? +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? +E12) Why don't negative offsets in substring expansion work like I expect? +E13) Why does filename completion misbehave if a colon appears in the filename? +E14) Why does quoting the pattern argument to the regular expression matching + conditional operator (=~) cause matching to stop working? +E15) Tell me more about the shell compatibility level. + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? +G5) How do I get the current directory into my prompt? +G6) How can I rename "*.foo" to "*.bar"? +G7) How can I translate a filename from uppercase to lowercase? +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? +H2) What kind of bash documentation is there? +H3) What's coming in future versions? +H4) What's on the bash `wish list'? +H5) When will the next release appear? + +---------- +Section A: The Basics + +A1) What is it? + +Bash is a Unix command interpreter (shell). It is an implementation of +the Posix 1003.2 shell standard, and resembles the Korn and System V +shells. + +Bash contains a number of enhancements over those shells, both +for interactive use and shell programming. Features geared +toward interactive use include command line editing, command +history, job control, aliases, and prompt expansion. Programming +features include additional variable expansions, shell +arithmetic, and a number of variables and options to control +shell behavior. + +Bash was originally written by Brian Fox of the Free Software +Foundation. The current developer and maintainer is Chet Ramey +of Case Western Reserve University. + +A2) What's the latest version? + +The latest version is 4.2, first made available on NN December, 2010. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 4.2: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-4.2.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.2.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-4.2.tar.gz + +Any patches for the current version are available with the URL: + +ftp://ftp.cwru.edu/pub/bash/bash-4.2-patches/ + +A4) On what machines will bash run? + +Bash has been ported to nearly every version of Unix. All you +should have to do to build it on a machine for which a port +exists is to type `configure' and then `make'. The build process +will attempt to discover the version of Unix you have and tailor +itself accordingly, using a script created by GNU autoconf. + +More information appears in the file `INSTALL' in the distribution. + +The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) +explains how to obtain binary versions of bash for most of the major +commercial Unix systems. + +A5) Will bash run on operating systems other than Unix? + +Configuration specifics for Unix-like systems such as QNX and +LynxOS are included in the distribution. Bash-2.05 and later +versions should compile and run on Minix 2.0 (patches were +contributed), but I don't believe anyone has built bash-2.x on +earlier Minix versions yet. + +Bash has been ported to versions of Windows implementing the Win32 +programming interface. This includes Windows 95 and Windows NT. +The port was done by Cygnus Solutions (now part of Red Hat) as part +of their CYGWIN project. For more information about the project, see +http://www.cygwin.com/. + +Cygnus originally ported bash-1.14.7, and that port was part of their +early GNU-Win32 (the original name) releases. Cygnus has also done +ports of bash-3.2 and bash-4.0 to the CYGWIN environment, and both +are available as part of their current release. + +Bash-2.05b and later versions should require no local Cygnus changes to +build and run under CYGWIN. + +DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part +of the DJGPP project. For more information on the project, see + +http://www.delorie.com/djgpp/ + +I have been told that the original DJGPP port was done by Daisuke Aoyama. + +Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04 +is available for DJGPP V2. The files are available as: + +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source + +Mark began to work with bash-2.05, but I don't know the current status. + +Bash-3.0 compiles and runs with no modifications under Microsoft's Services +for Unix (SFU), once known as Interix. I do not anticipate any problems +with building bash-4.2, but will gladly accept any patches that are needed. + +A6) How can I build bash with gcc? + +Bash configures to use gcc by default if it is available. Read the +file INSTALL in the distribution for more information. + +A7) How can I make bash my login shell? + +Some machines let you use `chsh' to change your login shell. Other +systems use `passwd -s' or `passwd -e'. If one of these works for +you, that's all you need. Note that many systems require the full +pathname to a shell to appear in /etc/shells before you can make it +your login shell. For this, you may need the assistance of your +friendly local system administrator. + +If you cannot do this, you can still use bash as your login shell, but +you need to perform some tricks. The basic idea is to add a command +to your login shell's startup file to replace your login shell with +bash. + +For example, if your login shell is csh or tcsh, and you have installed +bash in /usr/gnu/bin/bash, add the following line to ~/.login: + + if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login + +(the `--login' tells bash that it is a login shell). + +It's not a good idea to put this command into ~/.cshrc, because every +csh you run without the `-f' option, even ones started to run csh scripts, +reads that file. If you must put the command in ~/.cshrc, use something +like + + if ( $?prompt ) exec /usr/gnu/bin/bash --login + +to ensure that bash is exec'd only when the csh is interactive. + +If your login shell is sh or ksh, you have to do two things. + +First, create an empty file in your home directory named `.bash_profile'. +The existence of this file will prevent the exec'd bash from trying to +read ~/.profile, and re-execing itself over and over again. ~/.bash_profile +is the first file bash tries to read initialization commands from when +it is invoked as a login shell. + +Next, add a line similar to the above to ~/.profile: + + [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ + exec /usr/gnu/bin/bash --login + +This will cause login shells to replace themselves with bash running as +a login shell. Once you have this working, you can copy your initialization +code from ~/.profile to ~/.bash_profile. + +I have received word that the recipe supplied above is insufficient for +machines running CDE. CDE has a maze of twisty little startup files, all +slightly different. + +If you cannot change your login shell in the password file to bash, you +will have to (apparently) live with CDE using the shell in the password +file to run its startup scripts. If you have changed your shell to bash, +there is code in the CDE startup files (on Solaris, at least) that attempts +to do the right thing. It is, however, often broken, and may require that +you use the $BASH_ENV trick described below. + +`dtterm' claims to use $SHELL as the default program to start, so if you +can change $SHELL in the CDE startup files, you should be able to use bash +in your terminal windows. + +Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program +to read your login shell's startup files. You may be able to use bash for +the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as +well, but I have not tried this. + +You can use the above `exec' recipe to start bash when not logging in with +CDE by testing the value of the DT variable: + + if [ -n "$DT" ]; then + [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login + fi + +If CDE starts its shells non-interactively during login, the login shell +startup files (~/.profile, ~/.bash_profile) will not be sourced at login. +To get around this problem, append a line similar to the following to your +~/.dtprofile: + + BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV + +and add the following line to the beginning of ~/.bash_profile: + + unset BASH_ENV + +A8) I just changed my login shell to bash, and now I can't FTP into my + machine. Why not? + +You must add the full pathname to bash to the file /etc/shells. As +noted in the answer to the previous question, many systems require +this before you can make bash your login shell. + +Most versions of ftpd use this file to prohibit `special' users +such as `uucp' and `news' from using FTP. + +A9) What's the `POSIX Shell and Utilities standard'? + +POSIX is a name originally coined by Richard Stallman for a +family of open system standards based on UNIX. There are a +number of aspects of UNIX under consideration for +standardization, from the basic system services at the system +call and C library level to applications and tools to system +administration and management. Each area of standardization is +assigned to a working group in the 1003 series. + +The POSIX Shell and Utilities standard was originally developed by +IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with +the original 1003.1 Working Group and is maintained by the Austin +Group (a joint working group of the IEEE, The Open Group and +ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume +within the set of documents that make up IEEE Std 1003.1-2001, and +thus now the former POSIX.2 (from 1992) is now part of the current +POSIX.1 standard (POSIX 1003.1-2001). + +The Shell and Utilities volume concentrates on the command +interpreter interface and utility programs commonly executed from +the command line or by other programs. The standard is freely +available on the web at http://www.UNIX-systems.org/version3/ . +Work continues at the Austin Group on maintenance issues; see +http://www.opengroup.org/austin/ to join the discussions. + +Bash is concerned with the aspects of the shell's behavior defined +by the POSIX Shell and Utilities volume. The shell command +language has of course been standardized, including the basic flow +control and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quoting. + +The `special' builtins, which must be implemented as part of the +shell to provide the desired functionality, are specified as +being part of the shell; examples of these are `eval' and +`export'. Other utilities appear in the sections of POSIX not +devoted to the shell which are commonly (and in some cases must +be) implemented as builtin commands, such as `read' and `test'. +POSIX also specifies aspects of the shell's interactive +behavior as part of the UPE, including job control and command +line editing. Only vi-style line editing commands have been +standardized; emacs editing commands were left out due to +objections. + +The latest version of the POSIX Shell and Utilities standard is +available (now updated to the 2004 Edition) as part of the Single +UNIX Specification Version 3 at + +http://www.UNIX-systems.org/version3/ + +A10) What is the bash `posix mode'? + +Although bash is an implementation of the POSIX shell +specification, there are areas where the bash default behavior +differs from that spec. The bash `posix mode' changes the bash +behavior in these areas so that it obeys the spec more closely. + +Posix mode is entered by starting bash with the --posix or +'-o posix' option or executing `set -o posix' after bash is running. + +The specific aspects of bash which change when posix mode is +active are listed in the file POSIX in the bash distribution. +They are also listed in a section in the Bash Reference Manual +(from which that file is generated). + +Section B: The latest version + +B1) What's new in version 4.2? + +Bash-4.2 is the second revision to the fourth major release of bash. + +Bash-4.2 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-4.2 +distribution): + +a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a + leading #!. + +b. Subshells begun to execute command substitutions or run shell functions or + builtins in subshells do not reset trap strings until a new trap is + specified. This allows $(trap) to display the caller's traps and the + trap strings to persist until a new trap is set. + +c. `trap -p' will now show signals ignored at shell startup, though their + disposition still cannot be modified. + +d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences. + +e. declare/typeset has a new `-g' option, which creates variables in the + global scope even when run in a shell function. + +f. test/[/[[ have a new -v variable unary operator, which returns success if + `variable' has been set. + +g. Posix parsing changes to allow `! time command' and multiple consecutive + instances of `!' (which toggle) and `time' (which have no cumulative + effect). + +h. Posix change to allow `time' as a command by itself to print the elapsed + user, system, and real times for the shell and its children. + +j. $((...)) is always parsed as an arithmetic expansion first, instead of as + a potential nested command substitution, as Posix requires. + +k. A new FUNCNEST variable to allow the user to control the maximum shell + function nesting (recursive execution) level. + +l. The mapfile builtin now supplies a third argument to the callback command: + the line about to be assigned to the supplied array index. + +m. The printf builtin has as new %(fmt)T specifier, which allows time values + to use strftime-like formatting. + +n. There is a new `compat41' shell option. + +o. The cd builtin has a new Posix-mandated `-e' option. + +p. Negative subscripts to indexed arrays, previously errors, now are treated + as offsets from the maximum assigned index + 1. + +q. Negative length specifications in the ${var:offset:length} expansion, + previously errors, are now treated as offsets from the end of the variable. + +r. Parsing change to allow `time -p --'. + +s. Posix-mode parsing change to not recognize `time' as a keyword if the + following token begins with a `-'. This means no more Posix-mode + `time -p'. Posix interpretation 267. + +t. There is a new `lastpipe' shell option that runs the last command of a + pipeline in the current shell context. The lastpipe option has no + effect if job control is enabled. + +u. History expansion no longer expands the `$!' variable expansion. + +v. Posix mode shells no longer exit if a variable assignment error occurs + with an assignment preceding a command that is not a special builtin. + +w. Non-interactive mode shells exit if -u is enabled an an attempt is made + to use an unset variable with the % or # expansions, the `//', `^', or + `,' expansions, or the parameter length expansion. + +x. Posix-mode shells use the argument passed to `.' as-is if a $PATH search + fails, effectively searching the current directory. Posix-2008 change. + +A short feature history dating from Bash-2.0: + +Bash-4.1 contained the following new features: + +o Here-documents within $(...) command substitutions may once more be + delimited by the closing right paren, instead of requiring a newline. + +o Bash's file status checks (executable, readable, etc.) now take file + system ACLs into account on file systems that support them. + +o Bash now passes environment variables with names that are not valid + shell variable names through into the environment passed to child + processes. + +o The `execute-unix-command' readline function now attempts to clear and + reuse the current line rather than move to a new one after the command + executes. + +o `printf -v' can now assign values to array indices. + +o New `complete -E' and `compopt -E' options that work on the "empty" + completion: completion attempted on an empty command line. + +o New complete/compgen/compopt -D option to define a `default' completion: + a completion to be invoked on command for which no completion has been + defined. If this function returns 124, programmable completion is + attempted again, allowing a user to dynamically build a set of completions + as completion is attempted by having the default completion function + install individual completion functions each time it is invoked. + +o When displaying associative arrays, subscripts are now quoted. + +o Changes to dabbrev-expand to make it more `emacs-like': no space appended + after matches, completions are not sorted, and most recent history entries + are presented first. + +o The [[ and (( commands are now subject to the setting of `set -e' and the + ERR trap. + +o The source/. builtin now removes NUL bytes from the file before attempting + to parse commands. + +o There is a new configuration option (in config-top.h) that forces bash to + forward all history entries to syslog. + +o A new variable $BASHOPTS to export shell options settable using `shopt' to + child processes. + +o There is a new confgure option that forces the extglob option to be + enabled by default. + +o New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace + output to that file descriptor. + +o If the optional left-hand-side of a redirection is of the form {var}, the + shell assigns the file descriptor used to $var or uses $var as the file + descriptor to move or close, depending on the redirection operator. + +o The < and > operators to the [[ conditional command now do string + comparison according to the current locale. + +o Programmable completion now uses the completion for `b' instead of `a' + when completion is attempted on a line like: a $(b c. + +o Force extglob on temporarily when parsing the pattern argument to + the == and != operators to the [[ command, for compatibility. + +o Changed the behavior of interrupting the wait builtin when a SIGCHLD is + received and a trap on SIGCHLD is set to be Posix-mode only. + +o The read builtin has a new `-N nchars' option, which reads exactly NCHARS + characters, ignoring delimiters like newline. + +o The mapfile/readarray builtin no longer stores the commands it invokes via + callbacks in the history list. + +o There is a new `compat40' shopt option. + +o The < and > operators to [[ do string comparisons using the current locale + only if the compatibility level is greater than 40 (set to 41 by default). + +o New bindable readline function: menu-complete-backward. + +o In the readline vi-mode insertion keymap, C-n is now bound to menu-complete + by default, and C-p to menu-complete-backward. + +o When in readline vi command mode, repeatedly hitting ESC now does nothing, + even when ESC introduces a bound key sequence. This is closer to how + historical vi behaves. + +o New bindable readline function: skip-csi-sequence. Can be used as a + default to consume key sequences generated by keys like Home and End + without having to bind all keys. + +o New bindable readline variable: skip-completed-text, active when + completing in the middle of a word. If enabled, it means that characters + in the completion that match characters in the remainder of the word are + "skipped" rather than inserted into the line. + +o The pre-readline-6.0 version of menu completion is available as + "old-menu-complete" for users who do not like the readline-6.0 version. + +o New bindable readline variable: echo-control-characters. If enabled, and + the tty ECHOCTL bit is set, controls the echoing of characters + corresponding to keyboard-generated signals. + +o New bindable readline variable: enable-meta-key. Controls whether or not + readline sends the smm/rmm sequences if the terminal indicates it has a + meta key that enables eight-bit characters. + +Bash-4.0 contained the following new features: + +o When using substring expansion on the positional parameters, a starting + index of 0 now causes $0 to be prefixed to the list. + +o There is a new variable, $BASHPID, which always returns the process id of + the current shell. + +o There is a new `autocd' option that, when enabled, causes bash to attempt + to `cd' to a directory name that is supplied as the first word of a + simple command. + +o There is a new `checkjobs' option that causes the shell to check for and + report any running or stopped jobs at exit. + +o The programmable completion code exports a new COMP_TYPE variable, set to + a character describing the type of completion being attempted. + +o The programmable completion code exports a new COMP_KEY variable, set to + the character that caused the completion to be invoked (e.g., TAB). + +o The programmable completion code now uses the same set of characters as + readline when breaking the command line into a list of words. + +o The block multiplier for the ulimit -c and -f options is now 512 when in + Posix mode, as Posix specifies. + +o Changed the behavior of the read builtin to save any partial input received + in the specified variable when the read builtin times out. This also + results in variables specified as arguments to read to be set to the empty + string when there is no input available. When the read builtin times out, + it returns an exit status greater than 128. + +o The shell now has the notion of a `compatibility level', controlled by + new variables settable by `shopt'. Setting this variable currently + restores the bash-3.1 behavior when processing quoted strings on the rhs + of the `=~' operator to the `[[' command. + +o The `ulimit' builtin now has new -b (socket buffer size) and -T (number + of threads) options. + +o There is a new `compopt' builtin that allows completion functions to modify + completion options for existing completions or the completion currently + being executed. + +o The `read' builtin has a new -i option which inserts text into the reply + buffer when using readline. + +o A new `-E' option to the complete builtin allows control of the default + behavior for completion on an empty line. + +o There is now limited support for completing command name words containing + globbing characters. + +o The `help' builtin now has a new -d option, to display a short description, + and a -m option, to print help information in a man page-like format. + +o There is a new `mapfile' builtin to populate an array with lines from a + given file. + +o If a command is not found, the shell attempts to execute a shell function + named `command_not_found_handle', supplying the command words as the + function arguments. + +o There is a new shell option: `globstar'. When enabled, the globbing code + treats `**' specially -- it matches all directories (and files within + them, when appropriate) recursively. + +o There is a new shell option: `dirspell'. When enabled, the filename + completion code performs spelling correction on directory names during + completion. + +o The `-t' option to the `read' builtin now supports fractional timeout + values. + +o Brace expansion now allows zero-padding of expanded numeric values and + will add the proper number of zeroes to make sure all values contain the + same number of digits. + +o There is a new bash-specific bindable readline function: `dabbrev-expand'. + It uses menu completion on a set of words taken from the history list. + +o The command assigned to a key sequence with `bind -x' now sets two new + variables in the environment of the executed command: READLINE_LINE_BUFFER + and READLINE_POINT. The command can change the current readline line + and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, + respectively. + +o There is a new >>& redirection operator, which appends the standard output + and standard error to the named file. + +o The parser now understands `|&' as a synonym for `2>&1 |', which redirects + the standard error for a command through a pipe. + +o The new `;&' case statement action list terminator causes execution to + continue with the action associated with the next pattern in the + statement rather than terminating the command. + +o The new `;;&' case statement action list terminator causes the shell to + test the next set of patterns after completing execution of the current + action, rather than terminating the command. + +o The shell understands a new variable: PROMPT_DIRTRIM. When set to an + integer value greater than zero, prompt expansion of \w and \W will + retain only that number of trailing pathname components and replace + the intervening characters with `...'. + +o There are new case-modifying word expansions: uppercase (^[^]) and + lowercase (,[,]). They can work on either the first character or + array element, or globally. They accept an optional shell pattern + that determines which characters to modify. There is an optionally- + configured feature to include capitalization operators. + +o The shell provides associative array variables, with the appropriate + support to create, delete, assign values to, and expand them. + +o The `declare' builtin now has new -l (convert value to lowercase upon + assignment) and -u (convert value to uppercase upon assignment) options. + There is an optionally-configurable -c option to capitalize a value at + assignment. + +o There is a new `coproc' reserved word that specifies a coprocess: an + asynchronous command run with two pipes connected to the creating shell. + Coprocs can be named. The input and output file descriptors and the + PID of the coprocess are available to the calling shell in variables + with coproc-specific names. + +o A value of 0 for the -t option to `read' now returns success if there is + input available to be read from the specified file descriptor. + +o CDPATH and GLOBIGNORE are ignored when the shell is running in privileged + mode. + +o New bindable readline functions shell-forward-word and shell-backward-word, + which move forward and backward words delimited by shell metacharacters + and honor shell quoting. + +o New bindable readline functions shell-backward-kill-word and shell-kill-word + which kill words backward and forward, but use the same word boundaries + as shell-forward-word and shell-backward-word. + +Bash-3.2 contained the following new features: + +o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing + characters when deciding whether or not a script is a binary file. + +o Quoting the string argument to the [[ command's =~ (regexp) operator now + forces string matching, as with the other pattern-matching operators. + +Bash-3.1 contained the following new features: + +o Bash-3.1 may now be configured and built in a mode that enforces strict + POSIX compliance. + +o The `+=' assignment operator, which appends to the value of a string or + array variable, has been implemented. + +o It is now possible to ignore case when matching in contexts other than + filename generation using the new `nocasematch' shell option. + +Bash-3.0 contained the following new features: + +o Features to support the bash debugger have been implemented, and there + is a new `extdebug' option to turn the non-default options on + +o HISTCONTROL is now a colon-separated list of options and has been + extended with a new `erasedups' option that will result in only one + copy of a command being kept in the history list + +o Brace expansion has been extended with a new {x..y} form, producing + sequences of digits or characters + +o Timestamps are now kept with history entries, with an option to save + and restore them from the history file; there is a new HISTTIMEFORMAT + variable describing how to display the timestamps when listing history + entries + +o The `[[' command can now perform extended regular expression (egrep-like) + matching, with matched subexpressions placed in the BASH_REMATCH array + variable + +o A new `pipefail' option causes a pipeline to return a failure status if + any command in it fails + +o The `jobs', `kill', and `wait' builtins now accept job control notation + in their arguments even if job control is not enabled + +o The `gettext' package and libintl have been integrated, and the shell + messages may be translated into other languages + +Bash-2.05b introduced the following new features: + +o support for multibyte characters has been added to both bash and readline + +o the DEBUG trap is now run *before* simple commands, ((...)) commands, + [[...]] conditional commands, and for ((...)) loops + +o the shell now performs arithmetic in the largest integer size the machine + supports (intmax_t) + +o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) + and inserts the result into the expanded prompt + +o there is a new `here-string' redirection operator: <<< word + +o when displaying variables, function attributes and definitions are shown + separately, allowing them to be re-used as input (attempting to re-use + the old output would result in syntax errors). + +o `read' has a new `-u fd' option to read from a specified file descriptor + +o the bash debugger in examples/bashdb has been modified to work with the + new DEBUG trap semantics, the command set has been made more gdb-like, + and the changes to $LINENO make debugging functions work better + +o the expansion of $LINENO inside a shell function is only relative to the + function start if the shell is interactive -- if the shell is running a + script, $LINENO expands to the line number in the script. This is as + POSIX-2001 requires + +Bash-2.05a introduced the following new features: + +o The `printf' builtin has undergone major work + +o There is a new read-only `shopt' option: login_shell, which is set by + login shells and unset otherwise + +o New `\A' prompt string escape sequence; expanding to time in 24-hour + HH:MM format + +o New `-A group/-g' option to complete and compgen; goes group name + completion + +o New [+-]O invocation option to set and unset `shopt' options at startup + +o ksh-like `ERR' trap + +o `for' loops now allow empty word lists after the `in' reserved word + +o new `hard' and `soft' arguments for the `ulimit' builtin + +o Readline can be configured to place the user at the same point on the line + when retrieving commands from the history list + +o Readline can be configured to skip `hidden' files (filenames with a leading + `.' on Unix) when performing completion + +Bash-2.05 introduced the following new features: + +o This version has once again reverted to using locales and strcoll(3) when + processing pattern matching bracket expressions, as POSIX requires. +o Added a new `--init-file' invocation argument as a synonym for `--rcfile', + per the new GNU coding standards. +o The /dev/tcp and /dev/udp redirections now accept service names as well as + port numbers. +o `complete' and `compgen' now take a `-o value' option, which controls some + of the aspects of that compspec. Valid values are: + + default - perform bash default completion if programmable + completion produces no matches + dirnames - perform directory name completion if programmable + completion produces no matches + filenames - tell readline that the compspec produces filenames, + so it can do things like append slashes to + directory names and suppress trailing spaces +o A new loadable builtin, realpath, which canonicalizes and expands symlinks + in pathname arguments. +o When `set' is called without options, it prints function defintions in a + way that allows them to be reused as input. This affects `declare' and + `declare -p' as well. This only happens when the shell is not in POSIX + mode, since POSIX.2 forbids this behavior. + +Bash-2.04 introduced the following new features: + +o Programmable word completion with the new `complete' and `compgen' builtins; + examples are provided in examples/complete/complete-examples +o `history' has a new `-d' option to delete a history entry +o `bind' has a new `-x' option to bind key sequences to shell commands +o The prompt expansion code has new `\j' and `\l' escape sequences +o The `no_empty_cmd_completion' shell option, if enabled, inhibits + command completion when TAB is typed on an empty line +o `help' has a new `-s' option to print a usage synopsis +o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) +o New ksh93-style arithmetic for command: + for ((expr1 ; expr2; expr3 )); do list; done +o `read' has new options: `-t', `-n', `-d', `-s' +o The redirection code handles several filenames specially: /dev/fd/N, + /dev/stdin, /dev/stdout, /dev/stderr +o The redirection code now recognizes /dev/tcp/HOST/PORT and + /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, + to the specified port on the specified host +o The ${!prefix*} expansion has been implemented +o A new FUNCNAME variable, which expands to the name of a currently-executing + function +o The GROUPS variable is no longer readonly +o A new shopt `xpg_echo' variable, to control the behavior of echo with + respect to backslash-escape sequences at runtime +o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned + +The version of Readline released with Bash-2.04, Readline-4.1, had several +new features as well: + +o Parentheses matching is always compiled into readline, and controllable + with the new `blink-matching-paren' variable +o The history-search-forward and history-search-backward functions now leave + point at the end of the line when the search string is empty, like + reverse-search-history, and forward-search-history +o A new function for applications: rl_on_new_line_with_prompt() +o New variables for applications: rl_already_prompted, and rl_gnu_readline_p + + +Bash-2.03 had very few new features, in keeping with the convention +that odd-numbered releases provide mainly bug fixes. A number of new +features were added to Readline, mostly at the request of the Cygnus +folks. + +A new shopt option, `restricted_shell', so that startup files can test + whether or not the shell was started in restricted mode +Filename generation is now performed on the words between ( and ) in + compound array assignments (this is really a bug fix) +OLDPWD is now auto-exported, as POSIX.2 requires +ENV and BASH_ENV are read-only variables in a restricted shell +Bash may now be linked against an already-installed Readline library, + as long as the Readline library is version 4 or newer +All shells begun with the `--login' option will source the login shell + startup files, even if the shell is not interactive + +There were lots of changes to the version of the Readline library released +along with Bash-2.03. For a complete list of the changes, read the file +CHANGES in the Bash-2.03 distribution. + +Bash-2.02 contained the following new features: + +a new version of malloc (based on the old GNU malloc code in previous + bash versions) that is more page-oriented, more conservative + with memory usage, does not `orphan' large blocks when they + are freed, is usable on 64-bit machines, and has allocation + checking turned on unconditionally +POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) +POSIX.2-style globbing equivalence classes +POSIX.2-style globbing collating symbols +the ksh [[...]] extended conditional command +the ksh egrep-style extended pattern matching operators +a new `printf' builtin +the ksh-like $(<filename) command substitution, which is equivalent to + $(cat filename) +new tilde prefixes that expand to directories from the directory stack +new `**' arithmetic operator to do exponentiation +case-insensitive globbing (filename expansion) +menu completion a la tcsh +`magic-space' history expansion function like tcsh +the readline inputrc `language' has a new file inclusion directive ($include) + +Bash-2.01 contained only a few new features: + +new `GROUPS' builtin array variable containing the user's group list +new bindable readline commands: history-and-alias-expand-line and + alias-expand-line + +Bash-2.0 contained extensive changes and new features from bash-1.14.7. +Here's a short list: + +new `time' reserved word to time pipelines, shell builtins, and + shell functions +one-dimensional arrays with a new compound assignment statement, + appropriate expansion constructs and modifications to some + of the builtins (read, declare, etc.) to use them +new quoting syntaxes for ANSI-C string expansion and locale-specific + string translation +new expansions to do substring extraction, pattern replacement, and + indirect variable expansion +new builtins: `disown' and `shopt' +new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE, + MACHTYPE, BASH_VERSINFO +special handling of many unused or redundant variables removed + (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec) +dynamic loading of new builtin commands; many loadable examples provided +new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V +history and aliases available in shell scripts +new readline variables: enable-keypad, mark-directories, input-meta, + visible-stats, disable-completion, comment-begin +new readline commands to manipulate the mark and operate on the region +new readline emacs mode commands and bindings for ksh-88 compatibility +updated and extended builtins +new DEBUG trap +expanded (and now documented) restricted shell mode + +implementation stuff: +autoconf-based configuration +nearly all of the bugs reported since version 1.14 have been fixed +most builtins converted to use builtin `getopt' for consistency +most builtins use -p option to display output in a reusable form + (for consistency) +grammar tighter and smaller (66 reduce-reduce conflicts gone) +lots of code now smaller and faster +test suite greatly expanded + +B2) Are there any user-visible incompatibilities between bash-4.2 and + previous bash versions? + +There are a few incompatibilities between version 4.2 and previous +versions. They are detailed in the file COMPAT in the bash distribution. +That file is not meant to be all-encompassing; send mail to +bash-maintainers@gnu.org (or bug-bash@gnu.org if you would like +community discussion) if if you find something that's not mentioned there. + +Section C: Differences from other Unix shells + +C1) How does bash differ from sh, the Bourne shell? + +This is a non-comprehensive list of features that differentiate bash +from the SVR4.2 shell. The bash manual page explains these more +completely. + +Things bash has that sh does not: + long invocation options + [+-]O invocation option + -l invocation option + `!' reserved word to invert pipeline return value + `time' reserved word to time pipelines and shell builtins + the `function' reserved word + the `select' compound command and reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + new $'...' and $"..." quoting + the $(...) form of command substitution + the $(<filename) form of command substitution, equivalent to + $(cat filename) + the ${#param} parameter value length operator + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + expansions to perform substring removal (${p%[%]w}, ${p#[#]w}) + expansion of positional parameters beyond $9 with ${num} + variables: BASH, BASHPID, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY, + TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS, + LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME, + ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE, + HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS, + PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC, + SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars, + auto_resume, PROMPT_DIRTRIM, BASHOPTS, BASH_XTRACEFD + DEBUG trap + ERR trap + variable arrays with new compound assignment syntax + redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-, >>& + prompt string special char translation and variable expansion + auto-export of variables in initial environment + command search finds functions before builtins + bash return builtin will exit a file sourced with `.' + builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. + export -n/-f/-p/name=value, pwd -L/-P, + read -e/-p/-a/-t/-n/-d/-s/-u/-i/-N, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, + type -a/-p/-t/-f/-P, suspend -f, kill -n, + test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + brace expansion + tilde expansion + arithmetic expansion with $((...)) and `let' builtin + the `[[...]]' extended conditional command + process substitution + aliases and alias/unalias builtins + local variables in functions and `local' builtin + readline and command-line editing with programmable completion + command history and history/fc builtins + csh-like history expansion + other new bash builtins: bind, command, compgen, complete, builtin, + declare/typeset, dirs, enable, fc, help, + history, logout, popd, pushd, disown, shopt, + printf, compopt, mapfile + exported functions + filename generation when using output redirection (command >a*) + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + variable assignments preceding commands affect only that command, + even for builtins and functions + posix mode and strict posix conformance + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, + /dev/tcp/host/port, /dev/udp/host/port + debugger support, including `caller' builtin and new variables + RETURN trap + the `+=' assignment operator + autocd shell option and behavior + command-not-found hook with command_not_found_handle shell function + globstar shell option and `**' globbing behavior + |& synonym for `2>&1 |' + ;& and ;;& case action list terminators + case-modifying word expansions and variable attributes + associative arrays + coprocesses using the `coproc' reserved word and variables + shell assignment of a file descriptor used in a redirection to a variable + +Things sh has that bash does not: + uses variable SHACCT to do shell accounting + includes `stop' builtin (bash can use alias stop='kill -s STOP') + `newgrp' builtin + turns on job control if called as `jsh' + $TIMEOUT (like bash $TMOUT) + `^' is a synonym for `|' + new SVR4.2 sh builtins: mldmode, priv + +Implementation differences: + redirection to/from compound commands causes sh to create a subshell + bash does not allow unbalanced quotes; sh silently inserts them at EOF + bash does not mess with signal 11 + sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 + bash splits only the results of expansions on IFS, using POSIX.2 + field splitting rules; sh splits all words on IFS + sh does not allow MAILCHECK to be unset (?) + sh does not allow traps on SIGALRM or SIGCHLD + bash allows multiple option arguments when invoked (e.g. -x -v); + sh allows only a single option argument (`sh -x -v' attempts + to open a file named `-v', and, on SunOS 4.1.4, dumps core. + On Solaris 2.4 and earlier versions, sh goes into an infinite + loop.) + sh exits a script if any builtin fails; bash exits only if one of + the POSIX.2 `special' builtins fails + +C2) How does bash differ from the Korn shell, version ksh88? + +Things bash has or uses that ksh88 does not: + long invocation options + [-+]O invocation option + -l invocation option + `!' reserved word + arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done + arithmetic in largest machine-supported size (intmax_t) + posix mode and posix conformance + command hashing + tilde expansion for assignment statements that look like $PATH + process substitution with named pipes if /dev/fd is not available + the ${!param} indirect parameter expansion operator + the ${!param*} prefix expansion operator + the ${param:offset[:length]} parameter substring operator + the ${param/pat[/string]} parameter pattern substitution operator + variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL, + TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, + HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, + IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, + PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, + GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM + prompt expansion with backslash escapes and command substitution + redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>& + more extensive and extensible editing and programmable completion + builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, + exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, + jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, + read -e/-p/-a/-t/-n/-d/-s/-N, readonly -a/-n/-f/-p, + set -o braceexpand/-o histexpand/-o interactive-comments/ + -o notify/-o physical/-o posix/-o hashall/-o onecmd/ + -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, + typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, + shopt, disown, printf, complete, compgen, compopt, mapfile + `!' csh-style history expansion + POSIX.2-style globbing character classes + POSIX.2-style globbing equivalence classes + POSIX.2-style globbing collating symbols + egrep-like extended pattern matching operators + case-insensitive pattern matching and globbing + `**' arithmetic operator to do exponentiation + redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr + arrays of unlimited size + TMOUT is default timeout for `read' and `select' + debugger support, including the `caller' builtin + RETURN trap + Timestamps in history entries + {x..y} brace expansion + The `+=' assignment operator + autocd shell option and behavior + command-not-found hook with command_not_found_handle shell function + globstar shell option and `**' globbing behavior + |& synonym for `2>&1 |' + ;& and ;;& case action list terminators + case-modifying word expansions and variable attributes + associative arrays + coprocesses using the `coproc' reserved word and variables + shell assignment of a file descriptor used in a redirection to a variable + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (bash uses different syntax) + weirdly-scoped functions + typeset +f to list all function names without definitions + text of command history kept in a file, not memory + builtins: alias -x, cd old new, newgrp, print, + read -p/-s/var?prompt, set -A/-o gmacs/ + -o bgnice/-o markdirs/-o trackall/-o viraw/-s, + typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence + using environment to pass attributes of exported variables + arithmetic evaluation done on arguments to some builtins + reads .profile from $PWD when invoked as login shell + +Implementation differences: + ksh runs last command of a pipeline in parent shell context + bash has brace expansion by default (ksh88 compile-time option) + bash has fixed startup file for all interactive shells; ksh reads $ENV + bash has exported functions + bash command search finds functions before builtins + bash waits for all commands in pipeline to exit before returning status + emacs-mode editing has some slightly different key bindings + +C3) Which new features in ksh-93 are not in bash, and which are? + +This list is current through ksh93t+ (05/05/2009) + +New things in ksh-93 not in bash-4.2: + floating point arithmetic and variables + math library functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching (match all instead of any) + exit statuses between 0 and 255 + FPATH and PATH mixing + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + $'' \C[.collating-element.] escape sequence + -C/-I invocation options + print -f (bash uses printf) + `fc' has been renamed to `hist' + `.' can execute shell functions + getopts -a + printf %B, %H, %P, %R, %Z modifiers, output base for %d, `=' flag + read -n/-N differ/-v + set -o showme/-o multiline (bash default) + `sleep' and `getconf' builtins (bash has loadable versions) + typeset -n and `nameref' variables + [[ -R name ]] (checks whether or not name is a nameref) + typeset -C/-S/-T/-X/-h/-s + experimental `type' definitions (a la typedef) using typeset + array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} + associative array assignments using `;' as element separator + command substitution $(n<#) expands to current byte offset for fd N + new '${ ' form of command substitution, executed in current shell + new >;/<>;/<#pat/<##pat/<#/># redirections + brace expansion printf-like formats + +New things in ksh-93 present in bash-4.2: + associative arrays + [n]<&word- and [n]>&word- redirections (combination dup and close) + for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command + ?:, ++, --, `expr1 , expr2' arithmetic operators + expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, + ${!param*} + compound array assignment + negative subscripts for indexed array variables + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + brace expansion and set -B + changes to kill builtin + `command', `builtin', `disown' builtins + echo -e + exec -c/-a + printf %T modifier + read -A (bash uses read -a) + read -t/-d + trap -p + `.' restores the positional parameters when it completes + set -o notify/-C + set -o pipefail + set -G (-o globstar) and ** + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion, TAB displaying possible completions + ENV processed only for interactive shells + The `+=' assignment operator + the `;&' case statement "fallthrough" pattern list terminator + csh-style history expansion and set -H + negative offsets in ${param:offset:length} + redirection operators preceded with {varname} to store fd number in varname + DEBUG can force skipping following command + [[ -v var ]] operator (checks whether or not var is set) + +Section D: Why does bash do some things differently than other Unix shells? + +D1) Why does bash run a different version of `command' than + `which command' says it will? + +On many systems, `which' is actually a csh script that assumes +you're running csh. In tcsh, `which' and its cousin `where' +are builtins. On other Unix systems, `which' is a perl script +that uses the PATH environment variable. Many Linux distributions +use GNU `which', which is a C program that can understand shell +aliases. + +The csh script version reads the csh startup files from your +home directory and uses those to determine which `command' will +be invoked. Since bash doesn't use any of those startup files, +there's a good chance that your bash environment differs from +your csh environment. The bash `type' builtin does everything +`which' does, and will report correct results for the running +shell. If you're really wedded to the name `which', try adding +the following function definition to your .bashrc: + + which() + { + builtin type "$@" + } + +If you're moving from tcsh and would like to bring `where' along +as well, use this function: + + where() + { + builtin type -a "$@" + } + +D2) Why doesn't bash treat brace expansions exactly like csh? + +The only difference between bash and csh brace expansion is that +bash requires a brace expression to contain at least one unquoted +comma if it is to be expanded. Any brace-surrounded word not +containing an unquoted comma is left unchanged by the brace +expansion code. This affords the greatest degree of sh +compatibility. + +Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. + +D3) Why doesn't bash have csh variable modifiers? + +Posix has specified a more powerful, albeit somewhat more cryptic, +mechanism cribbed from ksh, and bash implements it. + +${parameter%word} + Remove smallest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the suffix matched by the pattern deleted. + + x=file.c + echo ${x%.c}.o + -->file.o + +${parameter%%word} + + Remove largest suffix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the suffix matched by the pattern deleted. + + x=posix/src/std + echo ${x%%/*} + -->posix + +${parameter#word} + Remove smallest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + smallest portion of the prefix matched by the pattern deleted. + + x=$HOME/src/cmd + echo ${x#$HOME} + -->/src/cmd + +${parameter##word} + Remove largest prefix pattern. The WORD is expanded to produce + a pattern. It then expands to the value of PARAMETER, with the + largest portion of the prefix matched by the pattern deleted. + + x=/one/two/three + echo ${x##*/} + -->three + + +Given + a=/a/b/c/d + b=b.xxx + + csh bash result + --- ---- ------ + $a:h ${a%/*} /a/b/c + $a:t ${a##*/} d + $b:r ${b%.*} b + $b:e ${b##*.} xxx + + +D4) How can I make my csh aliases work when I convert to bash? + +Bash uses a different syntax to support aliases than csh does. +The details can be found in the documentation. We have provided +a shell script which does most of the work of conversion for you; +this script can be found in ./examples/misc/aliasconv.sh. Here is +how you use it: + +Start csh in the normal way for you. (e.g., `csh') + +Pipe the output of `alias' through `aliasconv.sh', saving the +results into `bash_aliases': + + alias | bash aliasconv.sh >bash_aliases + +Edit `bash_aliases', carefully reading through any created +functions. You will need to change the names of some csh specific +variables to the bash equivalents. The script converts $cwd to +$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt +to $PS1. You may also have to add quotes to avoid unwanted +expansion. + +For example, the csh alias: + + alias cd 'cd \!*; echo $cwd' + +is converted to the bash function: + + cd () { command cd "$@"; echo $PWD ; } + +The only thing that needs to be done is to quote $PWD: + + cd () { command cd "$@"; echo "$PWD" ; } + +Merge the edited file into your ~/.bashrc. + +There is an additional, more ambitious, script in +examples/misc/cshtobash that attempts to convert your entire csh +environment to its bash equivalent. This script can be run as +simply `cshtobash' to convert your normal interactive +environment, or as `cshtobash ~/.login' to convert your login +environment. + +D5) How can I pipe standard output and standard error from one command to + another, like csh does with `|&'? + +Use + command 2>&1 | command2 + +The key is to remember that piping is performed before redirection, so +file descriptor 1 points to the pipe when it is duplicated onto file +descriptor 2. + +D6) Now that I've converted from ksh to bash, are there equivalents to + ksh features like autoloaded functions and the `whence' command? + +There are features in ksh-88 and ksh-93 that do not have direct bash +equivalents. Most, however, can be emulated with very little trouble. + +ksh-88 feature Bash equivalent +-------------- --------------- +compiled-in aliases set up aliases in .bashrc; some ksh aliases are + bash builtins (hash, history, type) +coprocesses named pipe pairs (one for read, one for write) +typeset +f declare -F +cd, print, whence function substitutes in examples/functions/kshenv +autoloaded functions examples/functions/autoload is the same as typeset -fu +read var?prompt read -p prompt var + +ksh-93 feature Bash equivalent +-------------- --------------- +sleep, getconf Bash has loadable versions in examples/loadables +${.sh.version} $BASH_VERSION +print -f printf +hist alias hist=fc +$HISTEDIT $FCEDIT + +Section E: How can I get bash to do certain things, and why does bash do + things the way it does? + +E1) Why is the bash builtin `test' slightly different from /bin/test? + +The specific example used here is [ ! x -o x ], which is false. + +Bash's builtin `test' implements the Posix.2 spec, which can be +summarized as follows (the wording is due to David Korn): + +Here is the set of rules for processing test arguments. + + 0 Args: False + 1 Arg: True iff argument is not null. + 2 Args: If first arg is !, True iff second argument is null. + If first argument is unary, then true if unary test is true + Otherwise error. + 3 Args: If second argument is a binary operator, do binary test of $1 $3 + If first argument is !, negate two argument test of $2 $3 + If first argument is `(' and third argument is `)', do the + one-argument test of the second argument. + Otherwise error. + 4 Args: If first argument is !, negate three argument test of $2 $3 $4. + Otherwise unspecified + 5 or more Args: unspecified. (Historical shells would use their + current algorithm). + +The operators -a and -o are considered binary operators for the purpose +of the 3 Arg case. + +As you can see, the test becomes (not (x or x)), which is false. + +E2) Why does bash sometimes say `Broken pipe'? + +If a sequence of commands appears in a pipeline, and one of the +reading commands finishes before the writer has finished, the +writer receives a SIGPIPE signal. Many other shells special-case +SIGPIPE as an exit status in the pipeline and do not report it. +For example, in: + + ps -aux | head + +`head' can finish before `ps' writes all of its output, and ps +will try to write on a pipe without a reader. In that case, bash +will print `Broken pipe' to stderr when ps is killed by a +SIGPIPE. + +As of bash-3.1, bash does not report SIGPIPE errors by default. You +can build a version of bash that will report such errors. + +E3) When I have terminal escape sequences in my prompt, why does bash + wrap lines at the wrong column? + +Readline, the line editing library that bash uses, does not know +that the terminal escape sequences do not take up space on the +screen. The redisplay code assumes, unless told otherwise, that +each character in the prompt is a `printable' character that +takes up one character position on the screen. + +You can use the bash prompt expansion facility (see the PROMPTING +section in the manual page) to tell readline that sequences of +characters in the prompt strings take up no screen space. + +Use the \[ escape to begin a sequence of non-printing characters, +and the \] escape to signal the end of such a sequence. + +E4) If I pipe the output of a command into `read variable', why doesn't + the output show up in $variable when the read command finishes? + +This has to do with the parent-child relationship between Unix +processes. It affects all commands run in pipelines, not just +simple calls to `read'. For example, piping a command's output +into a `while' loop that repeatedly calls `read' will result in +the same behavior. + +Each element of a pipeline, even a builtin or shell function, +runs in a separate process, a child of the shell running the +pipeline. A subprocess cannot affect its parent's environment. +When the `read' command sets the variable to the input, that +variable is set only in the subshell, not the parent shell. When +the subshell exits, the value of the variable is lost. + +Many pipelines that end with `read variable' can be converted +into command substitutions, which will capture the output of +a specified command. The output can then be assigned to a +variable: + + grep ^gnu /usr/lib/news/active | wc -l | read ngroup + +can be converted into + + ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) + +This does not, unfortunately, work to split the text among +multiple variables, as read does when given multiple variable +arguments. If you need to do this, you can either use the +command substitution above to read the output into a variable +and chop up the variable using the bash pattern removal +expansion operators or use some variant of the following +approach. + +Say /usr/local/bin/ipaddr is the following shell script: + +#! /bin/sh +host `hostname` | awk '/address/ {print $NF}' + +Instead of using + + /usr/local/bin/ipaddr | read A B C D + +to break the local machine's IP address into separate octets, use + + OIFS="$IFS" + IFS=. + set -- $(/usr/local/bin/ipaddr) + IFS="$OIFS" + A="$1" B="$2" C="$3" D="$4" + +Beware, however, that this will change the shell's positional +parameters. If you need them, you should save them before doing +this. + +This is the general approach -- in most cases you will not need to +set $IFS to a different value. + +Some other user-supplied alternatives include: + +read A B C D << HERE + $(IFS=.; echo $(/usr/local/bin/ipaddr)) +HERE + +and, where process substitution is available, + +read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) + +E5) I have a bunch of shell scripts that use backslash-escaped characters + in arguments to `echo'. Bash doesn't interpret these characters. Why + not, and how can I make it understand them? + +This is the behavior of echo on most Unix System V machines. + +The bash builtin `echo' is modeled after the 9th Edition +Research Unix version of `echo'. It does not interpret +backslash-escaped characters in its argument strings by default; +it requires the use of the -e option to enable the +interpretation. The System V echo provides no way to disable the +special characters; the bash echo has a -E option to disable +them. + +There is a configuration option that will make bash behave like +the System V echo and interpret things like `\t' by default. Run +configure with the --enable-xpg-echo-default option to turn this +on. Be aware that this will cause some of the tests run when you +type `make tests' to fail. + +There is a shell option, `xpg_echo', settable with `shopt', that will +change the behavior of echo at runtime. Enabling this option turns +on expansion of backslash-escape sequences. + +E6) Why doesn't a while or for loop get suspended when I type ^Z? + +This is a consequence of how job control works on Unix. The only +thing that can be suspended is the process group. This is a single +command or pipeline of commands that the shell forks and executes. + +When you run a while or for loop, the only thing that the shell forks +and executes are any commands in the while loop test and commands in +the loop bodies. These, therefore, are the only things that can be +suspended when you type ^Z. + +If you want to be able to stop the entire loop, you need to put it +within parentheses, which will force the loop into a subshell that +may be stopped (and subsequently restarted) as a single unit. + +E7) What about empty for loops in Makefiles? + +It's fairly common to see constructs like this in automatically-generated +Makefiles: + +SUBDIRS = @SUBDIRS@ + + ... + +subdirs-clean: + for d in ${SUBDIRS}; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +When SUBDIRS is empty, this results in a command like this being passed to +bash: + + for d in ; do + ( cd $d && ${MAKE} ${MFLAGS} clean ) + done + +In versions of bash before bash-2.05a, this was a syntax error. If the +reserved word `in' was present, a word must follow it before the semicolon +or newline. The language in the manual page referring to the list of words +being empty referred to the list after it is expanded. These versions of +bash required that there be at least one word following the `in' when the +construct was parsed. + +The idiomatic Makefile solution is something like: + +SUBDIRS = @SUBDIRS@ + +subdirs-clean: + subdirs=$SUBDIRS ; for d in $$subdirs; do \ + ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ + done + +The latest updated POSIX standard has changed this: the word list +is no longer required. Bash versions 2.05a and later accept the +new syntax. + +E8) Why does the arithmetic evaluation code complain about `08'? + +The bash arithmetic evaluation code (used for `let', $(()), (()), and in +other places), interprets a leading `0' in numeric constants as denoting +an octal number, and a leading `0x' as denoting hexadecimal. This is +in accordance with the POSIX.2 spec, section 2.9.2.1, which states that +arithmetic constants should be handled as signed long integers as defined +by the ANSI/ISO C standard. + +The POSIX.2 interpretation committee has confirmed this: + +http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html + +E9) Why does the pattern matching expression [A-Z]* match files beginning + with every letter except `z'? + +Bash-2.03, Bash-2.05 and later versions honor the current locale setting +when processing ranges within pattern matching bracket expressions ([A-Z]). +This is what POSIX.2 and SUSv3/XPG6 specify. + +The behavior of the matcher in bash-2.05 and later versions depends on the +current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will +result in the traditional behavior ([A-Z] matches all uppercase ASCII +characters). Many other locales, including the en_US locale (the default +on many US versions of Linux) collate the upper and lower case letters like +this: + + AaBb...Zz + +which means that [A-Z] matches every letter except `z'. Others collate like + + aAbBcC...zZ + +which means that [A-Z] matches every letter except `a'. + +The portable way to specify upper case letters is [:upper:] instead of +A-Z; lower case may be specified as [:lower:] instead of a-z. + +Look at the manual pages for setlocale(3), strcoll(3), and, if it is +present, locale(1). If you have locale(1), you can use it to find +your current locale information even if you do not have any of the +LC_ variables set. + +My advice is to put + + export LC_COLLATE=C + +into /etc/profile and inspect any shell scripts run from cron for +constructs like [A-Z]. This will prevent things like + + rm [A-Z]* + +from removing every file in the current directory except those beginning +with `z' and still allow individual users to change the collation order. +Users may put the above command into their own profiles as well, of course. + +E10) Why does `cd //' leave $PWD as `//'? + +POSIX.2, in its description of `cd', says that *three* or more leading +slashes may be replaced with a single slash when canonicalizing the +current working directory. + +This is, I presume, for historical compatibility. Certain versions of +Unix, and early network file systems, used paths of the form +//hostname/path to access `path' on server `hostname'. + +E11) If I resize my xterm while another program is running, why doesn't bash + notice the change? + +This is another issue that deals with job control. + +The kernel maintains a notion of a current terminal process group. Members +of this process group (processes whose process group ID is equal to the +current terminal process group ID) receive terminal-generated signals like +SIGWINCH. (For more details, see the JOB CONTROL section of the bash +man page.) + +If a terminal is resized, the kernel sends SIGWINCH to each member of +the terminal's current process group (the `foreground' process group). + +When bash is running with job control enabled, each pipeline (which may be +a single command) is run in its own process group, different from bash's +process group. This foreground process group receives the SIGWINCH; bash +does not. Bash has no way of knowing that the terminal has been resized. + +There is a `checkwinsize' option, settable with the `shopt' builtin, that +will cause bash to check the window size and adjust its idea of the +terminal's dimensions each time a process stops or exits and returns control +of the terminal to bash. Enable it with `shopt -s checkwinsize'. + +E12) Why don't negative offsets in substring expansion work like I expect? + +When substring expansion of the form ${param:offset[:length} is used, +an `offset' that evaluates to a number less than zero counts back from +the end of the expanded value of $param. + +When a negative `offset' begins with a minus sign, however, unexpected things +can happen. Consider + + a=12345678 + echo ${a:-4} + +intending to print the last four characters of $a. The problem is that +${param:-word} already has a well-defined meaning: expand to word if the +expanded value of param is unset or null, and $param otherwise. + +To use negative offsets that begin with a minus sign, separate the +minus sign and the colon with a space. + +E13) Why does filename completion misbehave if a colon appears in the filename? + +Filename completion (and word completion in general) may appear to behave +improperly if there is a colon in the word to be completed. + +The colon is special to readline's word completion code: it is one of the +characters that breaks words for the completer. Readline uses these characters +in sort of the same way that bash uses $IFS: they break or separate the words +the completion code hands to the application-specific or default word +completion functions. The original intent was to make it easy to edit +colon-separated lists (such as $PATH in bash) in various applications using +readline for input. + +This is complicated by the fact that some versions of the popular +`bash-completion' programmable completion package have problems with the +default completion behavior in the presence of colons. + +The current set of completion word break characters is available in bash as +the value of the COMP_WORDBREAKS variable. Removing `:' from that value is +enough to make the colon not special to completion: + +COMP_WORDBREAKS=${COMP_WORDBREAKS//:} + +You can also quote the colon with a backslash to achieve the same result +temporarily. + +E14) Why does quoting the pattern argument to the regular expression matching + conditional operator (=~) cause regexp matching to stop working? + +In versions of bash prior to bash-3.2, the effect of quoting the regular +expression argument to the [[ command's =~ operator was not specified. +The practical effect was that double-quoting the pattern argument required +backslashes to quote special pattern characters, which interfered with the +backslash processing performed by double-quoted word expansion and was +inconsistent with how the == shell pattern matching operator treated +quoted characters. + +In bash-3.2, the shell was changed to internally quote characters in single- +and double-quoted string arguments to the =~ operator, which suppresses the +special meaning of the characters special to regular expression processing +(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces +them to be matched literally. This is consistent with how the `==' pattern +matching operator treats quoted portions of its pattern argument. + +Since the treatment of quoted string arguments was changed, several issues +have arisen, chief among them the problem of white space in pattern arguments +and the differing treatment of quoted strings between bash-3.1 and bash-3.2. +Both problems may be solved by using a shell variable to hold the pattern. +Since word splitting is not performed when expanding shell variables in all +operands of the [[ command, this allows users to quote patterns as they wish +when assigning the variable, then expand the values to a single string that +may contain whitespace. The first problem may be solved by using backslashes +or any other quoting mechanism to escape the white space in the patterns. + +Bash-4.0 introduces the concept of a `compatibility level', controlled by +several options to the `shopt' builtin. If the `compat31' option is enabled, +bash reverts to the bash-3.1 behavior with respect to quoting the rhs of +the =~ operator. + +E15) Tell me more about the shell compatibility level. + +Bash-4.0 introduced the concept of a `shell compatibility level', specified +as a set of options to the shopt builtin (compat31, compat32, compat40 at +this writing). There is only one current compatibility level -- each +option is mutually exclusive. This list does not mention behavior that is +standard for a particular version (e.g., setting compat32 means that quoting +the rhs of the regexp matching operator quotes special regexp characters in +the word, which is default behavior in bash-3.2 and above). + +compat31 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + - quoting the rhs of the regexp matching operator (=~) has no + special effect + +compat32 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + +compat40 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + - interrupting a command list such as "a ; b ; c" causes the execution + of the entire list to be aborted (in versions before bash-4.0, + interrupting one command in a list caused the next to be executed) + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +The problem is `cmdtool' and bash fighting over the input. When +scrolling is enabled in a cmdtool window, cmdtool puts the tty in +`raw mode' to permit command-line editing using the mouse for +applications that cannot do it themselves. As a result, bash and +cmdtool each try to read keyboard input immediately, with neither +getting enough of it to be useful. + +This mode also causes cmdtool to not implement many of the +terminal functions and control sequences appearing in the +`sun-cmd' termcap entry. For a more complete explanation, see +that file examples/suncmd.termcap in the bash distribution. + +`xterm' is a better choice, and gets along with bash much more +smoothly. + +If you must use cmdtool, you can use the termcap description in +examples/suncmd.termcap. Set the TERMCAP variable to the terminal +description contained in that file, i.e. + +TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' + +Then export TERMCAP and start a new cmdtool window from that shell. +The bash command-line editing should behave better in the new +cmdtool. If this works, you can put the assignment to TERMCAP +in your bashrc file. + +F2) I built bash on Solaris 2. Why do globbing expansions and filename + completion chop off the first few characters of each filename? + +This is the consequence of building bash on SunOS 5 and linking +with the libraries in /usr/ucblib, but using the definitions +and structures from files in /usr/include. + +The actual conflict is between the dirent structure in +/usr/include/dirent.h and the struct returned by the version of +`readdir' in libucb.a (a 4.3-BSD style `struct direct'). + +Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH +when configuring and building bash. This will ensure that you +use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you +link with libc before libucb. + +If you have installed the Sun C compiler, you may also need to +put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before +/usr/ucb. + +F3) Why does bash dump core after I interrupt username completion or + `~user' tilde expansion on a machine running NIS? + +This is a famous and long-standing bug in the SunOS YP (sorry, NIS) +client library, which is part of libc. + +The YP library code keeps static state -- a pointer into the data +returned from the server. When YP initializes itself (setpwent), +it looks at this pointer and calls free on it if it's non-null. +So far, so good. + +If one of the YP functions is interrupted during getpwent (the +exact function is interpretwithsave()), and returns NULL, the +pointer is freed without being reset to NULL, and the function +returns. The next time getpwent is called, it sees that this +pointer is non-null, calls free, and the bash free() blows up +because it's being asked to free freed memory. + +The traditional Unix mallocs allow memory to be freed multiple +times; that's probably why this has never been fixed. You can +run configure with the `--without-gnu-malloc' option to use +the C library malloc and avoid the problem. + +F4) I'm running SVR4.2. Why is the line erased every time I type `@'? + +The `@' character is the default `line kill' character in most +versions of System V, including SVR4.2. You can change this +character to whatever you want using `stty'. For example, to +change the line kill character to control-u, type + + stty kill ^U + +where the `^' and `U' can be two separate characters. + +F5) Why does bash report syntax errors when my C News scripts use a + redirection before a subshell command? + +The actual command in question is something like + + < file ( command ) + +According to the grammar given in the POSIX.2 standard, this construct +is, in fact, a syntax error. Redirections may only precede `simple +commands'. A subshell construct such as the above is one of the shell's +`compound commands'. A redirection may only follow a compound command. + +This affects the mechanical transformation of commands that use `cat' +to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on +comp.unix.shell). While most commands of the form + + cat file | command + +can be converted to `< file command', shell control structures such as +loops and subshells require `command < file'. + +The file CWRU/sh-redir-hack in the bash distribution is an +(unofficial) patch to parse.y that will modify the grammar to +support this construct. It will not apply with `patch'; you must +modify parse.y by hand. Note that if you apply this, you must +recompile with -DREDIRECTION_HACK. This introduces a large +number of reduce/reduce conflicts into the shell grammar. + +F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? + +The short answer is that Red Hat screwed up. + +The long answer is that they shipped an /etc/inputrc that only works +for emacs mode editing, and then screwed all the vi users by setting +INPUTRC to /etc/inputrc in /etc/profile. + +The short fix is to do one of the following: remove or rename +/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, +but make sure you export it if you do), remove the assignment to +INPUTRC from /etc/profile, add + + set keymap emacs + +to the beginning of /etc/inputrc, or bracket the key bindings in +/etc/inputrc with these lines + + $if mode=emacs + [...] + $endif + +F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on + HP/UX 11.x? + +HP/UX's support for long double is imperfect at best. + +GCC will support it without problems, but the HP C library functions +like strtold(3) and printf(3) don't actually work with long doubles. +HP implemented a `long_double' type as a 4-element array of 32-bit +ints, and that is what the library functions use. The ANSI C +`long double' type is a 128-bit floating point scalar. + +The easiest fix, until HP fixes things up, is to edit the generated +config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, +the compilation should complete successfully. + +Section G: How can I get bash to do certain common things? + +G1) How can I get bash to read and display eight-bit characters? + +This is a process requiring several steps. + +First, you must ensure that the `physical' data path is a full eight +bits. For xterms, for example, the `vt100' resources `eightBitInput' +and `eightBitOutput' should be set to `true'. + +Once you have set up an eight-bit path, you must tell the kernel and +tty driver to leave the eighth bit of characters alone when processing +keyboard input. Use `stty' to do this: + + stty cs8 -istrip -parenb + +For old BSD-style systems, you can use + + stty pass8 + +You may also need + + stty even odd + +Finally, you need to tell readline that you will be inputting and +displaying eight-bit characters. You use readline variables to do +this. These variables can be set in your .inputrc or using the bash +`bind' builtin. Here's an example using `bind': + + bash$ bind 'set convert-meta off' + bash$ bind 'set meta-flag on' + bash$ bind 'set output-meta on' + +The `set' commands between the single quotes may also be placed +in ~/.inputrc. + +The script examples/scripts.noah/meta.bash encapsulates the bind +commands in a shell function. + +G2) How do I write a function `x' to replace builtin command `x', but + still invoke the command from within the function? + +This is why the `command' and `builtin' builtins exist. The +`command' builtin executes the command supplied as its first +argument, skipping over any function defined with that name. The +`builtin' builtin executes the builtin command given as its first +argument directly. + +For example, to write a function to replace `cd' that writes the +hostname and current directory to an xterm title bar, use +something like the following: + + cd() + { + builtin cd "$@" && xtitle "$HOST: $PWD" + } + +This could also be written using `command' instead of `builtin'; +the version above is marginally more efficient. + +G3) How can I find the value of a shell variable whose name is the value + of another shell variable? + +Versions of Bash newer than Bash-2.0 support this directly. You can use + + ${!var} + +For example, the following sequence of commands will echo `z': + + var1=var2 + var2=z + echo ${!var1} + +For sh compatibility, use the `eval' builtin. The important +thing to remember is that `eval' expands the arguments you give +it again, so you need to quote the parts of the arguments that +you want `eval' to act on. + +For example, this expression prints the value of the last positional +parameter: + + eval echo \"\$\{$#\}\" + +The expansion of the quoted portions of this expression will be +deferred until `eval' runs, while the `$#' will be expanded +before `eval' is executed. In versions of bash later than bash-2.0, + + echo ${!#} + +does the same thing. + +This is not the same thing as ksh93 `nameref' variables, though the syntax +is similar. I may add namerefs in a future bash version. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +The bash command timing code looks for a variable `TIMEFORMAT' and +uses its value as a format string to decide how to display the +timing statistics. + +The value of TIMEFORMAT is a string with `%' escapes expanded in a +fashion similar in spirit to printf(3). The manual page explains +the meanings of the escape sequences in the format string. + +If TIMEFORMAT is not set, bash acts as if the following assignment had +been performed: + + TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + +The POSIX.2 default time format (used by `time -p command') is + + TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' + +The BSD /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' + +The System V /usr/bin/time format can be emulated with: + + TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' + +The ksh format can be emulated with: + + TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' + +G5) How do I get the current directory into my prompt? + +Bash provides a number of backslash-escape sequences which are expanded +when the prompt string (PS1 or PS2) is displayed. The full list is in +the manual page. + +The \w expansion gives the full pathname of the current directory, with +a tilde (`~') substituted for the current value of $HOME. The \W +expansion gives the basename of the current directory. To put the full +pathname of the current directory into the path without any tilde +subsitution, use $PWD. Here are some examples: + + PS1='\w$ ' # current directory with tilde + PS1='\W$ ' # basename of current directory + PS1='$PWD$ ' # full pathname of current directory + +The single quotes are important in the final example to prevent $PWD from +being expanded when the assignment to PS1 is performed. + +G6) How can I rename "*.foo" to "*.bar"? + +Use the pattern removal functionality described in D3. The following `for' +loop will do the trick: + + for f in *.foo; do + mv $f ${f%foo}bar + done + +G7) How can I translate a filename from uppercase to lowercase? + +The script examples/functions/lowercase, originally written by John DuBois, +will do the trick. The converse is left as an exercise. + +G8) How can I write a filename expansion (globbing) pattern that will match + all files in the current directory except "." and ".."? + +You must have set the `extglob' shell option using `shopt -s extglob' to use +this: + + echo .!(.|) * + +A solution that works without extended globbing is given in the Unix Shell +FAQ, posted periodically to comp.unix.shell. It's a variant of + + echo .[!.]* ..?* * + +(The ..?* catches files with names of three or more characters beginning +with `..') + +Section H: Where do I go from here? + +H1) How do I report bugs in bash, and where should I look for fixes and + advice? + +Use the `bashbug' script to report bugs. It is built and +installed at the same time as bash. It provides a standard +template for reporting a problem and automatically includes +information about your configuration and build environment. + +`bashbug' sends its reports to bug-bash@gnu.org, which +is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. + +Bug fixes, answers to questions, and announcements of new releases +are all posted to gnu.bash.bug. Discussions concerning bash features +and problems also take place there. + +To reach the bash maintainers directly, send mail to +bash-maintainers@gnu.org. + +H2) What kind of bash documentation is there? + +First, look in the doc directory in the bash distribution. It should +contain at least the following files: + +bash.1 an extensive, thorough Unix-style manual page +builtins.1 a manual page covering just bash builtin commands +bashref.texi a reference manual in GNU tex`info format +bashref.info an info version of the reference manual +FAQ this file +article.ms text of an article written for The Linux Journal +readline.3 a man page describing readline + +Postscript, HTML, and ASCII files created from the above source are +available in the documentation distribution. + +There is additional documentation available for anonymous FTP from host +ftp.cwru.edu in the `pub/bash' directory. + +Cameron Newham and Bill Rosenblatt have written a book on bash, published +by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn +Shell book. The title is ``Learning the Bash Shell'', and the ISBN number +of the third edition, published in March, 2005, is 0-596-00965-8. Look for +it in fine bookstores near you. This edition of the book has been updated +to cover bash-3.0. + +The GNU Bash Reference Manual has been published as a printed book by +Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers +bash-3.2 and is available from most online bookstores (see +http://www.network-theory.co.uk/bash/manual/ for details). The publisher +will donate $1 to the Free Software Foundation for each copy sold. + +Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', +published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, +was published in May, 2005. + +Chris F. A. Johnson, a frequent contributor to comp.unix.shell and +gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution +Approach,'' a new book on shell scripting, concentrating on features of +the POSIX standard helpful to shell script writers. The first edition from +Apress, with ISBN number 1-59059-471-1, was published in May, 2005. + +H3) What's coming in future versions? + +These are features I hope to include in a future version of bash. + +Rocky Bernstein's bash debugger (support is included with bash-4.0) + +H4) What's on the bash `wish list' for future versions? + +These are features that may or may not appear in a future version of bash. + +breaking some of the shell functionality into embeddable libraries +a module system like zsh's, using dynamic loading like builtins +a bash programmer's guide with a chapter on creating loadable builtins +a better loadable interface to perl with access to the shell builtins and + variables (contributions gratefully accepted) +ksh93-like `nameref' variables +ksh93-like `xx.yy' variables (including some of the .sh.* variables) and + associated disipline functions +Some of the new ksh93 pattern matching operators, like backreferencing + +H5) When will the next release appear? + +The next version will appear sometime in 2010. Never make predictions. + +This document is Copyright 1995-2010 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +this document for any purpose, provided that the above copyright +notice appears in all copies of this document and that the +contents of this document remain unaltered. @@ -183,14 +183,14 @@ IINNVVOOCCAATTIIOONN startup files are read. BBaasshh attempts to determine when it is being run with its standard input - connected to a a network connection, as if by the remote shell daemon, - usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh determines it - is being run in this fashion, it reads and executes commands from - _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do this if - invoked as sshh. The ----nnoorrcc option may be used to inhibit this behavior, - and the ----rrccffiillee option may be used to force another file to be read, - but _r_s_h_d does not generally invoke the shell with those options or - allow them to be specified. + connected to a network connection, as when executed by the remote shell + daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- + mines it is being run in this fashion, it reads and executes commands + from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do + this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this + behavior, and the ----rrccffiillee option may be used to force another file to + be read, but _r_s_h_d does not generally invoke the shell with those + options or allow them to be specified. If the shell is started with the effective user (group) id not equal to the real user (group) id, and the --pp option is not supplied, no startup @@ -497,7 +497,7 @@ SSHHEELLLL GGRRAAMMMMAARR before any redirections specified by the command (see RREEDDIIRREECCTTIIOONN below). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. The process - id of the shell spawned to execute the coprocess is available as the + ID of the shell spawned to execute the coprocess is available as the value of the variable _N_A_M_E_PID. The wwaaiitt builtin command may be used to wait for the coprocess to terminate. @@ -637,7 +637,7 @@ PPAARRAAMMEETTEERRSS In the context where an assignment statement is assigning a value to a shell variable or array index, the += operator can be used to append to or add to the variable's previous value. When += is applied to a vari- - able for which the integer attribute has been set, _v_a_l_u_e is evaluated + able for which the _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated as an arithmetic expression and added to the variable's current value, which is also evaluated. When += is applied to an array variable using compound assignment (see AArrrraayyss below), the variable's value is not @@ -719,7 +719,7 @@ PPAARRAAMMEETTEERRSS 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 + 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. BBAASSHH__AALLIIAASSEESS @@ -1010,7 +1010,7 @@ PPAARRAAMMEETTEERRSS pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). 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. + an Emacs shell buffer and disables line editing. EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX mode. FFCCEEDDIITT The default editor for the ffcc builtin command. @@ -1128,73 +1128,74 @@ PPAARRAAMMEETTEERRSS LLIINNEESS Used by the sseelleecctt builtin command to determine the column length for printing selection lists. Automatically set upon receipt of a SSIIGGWWIINNCCHH. - MMAAIILL If this parameter is set to a file name and the MMAAIILLPPAATTHH vari- - able is not set, bbaasshh informs the user of the arrival of mail in - the specified file. + MMAAIILL If this parameter is set to a file or directory name and the + MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user of the + arrival of mail in the specified file or Maildir-format direc- + tory. MMAAIILLCCHHEECCKK - Specifies how often (in seconds) bbaasshh checks for mail. The - default is 60 seconds. When it is time to check for mail, the - shell does so before displaying the primary prompt. If this - variable is unset, or set to a value that is not a number + Specifies how often (in seconds) bbaasshh checks for mail. The + default is 60 seconds. When it is time to check for mail, the + shell does so before displaying the primary prompt. If this + variable is unset, or set to a value that is not a number greater than or equal to zero, the shell disables mail checking. MMAAIILLPPAATTHH - A colon-separated list of file names to be checked for mail. + A colon-separated list of file names to be checked for mail. The message to be printed when mail arrives in a particular file - may be specified by separating the file name from the message + may be specified by separating the file name from the message with a `?'. When used in the text of the message, $$__ expands to the name of the current mailfile. Example: MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"' - BBaasshh supplies a default value for this variable, but the loca- - tion of the user mail files that it uses is system dependent + BBaasshh supplies a default value for this variable, but the loca- + tion of the user mail files that it uses is system dependent (e.g., /var/mail/$$UUSSEERR). OOPPTTEERRRR If set to the value 1, bbaasshh displays error messages generated by - the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a + the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a shell script is executed. - PPAATTHH The search path for commands. It is a colon-separated list of - directories in which the shell looks for commands (see CCOOMMMMAANNDD - EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the + PPAATTHH The search path for commands. It is a colon-separated list of + directories in which the shell looks for commands (see CCOOMMMMAANNDD + EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the value of PPAATTHH indicates the current directory. A null directory - name may appear as two adjacent colons, or as an initial or - trailing colon. The default path is system-dependent, and is - set by the administrator who installs bbaasshh. A common value is + name may appear as two adjacent colons, or as an initial or + trailing colon. The default path is system-dependent, and is + set by the administrator who installs bbaasshh. A common value is ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin''. PPOOSSIIXXLLYY__CCOORRRREECCTT - If this variable is in the environment when bbaasshh starts, the - 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 + If this variable is in the environment when bbaasshh starts, the + 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. 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. - PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and used as the primary prompt string. The default value is + PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and used as the primary prompt string. The default value is ``\\ss--\\vv\\$$ ''. - PPSS22 The value of this parameter is expanded as with PPSS11 and used as + PPSS22 The value of this parameter is expanded as with PPSS11 and used as the secondary prompt string. The default is ``>> ''. PPSS33 The value of this parameter is used as the prompt for the sseelleecctt command (see SSHHEELLLL GGRRAAMMMMAARR above). - PPSS44 The value of this parameter is expanded as with PPSS11 and the - value is printed before each command bbaasshh displays during an - execution trace. The first character of PPSS44 is replicated mul- - tiple times, as necessary, to indicate multiple levels of indi- + PPSS44 The value of this parameter is expanded as with PPSS11 and the + value is printed before each command bbaasshh displays during an + execution trace. The first character of PPSS44 is replicated mul- + tiple times, as necessary, to indicate multiple levels of indi- rection. The default is ``++ ''. 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. @@ -1202,191 +1203,191 @@ 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%%33llSS''. If the value is null, no - timing information is displayed. A trailing newline is added + If this variable is not set, bbaasshh acts as if it had the value + $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss%%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 - interpreted as the number of seconds to wait for input after - issuing the primary prompt. BBaasshh terminates after waiting for + coming from a terminal. In an interactive shell, the value is + interpreted as the number of seconds to wait for input after + issuing the primary prompt. BBaasshh terminates after waiting for that number of seconds if input does not arrive. - TTMMPPDDIIRR If set, BBaasshh uses its value as the name of a directory in which - BBaasshh creates temporary files for the shell's use. + 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 - arithmetic expressions) and are zero-based; associative arrays are + 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 referenced using arbitrary strings. - 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. If _s_u_b_s_c_r_i_p_t - evaluates to a number less than zero, it is used as an offset from one - greater than the array's maximum index (so a subcript of -1 refers to - the last element of the array). To explicitly declare an indexed + an arithmetic expression that must evaluate to a number. If _s_u_b_s_c_r_i_p_t + evaluates to a number less than zero, it is used as an offset from one + greater than the array's maximum index (so a subcript of -1 refers to + the last element of the array). To explicitly declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. Attributes may be specified for an array variable using the ddeeccllaarree and - rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. + 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 the bracket - and subscript. When assigning to indexed arrays, if the optional - brackets and subscript are supplied, that index is assigned to; other- + 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 the bracket + and subscript. When assigning to indexed arrays, if the optional + brackets and subscript are supplied, that index is assigned to; other- wise 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 + 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. - 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. Referencing an array variable without a subscript + 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. Referencing an array variable without a subscript is equivalent to referencing the array with a subscript of 0. - 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. - 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. Care must be taken to - avoid unwanted side effects caused by pathname expansion. uunnsseett _n_a_m_e, - where _n_a_m_e is an array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** + 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. Care must be taken to + avoid unwanted side effects caused by pathname expansion. uunnsseett _n_a_m_e, + where _n_a_m_e is an array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the entire array. - The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to - specify an indexed array and a --AA option to specify an associative - array. The rreeaadd builtin accepts a --aa option to assign a list of words + 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. 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 assign- + display array values in a way that allows them to be reused as assign- ments. 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, parame- - ter, variable and arithmetic expansion and command substitution (done + The order of expansions is: brace expansion, tilde expansion, parame- + ter, variable and arithmetic expansion and command substitution (done in a left-to-right fashion), word splitting, and pathname expansion. 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. Only brace expansion, word splitting, and pathname expansion can change - the number of words of the expansion; other expansions expand a single - word to a single word. The only exceptions to this are the expansions + the number of words of the expansion; other expansions expand a single + word to a single word. The only exceptions to this are the expansions of "$$@@" and "$${{_n_a_m_e[[@@]]}}" as explained above (see PPAARRAAMMEETTEERRSS). 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 + 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. 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 + _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. This construct is typically used as shorthand when the common prefix of @@ -1396,36 +1397,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 @@ -1433,176 +1434,176 @@ 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 file names with tildes in - assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the + also performed. Consequently, one may use file names with tildes in + assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the expanded value. PPaarraammeetteerr EExxppaannssiioonn The `$$' character introduces parameter expansion, command substitution, - or arithmetic expansion. The parameter name or symbol to be expanded - may be enclosed in braces, which are optional but serve to protect the - variable to be expanded from characters immediately following it which + or arithmetic expansion. The parameter name or symbol to be expanded + may be enclosed in braces, which are optional but serve to protect the + variable to be expanded from characters immediately following it which could be interpreted as part of the name. - When braces are used, the matching ending brace is the first `}}' not - escaped by a backslash or within a quoted string, and not within an + When braces are used, the matching ending brace is the first `}}' not + escaped by a backslash or within a quoted string, and not within an embedded arithmetic expansion, command substitution, or parameter expansion. ${_p_a_r_a_m_e_t_e_r} - The value of _p_a_r_a_m_e_t_e_r is substituted. The braces are required - when _p_a_r_a_m_e_t_e_r is a positional parameter with more than one + The value of _p_a_r_a_m_e_t_e_r is substituted. The braces are required + when _p_a_r_a_m_e_t_e_r is a positional parameter with more than one digit, or when _p_a_r_a_m_e_t_e_r is followed by a character which is not to be interpreted as part of its name. - If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), a - level of variable indirection is introduced. BBaasshh uses the value of + If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), a + level of variable indirection is introduced. 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 vari- able; 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 exceptions to this are the expan- - sions 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. + 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 exceptions to this are the expan- + sions of ${!!\\ffPPffIIpprreeffiixx**} and ${!!_n_a_m_e[_@]} described below. The excla- + mation point must immediately follow the left brace in order to intro- + duce indirection. In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- ter expansion, command substitution, and arithmetic expansion. - When not performing substring expansion, using the forms documented - below, bbaasshh tests for a parameter that is unset or null. Omitting the + When not performing substring expansion, using the forms documented + below, bbaasshh tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset. ${_p_a_r_a_m_e_t_e_r::--_w_o_r_d} - UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expan- - sion of _w_o_r_d is substituted. Otherwise, the value of _p_a_r_a_m_e_t_e_r + UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expan- + sion of _w_o_r_d is substituted. Otherwise, the value of _p_a_r_a_m_e_t_e_r is substituted. ${_p_a_r_a_m_e_t_e_r::==_w_o_r_d} - AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the + AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expansion of _w_o_r_d is assigned to _p_a_r_a_m_e_t_e_r. The value of _p_a_r_a_m_- - _e_t_e_r is then substituted. Positional parameters and special + _e_t_e_r is then substituted. Positional parameters and special parameters may not be assigned to in this way. ${_p_a_r_a_m_e_t_e_r::??_w_o_r_d} - DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is null or unset, - the expansion of _w_o_r_d (or a message to that effect if _w_o_r_d is - not present) is written to the standard error and the shell, if + DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is null or unset, + the expansion of _w_o_r_d (or a message to that effect if _w_o_r_d is + not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of _p_a_r_a_m_e_t_e_r is substituted. ${_p_a_r_a_m_e_t_e_r::++_w_o_r_d} - UUssee AAlltteerrnnaattee VVaalluuee. If _p_a_r_a_m_e_t_e_r is null or unset, nothing is + UUssee AAlltteerrnnaattee VVaalluuee. If _p_a_r_a_m_e_t_e_r is null or unset, nothing is substituted, otherwise the expansion of _w_o_r_d is substituted. ${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t} ${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t::_l_e_n_g_t_h} - SSuubbssttrriinngg EExxppaannssiioonn.. Expands to up to _l_e_n_g_t_h characters of - _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t. If - _l_e_n_g_t_h is omitted, expands to the substring of _p_a_r_a_m_e_t_e_r start- + SSuubbssttrriinngg EExxppaannssiioonn. Expands to up to _l_e_n_g_t_h characters of + _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t. If + _l_e_n_g_t_h is omitted, expands to the substring of _p_a_r_a_m_e_t_e_r start- ing at the character specified by _o_f_f_s_e_t. _l_e_n_g_t_h and _o_f_f_s_e_t are - arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below). If - _o_f_f_s_e_t evaluates to a number less than zero, the value is used - as an offset from the end of the value of _p_a_r_a_m_e_t_e_r. If _l_e_n_g_t_h + arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below). If + _o_f_f_s_e_t evaluates to a number less than zero, the value is used + as an offset from the end of the value of _p_a_r_a_m_e_t_e_r. If _l_e_n_g_t_h evaluates to a number less than zero, and _p_a_r_a_m_e_t_e_r is not @@ and - not an indexed or associative array, it is interpreted as an + not an indexed or associative array, it is interpreted as an offset from the end of the value of _p_a_r_a_m_e_t_e_r rather than a num- - ber of characters, and the expansion is the characters between - the two offsets. If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h posi- - tional parameters beginning at _o_f_f_s_e_t. If _p_a_r_a_m_e_t_e_r is an - indexed array name subscripted by @ or *, the result is the + ber of characters, and the expansion is the characters between + the two offsets. If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h posi- + tional parameters beginning at _o_f_f_s_e_t. If _p_a_r_a_m_e_t_e_r is an + indexed array name subscripted by @ or *, the result is the _l_e_n_g_t_h members of the array beginning with ${_p_a_r_a_m_e_t_e_r[_o_f_f_s_e_t]}. A negative _o_f_f_s_e_t is taken relative to one greater than the max- - imum index of the specified array. Substring expansion applied + imum index of the specified array. Substring expansion applied to an associative array produces undefined results. Note that a negative offset must be separated from the colon by at least one - space to avoid being confused with the :- expansion. Substring - indexing is zero-based unless the positional parameters are - used, in which case the indexing starts at 1 by default. If - _o_f_f_s_e_t is 0, and the positional parameters are used, $$00 is pre- + space to avoid being confused with the :- expansion. Substring + indexing is zero-based unless the positional parameters are + used, in which case the indexing starts at 1 by default. If + _o_f_f_s_e_t is 0, and the positional parameters are used, $$00 is pre- fixed to the list. ${!!_p_r_e_f_i_x**} ${!!_p_r_e_f_i_x@@} - NNaammeess mmaattcchhiinngg pprreeffiixx.. Expands to the names of variables whose + NNaammeess mmaattcchhiinngg pprreeffiixx. Expands to the names of variables whose names begin with _p_r_e_f_i_x, separated by the first character of the - IIFFSS special variable. When _@ is used and the expansion appears - within double quotes, each variable name expands to a separate + IIFFSS special variable. When _@ is used and the expansion appears + within double quotes, each variable name expands to a separate word. ${!!_n_a_m_e[_@]} ${!!_n_a_m_e[_*]} - LLiisstt ooff aarrrraayy kkeeyyss.. If _n_a_m_e is an array variable, expands to - the list of array indices (keys) assigned in _n_a_m_e. If _n_a_m_e is - not an array, expands to 0 if _n_a_m_e is set and null otherwise. - When _@ is used and the expansion appears within double quotes, + LLiisstt ooff aarrrraayy kkeeyyss. If _n_a_m_e is an array variable, expands to + the list of array indices (keys) assigned in _n_a_m_e. If _n_a_m_e is + not an array, expands to 0 if _n_a_m_e is set and null otherwise. + When _@ is used and the expansion appears within double quotes, each key expands to a separate word. ${##_p_a_r_a_m_e_t_e_r} - PPaarraammeetteerr lleennggtthh.. The length in characters of the value of - _p_a_r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value - substituted is the number of positional parameters. If _p_a_r_a_m_e_- - _t_e_r is an array name subscripted by ** or @@, the value substi- + PPaarraammeetteerr lleennggtthh. The length in characters of the value of + _p_a_r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value + substituted is the number of positional parameters. If _p_a_r_a_m_e_- + _t_e_r is an array name subscripted by ** or @@, the value substi- tuted is the number of elements in the array. ${_p_a_r_a_m_e_t_e_r##_w_o_r_d} ${_p_a_r_a_m_e_t_e_r####_w_o_r_d} - RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn.. The _w_o_r_d is expanded to produce + RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce a pattern just as in pathname expansion. If the pattern matches - the beginning of the value of _p_a_r_a_m_e_t_e_r, then the result of the - expansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest - matching pattern (the ``##'' case) or the longest matching pat- - tern (the ``####'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the - pattern removal operation is applied to each positional parame- + the beginning of the value of _p_a_r_a_m_e_t_e_r, then the result of the + expansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest + matching pattern (the ``##'' case) or the longest matching pat- + tern (the ``####'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the + pattern removal operation is applied to each positional parame- ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- - _e_t_e_r is an array variable subscripted with @@ or **, the pattern - removal operation is applied to each member of the array in + _e_t_e_r is an array variable subscripted with @@ or **, the pattern + removal operation is applied to each member of the array in turn, and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d} ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} - RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn.. The _w_o_r_d is expanded to produce + RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce a pattern just as in pathname expansion. If the pattern matches - a trailing portion of the expanded value of _p_a_r_a_m_e_t_e_r, then the - result of the expansion is the expanded value of _p_a_r_a_m_e_t_e_r with - the shortest matching pattern (the ``%%'' case) or the longest - matching pattern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ - or **, the pattern removal operation is applied to each posi- - tional parameter in turn, and the expansion is the resultant - list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or - **, the pattern removal operation is applied to each member of + a trailing portion of the expanded value of _p_a_r_a_m_e_t_e_r, then the + result of the expansion is the expanded value of _p_a_r_a_m_e_t_e_r with + the shortest matching pattern (the ``%%'' case) or the longest + matching pattern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ + or **, the pattern removal operation is applied to each posi- + tional parameter in turn, and the expansion is the resultant + list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or + **, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g} - PPaatttteerrnn ssuubbssttiittuuttiioonn.. The _p_a_t_t_e_r_n is expanded to produce a pat- - tern just as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded and - the longest match of _p_a_t_t_e_r_n against its value is replaced with - _s_t_r_i_n_g. If _p_a_t_t_e_r_n begins with //, all matches of _p_a_t_t_e_r_n are - replaced with _s_t_r_i_n_g. Normally only the first match is + PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat- + tern just as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded and + the longest match of _p_a_t_t_e_r_n against its value is replaced with + _s_t_r_i_n_g. If _p_a_t_t_e_r_n begins with //, all matches of _p_a_t_t_e_r_n are + replaced with _s_t_r_i_n_g. Normally only the first match is replaced. If _p_a_t_t_e_r_n begins with ##, it must match at the begin- ning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n begins with - %%, it must match at the end of the expanded value of _p_a_r_a_m_e_t_e_r. + %%, it must match at the end of the expanded value of _p_a_r_a_m_e_t_e_r. If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted and the // fol- lowing _p_a_t_t_e_r_n may be omitted. If _p_a_r_a_m_e_t_e_r is @@ or **, the sub- - stitution operation is applied to each positional parameter in - turn, and the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is - an array variable subscripted with @@ or **, the substitution - operation is applied to each member of the array in turn, and + stitution operation is applied to each positional parameter in + turn, and the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is + an array variable subscripted with @@ or **, the substitution + operation is applied to each member of the array in turn, and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n} - CCaassee mmooddiiffiiccaattiioonn.. This expansion modifies the case of alpha- - betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- - duce a pattern just as in pathname expansion. The ^^ operator - converts lowercase letters matching _p_a_t_t_e_r_n to uppercase; the ,, - operator converts matching uppercase letters to lowercase. The - ^^^^ and ,,,, expansions convert each matched character in the - expanded value; the ^^ and ,, expansions match and convert only - the first character in the expanded value. If _p_a_t_t_e_r_n is omit- - ted, it is treated like a ??, which matches every character. If - _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is applied - to each positional parameter in turn, and the expansion is the - resultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted - with @@ or **, the case modification operation is applied to each - member of the array in turn, and the expansion is the resultant + CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- + betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- + duce a pattern just as in pathname expansion. The ^^ operator + converts lowercase letters matching _p_a_t_t_e_r_n to uppercase; the ,, + operator converts matching uppercase letters to lowercase. The + ^^^^ and ,,,, expansions convert each matched character in the + expanded value; the ^^ and ,, expansions match and convert only + the first character in the expanded value. If _p_a_t_t_e_r_n is omit- + ted, it is treated like a ??, which matches every character. If + _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is applied + to each positional parameter in turn, and the expansion is the + resultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted + with @@ or **, the case modification operation is applied to each + member of the array in turn, and the expansion is the resultant list. CCoommmmaanndd SSuubbssttiittuuttiioonn @@ -1615,160 +1616,160 @@ EEXXPPAANNSSIIOONN ``_c_o_m_m_a_n_d`` BBaasshh performs the expansion by executing _c_o_m_m_a_n_d and replacing the com- - mand substitution with the standard output of the command, with any + mand substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are not deleted, but they - may be removed during word splitting. The command substitution $$((ccaatt + may be removed during word splitting. The command substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but faster $$((<< _f_i_l_e)). - When the old-style backquote form of substitution is used, backslash - retains its literal meaning except when followed by $$, ``, or \\. The + When the old-style backquote form of substitution is used, backslash + retains its literal meaning except when followed by $$, ``, or \\. The first backquote not preceded by a backslash terminates the command sub- - stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the + stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the parentheses make up the command; none are treated specially. Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes. - If the substitution appears within double quotes, word splitting and + If the substitution appears within double quotes, word splitting and pathname expansion are not performed on the results. AArriitthhmmeettiicc EExxppaannssiioonn - Arithmetic expansion allows the evaluation of an arithmetic expression - and the substitution of the result. The format for arithmetic expan- + Arithmetic expansion allows the evaluation of an arithmetic expression + and the substitution of the result. The format for arithmetic expan- sion is: $$((((_e_x_p_r_e_s_s_i_o_n)))) - The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a - double quote inside the parentheses is not treated specially. All + The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a + double quote inside the parentheses is not treated specially. All tokens in the expression undergo parameter expansion, string expansion, - command substitution, and quote removal. Arithmetic expansions may be + command substitution, and quote removal. Arithmetic expansions may be nested. - The evaluation is performed according to the rules listed below under + The evaluation is performed according to the rules listed below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is invalid, bbaasshh prints a message indicating failure and no substitution occurs. PPrroocceessss SSuubbssttiittuuttiioonn - _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n is supported on systems that support named pipes - (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. It takes the form - of <<((_l_i_s_t)) or >>((_l_i_s_t)). The process _l_i_s_t is run with its input or out- + _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n is supported on systems that support named pipes + (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. It takes the form + of <<((_l_i_s_t)) or >>((_l_i_s_t)). The process _l_i_s_t is run with its input or out- put connected to a _F_I_F_O or some file in //ddeevv//ffdd. The name of this file - is passed as an argument to the current command as the result of the - expansion. If the >>((_l_i_s_t)) form is used, writing to the file will pro- - vide input for _l_i_s_t. If the <<((_l_i_s_t)) form is used, the file passed as + is passed as an argument to the current command as the result of the + expansion. If the >>((_l_i_s_t)) form is used, writing to the file will pro- + vide input for _l_i_s_t. If the <<((_l_i_s_t)) form is used, the file passed as an argument should be read to obtain the output of _l_i_s_t. - When available, process substitution is performed simultaneously with - parameter and variable expansion, command substitution, and arithmetic + When available, process substitution is performed simultaneously with + parameter and variable expansion, command substitution, and arithmetic expansion. WWoorrdd SSpplliittttiinngg - The shell scans the results of parameter expansion, command substitu- - tion, and arithmetic expansion that did not occur within double quotes + The shell scans the results of parameter expansion, command substitu- + tion, and arithmetic expansion that did not occur within double quotes for _w_o_r_d _s_p_l_i_t_t_i_n_g. - The shell treats each character of IIFFSS as a delimiter, and splits the + The shell treats each character of IIFFSS as a delimiter, and splits the results of the other expansions into words on these characters. If IIFFSS - is unset, or its value is exactly <<ssppaaccee>><<ttaabb>><<nneewwlliinnee>>, the default, - then sequences of <<ssppaaccee>>, <<ttaabb>>, and <<nneewwlliinnee>> at the beginning and - end of the results of the previous expansions are ignored, and any - sequence of IIFFSS characters not at the beginning or end serves to - delimit words. If IIFFSS has a value other than the default, then + is unset, or its value is exactly <<ssppaaccee>><<ttaabb>><<nneewwlliinnee>>, the default, + then sequences of <<ssppaaccee>>, <<ttaabb>>, and <<nneewwlliinnee>> at the beginning and + end of the results of the previous expansions are ignored, and any + sequence of IIFFSS characters not at the beginning or end serves to + delimit words. If IIFFSS has a value other than the default, then sequences of the whitespace characters ssppaaccee and ttaabb are ignored at the - beginning and end of the word, as long as the whitespace character is - in the value of IIFFSS (an IIFFSS whitespace character). Any character in - IIFFSS that is not IIFFSS whitespace, along with any adjacent IIFFSS whitespace - characters, delimits a field. A sequence of IIFFSS whitespace characters - is also treated as a delimiter. If the value of IIFFSS is null, no word + beginning and end of the word, as long as the whitespace character is + in the value of IIFFSS (an IIFFSS whitespace character). Any character in + IIFFSS that is not IIFFSS whitespace, along with any adjacent IIFFSS whitespace + characters, delimits a field. A sequence of IIFFSS whitespace characters + is also treated as a delimiter. If the value of IIFFSS is null, no word splitting occurs. - Explicit null arguments ("""" or '''') are retained. Unquoted implicit + Explicit null arguments ("""" or '''') are retained. Unquoted implicit null arguments, resulting from the expansion of parameters that have no - values, are removed. If a parameter with no value is expanded within + values, are removed. If a parameter with no value is expanded within double quotes, a null argument results and is retained. Note that if no expansion occurs, no splitting is performed. PPaatthhnnaammee EExxppaannssiioonn - After word splitting, unless the --ff option has been set, bbaasshh scans - each word for the characters **, ??, and [[. If one of these characters - appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an - alphabetically sorted list of file names matching the pattern. If no - matching file names are found, and the shell option nnuullllgglloobb is not - enabled, the word is left unchanged. If the nnuullllgglloobb option is set, - and no matches are found, the word is removed. If the ffaaiillgglloobb shell - option is set, and no matches are found, an error message is printed - and the command is not executed. If the shell option nnooccaasseegglloobb is - enabled, the match is performed without regard to the case of alpha- - betic characters. When a pattern is used for pathname expansion, the - character ````..'''' at the start of a name or immediately following a - slash must be matched explicitly, unless the shell option ddoottgglloobb is - set. When matching a pathname, the slash character must always be - matched explicitly. In other cases, the ````..'''' character is not - treated specially. See the description of sshhoopptt below under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiill-- + After word splitting, unless the --ff option has been set, bbaasshh scans + each word for the characters **, ??, and [[. If one of these characters + appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an + alphabetically sorted list of file names matching the pattern. If no + matching file names are found, and the shell option nnuullllgglloobb is not + enabled, the word is left unchanged. If the nnuullllgglloobb option is set, + and no matches are found, the word is removed. If the ffaaiillgglloobb shell + option is set, and no matches are found, an error message is printed + and the command is not executed. If the shell option nnooccaasseegglloobb is + enabled, the match is performed without regard to the case of alpha- + betic characters. When a pattern is used for pathname expansion, the + character ````..'''' at the start of a name or immediately following a + slash must be matched explicitly, unless the shell option ddoottgglloobb is + set. When matching a pathname, the slash character must always be + matched explicitly. In other cases, the ````..'''' character is not + treated specially. See the description of sshhoopptt below under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiill-- gglloobb, and ddoottgglloobb shell options. - The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file - names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching file - name that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed + The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file + names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching file + name that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed from the list of matches. The file names ````..'''' and ````....'''' are always - ignored when GGLLOOBBIIGGNNOORREE is set and not null. However, setting GGLLOOBBIIGG-- - NNOORREE to a non-null value has the effect of enabling the ddoottgglloobb shell + ignored when GGLLOOBBIIGGNNOORREE is set and not null. However, setting GGLLOOBBIIGG-- + NNOORREE to a non-null value has the effect of enabling the ddoottgglloobb shell option, so all other file names beginning with a ````..'''' will match. To - get the old behavior of ignoring file names beginning with a ````..'''', - make ````..**'''' one of the patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is + get the old behavior of ignoring file names beginning with a ````..'''', + make ````..**'''' one of the patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE is unset. PPaatttteerrnn MMaattcchhiinngg Any character that appears in a pattern, other than the special pattern - characters described below, matches itself. The NUL character may not - occur in a pattern. A backslash escapes the following character; the - escaping backslash is discarded when matching. The special pattern + characters described below, matches itself. The NUL character may not + occur in a pattern. A backslash escapes the following character; the + escaping backslash is discarded when matching. The special pattern characters must be quoted if they are to be matched literally. The special pattern characters have the following meanings: - ** Matches any string, including the null string. When the gglloobb-- + ** Matches any string, including the null string. When the gglloobb-- ssttaarr shell option is enabled, and ** is used in a pathname expan- - sion context, two adjacent **s used as a single pattern will + sion context, two adjacent **s used as a single pattern will match all files and zero or more directories and subdirectories. - If followed by a //, two adjacent **s will match only directories + If followed by a //, two adjacent **s will match only directories and subdirectories. ?? Matches any single character. - [[......]] Matches any one of the enclosed characters. A pair of charac- + [[......]] Matches any one of the enclosed characters. A pair of charac- ters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_s_i_o_n; any char- - acter that sorts between those two characters, inclusive, using - the current locale's collating sequence and character set, is - matched. If the first character following the [[ is a !! or a ^^ - then any character not enclosed is matched. The sorting order - of characters in range expressions is determined by the current - locale and the value of the LLCC__CCOOLLLLAATTEE shell variable, if set. - A -- may be matched by including it as the first or last charac- + acter that sorts between those two characters, inclusive, using + the current locale's collating sequence and character set, is + matched. If the first character following the [[ is a !! or a ^^ + then any character not enclosed is matched. The sorting order + of characters in range expressions is determined by the current + locale and the value of the LLCC__CCOOLLLLAATTEE shell variable, if set. + A -- may be matched by including it as the first or last charac- ter in the set. A ]] may be matched by including it as the first character in the set. - Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using the - syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following classes + Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using the + syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following classes defined in the POSIX standard: - aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt ppuunncctt + aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt A character class matches any character belonging to that class. - The wwoorrdd character class matches letters, digits, and the char- + The wwoorrdd character class matches letters, digits, and the char- acter _. - Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified using the - syntax [[==_c==]], which matches all characters with the same colla- - tion weight (as defined by the current locale) as the character + Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified using the + syntax [[==_c==]], which matches all characters with the same colla- + tion weight (as defined by the current locale) as the character _c. Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collating sym- bol _s_y_m_b_o_l. If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, several - extended pattern matching operators are recognized. In the following + extended pattern matching operators are recognized. In the following description, a _p_a_t_t_e_r_n_-_l_i_s_t is a list of one or more patterns separated by a ||. Composite patterns may be formed using one or more of the fol- lowing sub-patterns: @@ -1786,55 +1787,55 @@ EEXXPPAANNSSIIOONN QQuuoottee RReemmoovvaall After the preceding expansions, all unquoted occurrences of the charac- - ters \\, '', and "" that did not result from one of the above expansions + ters \\, '', and "" that did not result from one of the above expansions are removed. RREEDDIIRREECCTTIIOONN - Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d - using a special notation interpreted by the shell. Redirection may - also be used to open and close files for the current shell execution + Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d + using a special notation interpreted by the shell. Redirection may + also be used to open and close files for the current shell execution environment. The following redirection operators may precede or appear anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may follow a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, from left to right. - Each redirection that may be preceded by a file descriptor number may + Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a - file descriptor greater than 10 and assign it to _v_a_r_n_a_m_e. If >&- or - <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines the file + file descriptor greater than 10 and assign it to _v_a_r_n_a_m_e. If >&- or + <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines the file descriptor to close. - In the following descriptions, if the file descriptor number is omit- - ted, and the first character of the redirection operator is <<, the re- - direction refers to the standard input (file descriptor 0). If the - first character of the redirection operator is >>, the redirection + In the following descriptions, if the file descriptor number is omit- + ted, and the first character of the redirection operator is <<, the re- + direction refers to the standard input (file descriptor 0). If the + first character of the redirection operator is >>, the redirection refers to the standard output (file descriptor 1). - The word following the redirection operator in the following descrip- - tions, unless otherwise noted, is subjected to brace expansion, tilde + The word following the redirection operator in the following descrip- + tions, unless otherwise noted, is subjected to brace expansion, tilde expansion, parameter expansion, command substitution, arithmetic expan- - sion, quote removal, pathname expansion, and word splitting. If it + sion, quote removal, pathname expansion, and word splitting. If it expands to more than one word, bbaasshh reports an error. - Note that the order of redirections is significant. For example, the + Note that the order of redirections is significant. For example, the command ls >> dirlist 2>>&&1 - directs both standard output and standard error to the file _d_i_r_l_i_s_t, + directs both standard output and standard error to the file _d_i_r_l_i_s_t, while the command ls 2>>&&1 >> dirlist - directs only the standard output to file _d_i_r_l_i_s_t, because the standard - error was duplicated from the standard output before the standard out- + directs only the standard output to file _d_i_r_l_i_s_t, because the standard + error was duplicated from the standard output before the standard out- put was redirected to _d_i_r_l_i_s_t. BBaasshh handles several filenames specially when they are used in redirec- tions, as described in the following table: //ddeevv//ffdd//_f_d - If _f_d is a valid integer, file descriptor _f_d is dupli- + If _f_d is a valid integer, file descriptor _f_d is dupli- cated. //ddeevv//ssttddiinn File descriptor 0 is duplicated. @@ -1844,22 +1845,22 @@ RREEDDIIRREECCTTIIOONN File descriptor 2 is duplicated. //ddeevv//ttccpp//_h_o_s_t//_p_o_r_t If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts + is an integer port number or service name, bbaasshh attempts to open a TCP connection to the corresponding socket. //ddeevv//uuddpp//_h_o_s_t//_p_o_r_t If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts + is an integer port number or service name, bbaasshh attempts to open a UDP connection to the corresponding socket. A failure to open or create a file causes the redirection to fail. - Redirections using file descriptors greater than 9 should be used with - care, as they may conflict with file descriptors the shell uses inter- + Redirections using file descriptors greater than 9 should be used with + care, as they may conflict with file descriptors the shell uses inter- nally. RReeddiirreeccttiinngg IInnppuutt Redirection of input causes the file whose name results from the expan- - sion of _w_o_r_d to be opened for reading on file descriptor _n, or the + sion of _w_o_r_d to be opened for reading on file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. The general format for redirecting input is: @@ -1867,27 +1868,27 @@ RREEDDIIRREECCTTIIOONN [_n]<<_w_o_r_d RReeddiirreeccttiinngg OOuuttppuutt - Redirection of output causes the file whose name results from the + Redirection of output causes the file whose name results from the expansion of _w_o_r_d to be opened for writing on file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. If the file - does not exist it is created; if it does exist it is truncated to zero + does not exist it is created; if it does exist it is truncated to zero size. The general format for redirecting output is: [_n]>>_w_o_r_d - If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett - builtin has been enabled, the redirection will fail if the file whose - name results from the expansion of _w_o_r_d exists and is a regular file. + If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett + builtin has been enabled, the redirection will fail if the file whose + name results from the expansion of _w_o_r_d exists and is a regular file. If the redirection operator is >>||, or the redirection operator is >> and the nnoocclloobbbbeerr option to the sseett builtin command is not enabled, the re- direction is attempted even if the file named by _w_o_r_d exists. AAppppeennddiinngg RReeddiirreecctteedd OOuuttppuutt - Redirection of output in this fashion causes the file whose name - results from the expansion of _w_o_r_d to be opened for appending on file - descriptor _n, or the standard output (file descriptor 1) if _n is not + Redirection of output in this fashion causes the file whose name + results from the expansion of _w_o_r_d to be opened for appending on file + descriptor _n, or the standard output (file descriptor 1) if _n is not specified. If the file does not exist it is created. The general format for appending output is: @@ -1896,11 +1897,11 @@ RREEDDIIRREECCTTIIOONN RReeddiirreeccttiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct allows both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to be redirected to the + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be redirected to the file whose name is the expansion of _w_o_r_d. - There are two formats for redirecting standard output and standard + There are two formats for redirecting standard output and standard error: &&>>_w_o_r_d @@ -1914,8 +1915,8 @@ RREEDDIIRREECCTTIIOONN AAppppeennddiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct allows both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to be appended to the + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be appended to the file whose name is the expansion of _w_o_r_d. The format for appending standard output and standard error is: @@ -1927,9 +1928,9 @@ RREEDDIIRREECCTTIIOONN >>>>_w_o_r_d 2>>&&1 HHeerree DDooccuummeennttss - This type of redirection instructs the shell to read input from the + This type of redirection instructs the shell to read input from the current source until a line containing only _d_e_l_i_m_i_t_e_r (with no trailing - blanks) is seen. All of the lines read up to that point are then used + blanks) is seen. All of the lines read up to that point are then used as the standard input for a command. The format of here-documents is: @@ -1938,18 +1939,18 @@ RREEDDIIRREECCTTIIOONN _h_e_r_e_-_d_o_c_u_m_e_n_t _d_e_l_i_m_i_t_e_r - No parameter expansion, command substitution, arithmetic expansion, or + No parameter expansion, command substitution, arithmetic expansion, or pathname expansion is performed on _w_o_r_d. If any characters in _w_o_r_d are - quoted, the _d_e_l_i_m_i_t_e_r is the result of quote removal on _w_o_r_d, and the - lines in the here-document are not expanded. If _w_o_r_d is unquoted, all - lines of the here-document are subjected to parameter expansion, com- - mand substitution, and arithmetic expansion. In the latter case, the - character sequence \\<<nneewwlliinnee>> is ignored, and \\ must be used to quote + quoted, the _d_e_l_i_m_i_t_e_r is the result of quote removal on _w_o_r_d, and the + lines in the here-document are not expanded. If _w_o_r_d is unquoted, all + lines of the here-document are subjected to parameter expansion, com- + mand substitution, and arithmetic expansion. In the latter case, the + character sequence \\<<nneewwlliinnee>> is ignored, and \\ must be used to quote the characters \\, $$, and ``. If the redirection operator is <<<<--, then all leading tab characters are - stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This - allows here-documents within shell scripts to be indented in a natural + stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This + allows here-documents within shell scripts to be indented in a natural fashion. HHeerree SSttrriinnggss @@ -1965,20 +1966,20 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_w_o_r_d is used to duplicate input file descriptors. If _w_o_r_d expands to one or - more digits, the file descriptor denoted by _n is made to be a copy of - that file descriptor. If the digits in _w_o_r_d do not specify a file - descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- - ates to --, file descriptor _n is closed. If _n is not specified, the + more digits, the file descriptor denoted by _n is made to be a copy of + that file descriptor. If the digits in _w_o_r_d do not specify a file + descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- + ates to --, file descriptor _n is closed. If _n is not specified, the standard input (file descriptor 0) is used. The operator [_n]>>&&_w_o_r_d - is used similarly to duplicate output file descriptors. If _n is not - specified, the standard output (file descriptor 1) is used. If the - digits in _w_o_r_d do not specify a file descriptor open for output, a re- - direction error occurs. As a special case, if _n is omitted, and _w_o_r_d + is used similarly to duplicate output file descriptors. If _n is not + specified, the standard output (file descriptor 1) is used. If the + digits in _w_o_r_d do not specify a file descriptor open for output, a re- + direction error occurs. As a special case, if _n is omitted, and _w_o_r_d does not expand to one or more digits, the standard output and standard error are redirected as described previously. @@ -1987,7 +1988,7 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after being duplicated to _n. @@ -1995,7 +1996,7 @@ RREEDDIIRREECCTTIIOONN [_n]>>&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg @@ -2003,117 +2004,117 @@ RREEDDIIRREECCTTIIOONN [_n]<<>>_w_o_r_d - causes the file whose name is the expansion of _w_o_r_d to be opened for - both reading and writing on file descriptor _n, or on file descriptor 0 + causes the file whose name is the expansion of _w_o_r_d to be opened for + both reading and writing on file descriptor _n, or on file descriptor 0 if _n is not specified. If the file does not exist, it is created. AALLIIAASSEESS - _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as - the first word of a simple command. The shell maintains a list of - aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin - commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each - simple command, if unquoted, is checked to see if it has an alias. If - so, that word is replaced by the text of the alias. The characters //, - $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters + _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as + the first word of a simple command. The shell maintains a list of + aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin + commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each + simple command, if unquoted, is checked to see if it has an alias. If + so, that word is replaced by the text of the alias. The characters //, + $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters listed above may not appear in an alias name. The replacement text may - contain any valid shell input, including shell metacharacters. The - first word of the replacement text is tested for aliases, but a word - that is identical to an alias being expanded is not expanded a second - time. This means that one may alias llss to llss --FF, for instance, and - bbaasshh does not try to recursively expand the replacement text. If the - last character of the alias value is a _b_l_a_n_k, then the next command + contain any valid shell input, including shell metacharacters. The + first word of the replacement text is tested for aliases, but a word + that is identical to an alias being expanded is not expanded a second + time. This means that one may alias llss to llss --FF, for instance, and + bbaasshh does not try to recursively expand the replacement text. If the + last character of the alias value is a _b_l_a_n_k, then the next command word following the alias is also checked for alias expansion. Aliases are created and listed with the aalliiaass command, and removed with the uunnaalliiaass command. - There is no mechanism for using arguments in the replacement text. If - arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS + There is no mechanism for using arguments in the replacement text. If + arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS below). - Aliases are not expanded when the shell is not interactive, unless the - eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of + Aliases are not expanded when the shell is not interactive, unless the + eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - The rules concerning the definition and use of aliases are somewhat - confusing. BBaasshh always reads at least one complete line of input - before executing any of the commands on that line. Aliases are - expanded when a command is read, not when it is executed. Therefore, - an alias definition appearing on the same line as another command does - not take effect until the next line of input is read. The commands + The rules concerning the definition and use of aliases are somewhat + confusing. BBaasshh always reads at least one complete line of input + before executing any of the commands on that line. Aliases are + expanded when a command is read, not when it is executed. Therefore, + an alias definition appearing on the same line as another command does + not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new - alias. This behavior is also an issue when functions are executed. - Aliases are expanded when a function definition is read, not when the - function is executed, because a function definition is itself a com- + alias. This behavior is also an issue when functions are executed. + Aliases are expanded when a function definition is read, not when the + function is executed, because a function definition is itself a com- pound command. As a consequence, aliases defined in a function are not - available until after that function is executed. To be safe, always - put alias definitions on a separate line, and do not use aalliiaass in com- + available until after that function is executed. To be safe, always + put alias definitions on a separate line, and do not use aalliiaass in com- pound commands. For almost every purpose, aliases are superseded by shell functions. FFUUNNCCTTIIOONNSS - A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, - stores a series of commands for later execution. When the name of a - shell function is used as a simple command name, the list of commands + A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, + stores a series of commands for later execution. When the name of a + shell function is used as a simple command name, the list of commands associated with that function name is executed. Functions are executed - in the context of the current shell; no new process is created to - interpret them (contrast this with the execution of a shell script). - When a function is executed, the arguments to the function become the + in the context of the current shell; no new process is created to + interpret them (contrast this with the execution of a shell script). + When a function is executed, the arguments to the function become the positional parameters during its execution. The special parameter ## is - updated to reflect the change. Special parameter 0 is unchanged. The - first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- + updated to reflect the change. Special parameter 00 is unchanged. The + first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- tion while the function is executing. - All other aspects of the shell execution environment are identical + All other aspects of the shell execution environment are identical between a function and its caller with these exceptions: the DDEEBBUUGG and - RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been - given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin - below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett - builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN - traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell + RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been + given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin + below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett + builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN + traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell option has been enabled. - Variables local to the function may be declared with the llooccaall builtin + Variables local to the function may be declared with the llooccaall builtin command. Ordinarily, variables and their values are shared between the function and its caller. - The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, - defines a maximum function nesting level. Function invocations that + The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, + defines a maximum function nesting level. Function invocations that exceed the limit cause the entire command to abort. - If the builtin command rreettuurrnn is executed in a function, the function - completes and execution resumes with the next command after the func- - tion call. Any command associated with the RREETTUURRNN trap is executed + If the builtin command rreettuurrnn is executed in a function, the function + completes and execution resumes with the next command after the func- + tion call. Any command associated with the RREETTUURRNN trap is executed before execution resumes. When a function completes, the values of the - positional parameters and the special parameter ## are restored to the + positional parameters and the special parameter ## are restored to the values they had prior to the function's execution. - Function names and definitions may be listed with the --ff option to the + Function names and definitions may be listed with the --ff option to the ddeeccllaarree or ttyyppeesseett builtin commands. The --FF option to ddeeccllaarree or ttyyppee-- - sseett will list the function names only (and optionally the source file - and line number, if the eexxttddeebbuugg shell option is enabled). Functions - may be exported so that subshells automatically have them defined with - the --ff option to the eexxppoorrtt builtin. A function definition may be - deleted using the --ff option to the uunnsseett builtin. Note that shell + sseett will list the function names only (and optionally the source file + and line number, if the eexxttddeebbuugg shell option is enabled). Functions + may be exported so that subshells automatically have them defined with + the --ff option to the eexxppoorrtt builtin. A function definition may be + deleted using the --ff option to the uunnsseett builtin. Note that shell functions and variables with the same name may result in multiple iden- - tically-named entries in the environment passed to the shell's chil- + tically-named entries in the environment passed to the shell's chil- dren. Care should be taken in cases where this may cause a problem. Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit - the depth of the function call stack and restrict the number of func- - tion invocations. By default, no limit is imposed on the number of + the depth of the function call stack and restrict the number of func- + tion invocations. By default, no limit is imposed on the number of recursive calls. AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN - The shell allows arithmetic expressions to be evaluated, under certain - circumstances (see the lleett and ddeeccllaarree builtin commands and AArriitthhmmeettiicc - EExxppaannssiioonn). Evaluation is done in fixed-width integers with no check - for overflow, though division by 0 is trapped and flagged as an error. - The operators and their precedence, associativity, and values are the - same as in the C language. The following list of operators is grouped - into levels of equal-precedence operators. The levels are listed in + The shell allows arithmetic expressions to be evaluated, under certain + circumstances (see the lleett and ddeeccllaarree builtin commands and AArriitthhmmeettiicc + EExxppaannssiioonn). Evaluation is done in fixed-width integers with no check + for overflow, though division by 0 is trapped and flagged as an error. + The operators and their precedence, associativity, and values are the + same as in the C language. The following list of operators is grouped + into levels of equal-precedence operators. The levels are listed in order of decreasing precedence. _i_d++++ _i_d---- @@ -2141,46 +2142,46 @@ AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN _e_x_p_r_1 ,, _e_x_p_r_2 comma - Shell variables are allowed as operands; parameter expansion is per- + Shell variables are allowed as operands; parameter expansion is per- formed before the expression is evaluated. Within an expression, shell - variables may also be referenced by name without using the parameter - expansion syntax. A shell variable that is null or unset evaluates to + variables may also be referenced by name without using the parameter + expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. - The value of a variable is evaluated as an arithmetic expression when - it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r + The value of a variable is evaluated as an arithmetic expression when + it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r attribute using ddeeccllaarree --ii is assigned a value. A null value evaluates - to 0. A shell variable need not have its integer attribute turned on + to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on to be used in an expression. Constants with a leading 0 are interpreted as octal numbers. A leading - 0x or 0X denotes hexadecimal. Otherwise, numbers take the form - [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 - representing the arithmetic base, and _n is a number in that base. If - _b_a_s_e_# is omitted, then base 10 is used. The digits greater than 9 are - represented by the lowercase letters, the uppercase letters, @, and _, - in that order. If _b_a_s_e is less than or equal to 36, lowercase and - uppercase letters may be used interchangeably to represent numbers + 0x or 0X denotes hexadecimal. Otherwise, numbers take the form + [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 + representing the arithmetic base, and _n is a number in that base. If + _b_a_s_e_# is omitted, then base 10 is used. The digits greater than 9 are + represented by the lowercase letters, the uppercase letters, @, and _, + in that order. If _b_a_s_e is less than or equal to 36, lowercase and + uppercase letters may be used interchangeably to represent numbers between 10 and 35. - Operators are evaluated in order of precedence. Sub-expressions in - parentheses are evaluated first and may override the precedence rules + Operators are evaluated in order of precedence. Sub-expressions in + parentheses are evaluated first and may override the precedence rules above. CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS - Conditional expressions are used by the [[[[ compound command and the - tteesstt and [[ builtin commands to test file attributes and perform string - and arithmetic comparisons. Expressions are formed from the following - unary or binary primaries. If any _f_i_l_e argument to one of the pri- + Conditional expressions are used by the [[[[ compound command and the + tteesstt and [[ builtin commands to test file attributes and perform string + and arithmetic comparisons. Expressions are formed from the following + unary or binary primaries. If any _f_i_l_e argument to one of the pri- maries is of the form _/_d_e_v_/_f_d_/_n, then file descriptor _n is checked. If - the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, - _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, + the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, + _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, is checked. Unless otherwise specified, primaries that operate on files follow sym- bolic links and operate on the target of the link, rather than the link itself. - When used with [[[[, The << and >> operators sort lexicographically using + When used with [[[[, The << and >> operators sort lexicographically using the current locale. --aa _f_i_l_e @@ -2219,27 +2220,27 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS --LL _f_i_l_e True if _f_i_l_e exists and is a symbolic link. --NN _f_i_l_e - True if _f_i_l_e exists and has been modified since it was last + True if _f_i_l_e exists and has been modified since it was last read. --OO _f_i_l_e True if _f_i_l_e exists and is owned by the effective user id. --SS _f_i_l_e True if _f_i_l_e exists and is a socket. _f_i_l_e_1 --eeff _f_i_l_e_2 - True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num- + True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num- bers. _f_i_l_e_1 -nntt _f_i_l_e_2 - True if _f_i_l_e_1 is newer (according to modification date) than + True if _f_i_l_e_1 is newer (according to modification date) than _f_i_l_e_2, or if _f_i_l_e_1 exists and _f_i_l_e_2 does not. _f_i_l_e_1 -oott _f_i_l_e_2 - True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1 + True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1 does not. --oo _o_p_t_n_a_m_e - True if the shell option _o_p_t_n_a_m_e is enabled. See the list of - options under the description of the --oo option to the sseett + True if the shell option _o_p_t_n_a_m_e is enabled. See the list of + options under the description of the --oo option to the sseett builtin below. --vv _v_a_r_n_a_m_e - True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a + True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a value). --zz _s_t_r_i_n_g True if the length of _s_t_r_i_n_g is zero. @@ -2249,7 +2250,7 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS _s_t_r_i_n_g_1 ==== _s_t_r_i_n_g_2 _s_t_r_i_n_g_1 == _s_t_r_i_n_g_2 - True if the strings are equal. == should be used with the tteesstt + True if the strings are equal. == should be used with the tteesstt command for POSIX conformance. _s_t_r_i_n_g_1 !!== _s_t_r_i_n_g_2 @@ -2262,107 +2263,107 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS True if _s_t_r_i_n_g_1 sorts after _s_t_r_i_n_g_2 lexicographically. _a_r_g_1 OOPP _a_r_g_2 - OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic - binary operators return true if _a_r_g_1 is equal to, not equal to, - less than, less than or equal to, greater than, or greater than - or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive + OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic + binary operators return true if _a_r_g_1 is equal to, not equal to, + less than, less than or equal to, greater than, or greater than + or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive or negative integers. SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN - When a simple command is executed, the shell performs the following + When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right. - 1. The words that the parser has marked as variable assignments - (those preceding the command name) and redirections are saved + 1. The words that the parser has marked as variable assignments + (those preceding the command name) and redirections are saved for later processing. - 2. The words that are not variable assignments or redirections are - expanded. If any words remain after expansion, the first word - is taken to be the name of the command and the remaining words + 2. The words that are not variable assignments or redirections are + expanded. If any words remain after expansion, the first word + is taken to be the name of the command and the remaining words are the arguments. 3. Redirections are performed as described above under RREEDDIIRREECCTTIIOONN. 4. The text after the == in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic - expansion, and quote removal before being assigned to the vari- + expansion, and quote removal before being assigned to the vari- able. If no command name results, the variable assignments affect the current - shell environment. Otherwise, the variables are added to the environ- - ment of the executed command and do not affect the current shell envi- - ronment. If any of the assignments attempts to assign a value to a - readonly variable, an error occurs, and the command exits with a non- + shell environment. Otherwise, the variables are added to the environ- + ment of the executed command and do not affect the current shell envi- + ronment. If any of the assignments attempts to assign a value to a + readonly variable, an error occurs, and the command exits with a non- zero status. - If no command name results, redirections are performed, but do not - affect the current shell environment. A redirection error causes the + If no command name results, redirections are performed, but do not + affect the current shell environment. A redirection error causes the command to exit with a non-zero status. - If there is a command name left after expansion, execution proceeds as - described below. Otherwise, the command exits. If one of the expan- - sions contained a command substitution, the exit status of the command - is the exit status of the last command substitution performed. If + If there is a command name left after expansion, execution proceeds as + described below. Otherwise, the command exits. If one of the expan- + sions contained a command substitution, the exit status of the command + is the exit status of the last command substitution performed. If there were no command substitutions, the command exits with a status of zero. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN - After a command has been split into words, if it results in a simple - command and an optional list of arguments, the following actions are + After a command has been split into words, if it results in a simple + command and an optional list of arguments, the following actions are taken. - If the command name contains no slashes, the shell attempts to locate - it. If there exists a shell function by that name, that function is - invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a - function, the shell searches for it in the list of shell builtins. If + If the command name contains no slashes, the shell attempts to locate + it. If there exists a shell function by that name, that function is + invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a + function, the shell searches for it in the list of shell builtins. If a match is found, that builtin is invoked. - If the name is neither a shell function nor a builtin, and contains no - slashes, bbaasshh searches each element of the PPAATTHH for a directory con- - taining an executable file by that name. BBaasshh uses a hash table to - remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is - performed only if the command is not found in the hash table. If the + If the name is neither a shell function nor a builtin, and contains no + slashes, bbaasshh searches each element of the PPAATTHH for a directory con- + taining an executable file by that name. BBaasshh uses a hash table to + remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is + performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. If that function exists, it is invoked - with the original command and the original command's arguments as its - arguments, and the function's exit status becomes the exit status of - the shell. If that function is not defined, the shell prints an error + with the original command and the original command's arguments as its + arguments, and the function's exit status becomes the exit status of + the shell. If that function is not defined, the shell prints an error message and returns an exit status of 127. - If the search is successful, or if the command name contains one or + If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execu- tion environment. Argument 0 is set to the name given, and the remain- ing arguments to the command are set to the arguments given, if any. - If this execution fails because the file is not in executable format, - and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a - file containing shell commands. A subshell is spawned to execute it. - This subshell reinitializes itself, so that the effect is as if a new - shell had been invoked to handle the script, with the exception that - the locations of commands remembered by the parent (see hhaasshh below + If this execution fails because the file is not in executable format, + and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a + file containing shell commands. A subshell is spawned to execute it. + This subshell reinitializes itself, so that the effect is as if a new + shell had been invoked to handle the script, with the exception that + the locations of commands remembered by the parent (see hhaasshh below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child. - If the program is a file beginning with ##!!, the remainder of the first - line specifies an interpreter for the program. The shell executes the + If the program is a file beginning with ##!!, the remainder of the first + line specifies an interpreter for the program. The shell executes the specified interpreter on operating systems that do not handle this exe- cutable format themselves. The arguments to the interpreter consist of - a single optional argument following the interpreter name on the first - line of the program, followed by the name of the program, followed by + a single optional argument following the interpreter name on the first + line of the program, followed by the name of the program, followed by the command arguments, if any. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- + The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- ing: - +o open files inherited by the shell at invocation, as modified by + +o open files inherited by the shell at invocation, as modified by redirections supplied to the eexxeecc builtin - +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or + +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or inherited by the shell at invocation - +o the file creation mode mask as set by uummaasskk or inherited from + +o the file creation mode mask as set by uummaasskk or inherited from the shell's parent +o current traps set by ttrraapp @@ -2370,242 +2371,242 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN +o shell parameters that are set by variable assignment or with sseett or inherited from the shell's parent in the environment - +o shell functions defined during execution or inherited from the + +o shell functions defined during execution or inherited from the shell's parent in the environment - +o options enabled at invocation (either by default or with com- + +o options enabled at invocation (either by default or with com- mand-line arguments) or by sseett +o options enabled by sshhoopptt +o shell aliases defined with aalliiaass - +o various process IDs, including those of background jobs, the + +o various process IDs, including those of background jobs, the value of $$$$, and the value of PPPPIIDD - When a simple command other than a builtin or shell function is to be - executed, it is invoked in a separate execution environment that con- - sists of the following. Unless otherwise noted, the values are inher- + When a simple command other than a builtin or shell function is to be + executed, it is invoked in a separate execution environment that con- + sists of the following. Unless otherwise noted, the values are inher- ited from the shell. - +o the shell's open files, plus any modifications and additions + +o the shell's open files, plus any modifications and additions specified by redirections to the command +o the current working directory +o the file creation mode mask - +o shell variables and functions marked for export, along with + +o shell variables and functions marked for export, along with variables exported for the command, passed in the environment +o traps caught by the shell are reset to the values inherited from the shell's parent, and traps ignored by the shell are ignored - A command invoked in this separate environment cannot affect the + A command invoked in this separate environment cannot affect the shell's execution environment. - Command substitution, commands grouped with parentheses, and asynchro- + Command substitution, commands grouped with parentheses, and asynchro- nous commands are invoked in a subshell environment that is a duplicate - of the shell environment, except that traps caught by the shell are + of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invoca- tion. Builtin commands that are invoked as part of a pipeline are also executed in a subshell environment. Changes made to the subshell envi- ronment cannot affect the shell's execution environment. Subshells spawned to execute command substitutions inherit the value of - the --ee option from the parent shell. When not in posix mode, Bash + the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh clears the --ee option in such subshells. - If a command is followed by a && and job control is not active, the - default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. - Otherwise, the invoked command inherits the file descriptors of the + If a command is followed by a && and job control is not active, the + default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. + Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. EENNVVIIRROONNMMEENNTT - When a program is invoked it is given an array of strings called the + When a program is invoked it is given an array of strings called the _e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e pairs, of the form _n_a_m_e=_v_a_l_u_e. - The shell provides several ways to manipulate the environment. On + The shell provides several ways to manipulate the environment. On invocation, the shell scans its own environment and creates a parameter - for each name found, automatically marking it for _e_x_p_o_r_t to child pro- - cesses. Executed commands inherit the environment. The eexxppoorrtt and - ddeeccllaarree --xx commands allow parameters and functions to be added to and + for each name found, automatically marking it for _e_x_p_o_r_t to child pro- + cesses. Executed commands inherit the environment. The eexxppoorrtt and + ddeeccllaarree --xx commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the envi- - ronment is modified, the new value becomes part of the environment, - replacing the old. The environment inherited by any executed command - consists of the shell's initial environment, whose values may be modi- - fied in the shell, less any pairs removed by the uunnsseett command, plus + ronment is modified, the new value becomes part of the environment, + replacing the old. The environment inherited by any executed command + consists of the shell's initial environment, whose values may be modi- + fied in the shell, less any pairs removed by the uunnsseett command, plus any additions via the eexxppoorrtt and ddeeccllaarree --xx commands. - The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented - temporarily by prefixing it with parameter assignments, as described + The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented + temporarily by prefixing it with parameter assignments, as described above in PPAARRAAMMEETTEERRSS. These assignment statements affect only the envi- ronment seen by that command. - If the --kk option is set (see the sseett builtin command below), then _a_l_l - parameter assignments are placed in the environment for a command, not + If the --kk option is set (see the sseett builtin command below), then _a_l_l + parameter assignments are placed in the environment for a command, not just those that precede the command name. - When bbaasshh invokes an external command, the variable __ is set to the - full file name of the command and passed to that command in its envi- + When bbaasshh invokes an external command, the variable __ is set to the + full file name of the command and passed to that command in its envi- ronment. EEXXIITT SSTTAATTUUSS - The exit status of an executed command is the value returned by the + The exit status of an executed command is the value returned by the _w_a_i_t_p_i_d system call or equivalent function. Exit statuses fall between - 0 and 255, though, as explained below, the shell may use values above + 0 and 255, though, as explained below, the shell may use values above 125 specially. Exit statuses from shell builtins and compound commands - are also limited to this range. Under certain circumstances, the shell + are also limited to this range. Under certain circumstances, the shell will use special values to indicate specific failure modes. For the shell's purposes, a command which exits with a zero exit status - has succeeded. An exit status of zero indicates success. A non-zero - exit status indicates failure. When a command terminates on a fatal + has succeeded. An exit status of zero indicates success. A non-zero + exit status indicates failure. When a command terminates on a fatal signal _N, bbaasshh uses the value of 128+_N as the exit status. - If a command is not found, the child process created to execute it - returns a status of 127. If a command is found but is not executable, + If a command is not found, the child process created to execute it + returns a status of 127. If a command is found but is not executable, the return status is 126. If a command fails because of an error during expansion or redirection, the exit status is greater than zero. - Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and - non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins + Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and + non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins return an exit status of 2 to indicate incorrect usage. - BBaasshh itself returns the exit status of the last command executed, - unless a syntax error occurs, in which case it exits with a non-zero + BBaasshh itself returns the exit status of the last command executed, + unless a syntax error occurs, in which case it exits with a non-zero value. See also the eexxiitt builtin command below. SSIIGGNNAALLSS - When bbaasshh is interactive, in the absence of any traps, it ignores + When bbaasshh is interactive, in the absence of any traps, it ignores SSIIGGTTEERRMM (so that kkiillll 00 does not kill an interactive shell), and SSIIGGIINNTT - is caught and handled (so that the wwaaiitt builtin is interruptible). In - all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh + is caught and handled (so that the wwaaiitt builtin is interruptible). In + all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. Non-builtin commands run by bbaasshh have signal handlers set to the values - inherited by the shell from its parent. When job control is not in - effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to - these inherited handlers. Commands run as a result of command substi- + inherited by the shell from its parent. When job control is not in + effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to + these inherited handlers. Commands run as a result of command substi- tution ignore the keyboard-generated job control signals SSIIGGTTTTIINN, SSIIGGTT-- TTOOUU, and SSIIGGTTSSTTPP. - The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, - an interactive shell resends the SSIIGGHHUUPP to all jobs, running or + The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, + an interactive shell resends the SSIIGGHHUUPP to all jobs, running or stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that they receive the - SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular - job, it should be removed from the jobs table with the ddiissoowwnn builtin - (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP + SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular + job, it should be removed from the jobs table with the ddiissoowwnn builtin + (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP using ddiissoowwnn --hh. - If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a + If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a SSIIGGHHUUPP to all jobs when an interactive login shell exits. - If bbaasshh is waiting for a command to complete and receives a signal for + If bbaasshh is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the com- - mand completes. When bbaasshh is waiting for an asynchronous command via - the wwaaiitt builtin, the reception of a signal for which a trap has been + mand completes. When bbaasshh is waiting for an asynchronous command via + the wwaaiitt builtin, the reception of a signal for which a trap has been set will cause the wwaaiitt builtin to return immediately with an exit sta- tus greater than 128, immediately after which the trap is executed. JJOOBB CCOONNTTRROOLL - _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the + _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the execution of processes and continue (_r_e_s_u_m_e) their execution at a later - point. A user typically employs this facility via an interactive - interface supplied jointly by the operating system kernel's terminal + point. A user typically employs this facility via an interactive + interface supplied jointly by the operating system kernel's terminal driver and bbaasshh. - The shell associates a _j_o_b with each pipeline. It keeps a table of - currently executing jobs, which may be listed with the jjoobbss command. - When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a + The shell associates a _j_o_b with each pipeline. It keeps a table of + currently executing jobs, which may be listed with the jjoobbss command. + When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a line that looks like: [1] 25647 indicating that this job is job number 1 and that the process ID of the last process in the pipeline associated with this job is 25647. All of - the processes in a single pipeline are members of the same job. BBaasshh + the processes in a single pipeline are members of the same job. BBaasshh uses the _j_o_b abstraction as the basis for job control. - To facilitate the implementation of the user interface to job control, + To facilitate the implementation of the user interface to job control, the operating system maintains the notion of a _c_u_r_r_e_n_t _t_e_r_m_i_n_a_l _p_r_o_c_e_s_s _g_r_o_u_p _I_D. Members of this process group (processes whose process group ID is equal to the current terminal process group ID) receive keyboard- - generated signals such as SSIIGGIINNTT. These processes are said to be in - the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID + generated signals such as SSIIGGIINNTT. These processes are said to be in + the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID differs from the terminal's; such processes are immune to keyboard-gen- erated signals. Only foreground processes are allowed to read from or, - if the user so specifies with stty tostop, write to the terminal. - Background processes which attempt to read from (write to when stty - tostop is in effect) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal - by the kernel's terminal driver, which, unless caught, suspends the + if the user so specifies with stty tostop, write to the terminal. + Background processes which attempt to read from (write to when stty + tostop is in effect) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal + by the kernel's terminal driver, which, unless caught, suspends the process. - If the operating system on which bbaasshh is running supports job control, + If the operating system on which bbaasshh is running supports job control, bbaasshh contains facilities to use it. Typing the _s_u_s_p_e_n_d character (typ- ically ^^ZZ, Control-Z) while a process is running causes that process to - be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d - character (typically ^^YY, Control-Y) causes the process to be stopped - when it attempts to read input from the terminal, and control to be - returned to bbaasshh. The user may then manipulate the state of this job, - using the bbgg command to continue it in the background, the ffgg command + be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d + character (typically ^^YY, Control-Y) causes the process to be stopped + when it attempts to read input from the terminal, and control to be + returned to bbaasshh. The user may then manipulate the state of this job, + using the bbgg command to continue it in the background, the ffgg command to continue it in the foreground, or the kkiillll command to kill it. A ^^ZZ takes effect immediately, and has the additional side effect of causing pending output and typeahead to be discarded. There are a number of ways to refer to a job in the shell. The charac- - ter %% introduces a job specification (_j_o_b_s_p_e_c). Job number _n may be + ter %% introduces a job specification (_j_o_b_s_p_e_c). Job number _n may be referred to as %%nn. A job may also be referred to using a prefix of the name used to start it, or using a substring that appears in its command - line. For example, %%ccee refers to a stopped ccee job. If a prefix - matches more than one job, bbaasshh reports an error. Using %%??ccee, on the - other hand, refers to any job containing the string ccee in its command - line. If the substring matches more than one job, bbaasshh reports an - error. The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_- - _r_e_n_t _j_o_b, which is the last job stopped while it was in the foreground + line. For example, %%ccee refers to a stopped ccee job. If a prefix + matches more than one job, bbaasshh reports an error. Using %%??ccee, on the + other hand, refers to any job containing the string ccee in its command + line. If the substring matches more than one job, bbaasshh reports an + error. The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_- + _r_e_n_t _j_o_b, which is the last job stopped while it was in the foreground or started in the background. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using %%--. If there is only a single job, %%++ and %%-- can both be used to refer - to that job. In output pertaining to jobs (e.g., the output of the + to that job. In output pertaining to jobs (e.g., the output of the jjoobbss command), the current job is always flagged with a ++, and the pre- - vious job with a --. A single % (with no accompanying job specifica- + vious job with a --. A single % (with no accompanying job specifica- tion) also refers to the current job. - Simply naming a job can be used to bring it into the foreground: %%11 is - a synonym for ````ffgg %%11'''', bringing job 1 from the background into the - foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, + Simply naming a job can be used to bring it into the foreground: %%11 is + a synonym for ````ffgg %%11'''', bringing job 1 from the background into the + foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, equivalent to ````bbgg %%11''''. - The shell learns immediately whenever a job changes state. Normally, + The shell learns immediately whenever a job changes state. Normally, bbaasshh waits until it is about to print a prompt before reporting changes - in a job's status so as to not interrupt any other output. If the --bb + in a job's status so as to not interrupt any other output. If the --bb option to the sseett builtin command is enabled, bbaasshh reports such changes - immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that + immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that exits. - If an attempt to exit bbaasshh is made while jobs are stopped (or, if the - cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- + If an attempt to exit bbaasshh is made while jobs are stopped (or, if the + cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- ning), the shell prints a warning message, and, if the cchheecckkjjoobbss option - is enabled, lists the jobs and their statuses. The jjoobbss command may - then be used to inspect their status. If a second attempt to exit is - made without an intervening command, the shell does not print another + is enabled, lists the jobs and their statuses. The jjoobbss command may + then be used to inspect their status. If a second attempt to exit is + made without an intervening command, the shell does not print another warning, and any stopped jobs are terminated. PPRROOMMPPTTIINNGG When executing interactively, bbaasshh displays the primary prompt PPSS11 when - it is ready to read a command, and the secondary prompt PPSS22 when it - needs more input to complete a command. BBaasshh allows these prompt - strings to be customized by inserting a number of backslash-escaped + it is ready to read a command, and the secondary prompt PPSS22 when it + needs more input to complete a command. BBaasshh allows these prompt + strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows: \\aa an ASCII bell character (07) - \\dd the date in "Weekday Month Date" format (e.g., "Tue May + \\dd the date in "Weekday Month Date" format (e.g., "Tue May 26") \\DD{{_f_o_r_m_a_t}} - the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is - inserted into the prompt string; an empty _f_o_r_m_a_t results + the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is + inserted into the prompt string; an empty _f_o_r_m_a_t results in a locale-specific time representation. The braces are required \\ee an ASCII escape character (033) @@ -2615,7 +2616,7 @@ PPRROOMMPPTTIINNGG \\ll the basename of the shell's terminal device name \\nn newline \\rr carriage return - \\ss the name of the shell, the basename of $$00 (the portion + \\ss the name of the shell, the basename of $$00 (the portion following the final slash) \\tt the current time in 24-hour HH:MM:SS format \\TT the current time in 12-hour HH:MM:SS format @@ -2624,8 +2625,8 @@ PPRROOMMPPTTIINNGG \\uu the username of the current user \\vv the version of bbaasshh (e.g., 2.00) \\VV the release of bbaasshh, version + patch level (e.g., 2.00.0) - \\ww the current working directory, with $$HHOOMMEE abbreviated - with a tilde (uses the value of the PPRROOMMPPTT__DDIIRRTTRRIIMM vari- + \\ww the current working directory, with $$HHOOMMEE abbreviated + with a tilde (uses the value of the PPRROOMMPPTT__DDIIRRTTRRIIMM vari- able) \\WW the basename of the current working directory, with $$HHOOMMEE abbreviated with a tilde @@ -2634,66 +2635,66 @@ PPRROOMMPPTTIINNGG \\$$ if the effective UID is 0, a ##, otherwise a $$ \\_n_n_n the character corresponding to the octal number _n_n_n \\\\ a backslash - \\[[ begin a sequence of non-printing characters, which could - be used to embed a terminal control sequence into the + \\[[ begin a sequence of non-printing characters, which could + be used to embed a terminal control sequence into the prompt \\]] end a sequence of non-printing characters - The command number and the history number are usually different: the - history number of a command is its position in the history list, which - may include commands restored from the history file (see HHIISSTTOORRYY - below), while the command number is the position in the sequence of - commands executed during the current shell session. After the string - is decoded, it is expanded via parameter expansion, command substitu- - tion, arithmetic expansion, and quote removal, subject to the value of - the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command + The command number and the history number are usually different: the + history number of a command is its position in the history list, which + may include commands restored from the history file (see HHIISSTTOORRYY + below), while the command number is the position in the sequence of + commands executed during the current shell session. After the string + is decoded, it is expanded via parameter expansion, command substitu- + tion, arithmetic expansion, and quote removal, subject to the value of + the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). RREEAADDLLIINNEE - This is the library that handles reading input when using an interac- + This is the library that handles reading input when using an interac- tive shell, unless the ----nnooeeddiittiinngg option is given at shell invocation. Line editing is also used when using the --ee option to the rreeaadd builtin. - By default, the line editing commands are similar to those of emacs. A + By default, the line editing commands are similar to those of Emacs. A vi-style line editing interface is also available. Line editing can be - enabled at any time using the --oo eemmaaccss or --oo vvii options to the sseett - builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). To turn off line editing - after the shell is running, use the ++oo eemmaaccss or ++oo vvii options to the + enabled at any time using the --oo eemmaaccss or --oo vvii options to the sseett + builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). To turn off line editing + after the shell is running, use the ++oo eemmaaccss or ++oo vvii options to the sseett builtin. RReeaaddlliinnee NNoottaattiioonn - In this section, the emacs-style notation is used to denote keystrokes. - Control keys are denoted by C-_k_e_y, e.g., C-n means Control-N. Simi- - larly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x means Meta-X. (On key- - boards without a _m_e_t_a key, M-_x means ESC _x, i.e., press the Escape key + In this section, the Emacs-style notation is used to denote keystrokes. + Control keys are denoted by C-_k_e_y, e.g., C-n means Control-N. Simi- + larly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x means Meta-X. (On key- + boards without a _m_e_t_a key, M-_x means ESC _x, i.e., press the Escape key then the _x key. This makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x - means ESC-Control-_x, or press the Escape key then hold the Control key + means ESC-Control-_x, or press the Escape key then hold the Control key while pressing the _x key.) Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which normally act as - a repeat count. Sometimes, however, it is the sign of the argument - that is significant. Passing a negative argument to a command that - acts in the forward direction (e.g., kkiillll--lliinnee) causes that command to - act in a backward direction. Commands whose behavior with arguments + a repeat count. Sometimes, however, it is the sign of the argument + that is significant. Passing a negative argument to a command that + acts in the forward direction (e.g., kkiillll--lliinnee) causes that command to + act in a backward direction. Commands whose behavior with arguments deviates from this are noted below. - When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved + When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved for possible future retrieval (_y_a_n_k_i_n_g). The killed text is saved in a _k_i_l_l _r_i_n_g. Consecutive kills cause the text to be accumulated into one unit, which can be yanked all at once. Commands which do not kill text separate the chunks of text on the kill ring. RReeaaddlliinnee IInniittiiaalliizzaattiioonn - Readline is customized by putting commands in an initialization file - (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of - the IINNPPUUTTRRCC variable. If that variable is unset, the default is - _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library starts up, + Readline is customized by putting commands in an initialization file + (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of + the IINNPPUUTTRRCC variable. If that variable is unset, the default is + _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library starts up, the initialization file is read, and the key bindings and variables are - set. There are only a few basic constructs allowed in the readline - initialization file. Blank lines are ignored. Lines beginning with a - ## are comments. Lines beginning with a $$ indicate conditional con- + set. There are only a few basic constructs allowed in the readline + initialization file. Blank lines are ignored. Lines beginning with a + ## are comments. Lines beginning with a $$ indicate conditional con- structs. Other lines denote key bindings and variable settings. - The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other + The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other programs that use this library may add their own commands and bindings. For example, placing @@ -2701,19 +2702,19 @@ RREEAADDLLIINNEE M-Control-u: universal-argument or C-Meta-u: universal-argument - into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_- + into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_- _s_a_l_-_a_r_g_u_m_e_n_t. - The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L, + The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L, _E_S_C, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _S_P_C, _S_P_A_C_E, and _T_A_B. - In addition to command names, readline allows keys to be bound to a + In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a _m_a_c_r_o). RReeaaddlliinnee KKeeyy BBiinnddiinnggss - The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. - All that is required is the name of the command or the text of a macro - and a key sequence to which it should be bound. The name may be speci- + The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. + All that is required is the name of the command or the text of a macro + and a key sequence to which it should be bound. The name may be speci- fied in one of two ways: as a symbolic key name, possibly with _M_e_t_a_- or _C_o_n_t_r_o_l_- prefixes, or as a key sequence. @@ -2724,15 +2725,15 @@ RREEAADDLLIINNEE Meta-Rubout: backward-kill-word Control-o: "> output" - In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, - _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to - run the macro expressed on the right hand side (that is, to insert the + In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, + _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to + run the macro expressed on the right hand side (that is, to insert the text ``> output'' into the line). - In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs - from kkeeyynnaammee above in that strings denoting an entire key sequence may - be specified by placing the sequence within double quotes. Some GNU - Emacs style key escapes can be used, as in the following example, but + In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs + from kkeeyynnaammee above in that strings denoting an entire key sequence may + be specified by placing the sequence within double quotes. Some GNU + Emacs style key escapes can be used, as in the following example, but the symbolic character names are not recognized. "\C-u": universal-argument @@ -2740,7 +2741,7 @@ RREEAADDLLIINNEE "\e[11~": "Function Key 1" In this example, _C_-_u is again bound to the function uunniivveerrssaall--aarrgguummeenntt. - _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is + _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is bound to insert the text ``Function Key 1''. The full set of GNU Emacs style escape sequences is @@ -2751,7 +2752,7 @@ RREEAADDLLIINNEE \\"" literal " \\'' literal ' - In addition to the GNU Emacs style escape sequences, a second set of + In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: \\aa alert (bell) \\bb backspace @@ -2761,20 +2762,20 @@ RREEAADDLLIINNEE \\rr carriage return \\tt horizontal tab \\vv vertical tab - \\_n_n_n the eight-bit character whose value is the octal value + \\_n_n_n the eight-bit character whose value is the octal value _n_n_n (one to three 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) When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a func- - tion name. In the macro body, the backslash escapes described above - are expanded. Backslash will quote any other character in the macro + tion name. In the macro body, the backslash escapes described above + are expanded. Backslash will quote any other character in the macro text, including " and '. - BBaasshh allows the current readline key bindings to be displayed or modi- - fied with the bbiinndd builtin command. The editing mode may be switched - during interactive use by using the --oo option to the sseett builtin com- + BBaasshh allows the current readline key bindings to be displayed or modi- + fied with the bbiinndd builtin command. The editing mode may be switched + during interactive use by using the --oo option to the sseett builtin com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). RReeaaddlliinnee VVaarriiaabblleess @@ -2784,187 +2785,191 @@ RREEAADDLLIINNEE sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e - Except where noted, readline variables can take the values OOnn or OOffff - (without regard to case). Unrecognized variable names are ignored. - When a variable value is read, empty or null values, "on" (case-insen- + Except where noted, readline variables can take the values OOnn or OOffff + (without regard to case). Unrecognized variable names are ignored. + When a variable value is read, empty or null values, "on" (case-insen- sitive), and "1" are equivalent to OOnn. All other values are equivalent to OOffff. The variables and their default values are: bbeellll--ssttyyllee ((aauuddiibbllee)) - Controls what happens when readline wants to ring the terminal + Controls what happens when readline wants to ring the terminal bell. If set to nnoonnee, readline never rings the bell. If set to - vviissiibbllee, readline uses a visible bell if one is available. If + vviissiibbllee, readline uses a visible bell if one is available. If set to aauuddiibbllee, readline attempts to ring the terminal's bell. bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn)) - If set to OOnn, readline attempts to bind the control characters + If set to OOnn, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their read- line equivalents. ccoommmmeenntt--bbeeggiinn ((````##'''')) - The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt + The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt command is executed. This command is bound to MM--## in emacs mode and to ## in vi command mode. ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) If set to OOnn, readline performs filename matching and completion in a case-insensitive fashion. ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00)) - The length in characters of the common prefix of a list of pos- - sible completions that is displayed without modification. When - set to a value greater than zero, common prefixes longer than - this value are replaced with an ellipsis when displaying possi- + The length in characters of the common prefix of a list of pos- + sible completions that is displayed without modification. When + set to a value greater than zero, common prefixes longer than + this value are replaced with an ellipsis when displaying possi- ble completions. ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000)) - This determines when the user is queried about viewing the num- - ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- - ttiioonnss command. It may be set to any integer value greater than - or equal to zero. If the number of possible completions is + This determines when the user is queried about viewing the num- + ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- + ttiioonnss command. It may be set to any integer value greater than + or equal to zero. If the number of possible completions is greater than or equal to the value of this variable, the user is - asked whether or not he wishes to view them; otherwise they are + asked whether or not he wishes to view them; otherwise they are simply listed on the terminal. ccoonnvveerrtt--mmeettaa ((OOnn)) - If set to OOnn, readline will convert characters with the eighth + If set to OOnn, readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and - prefixing an escape character (in effect, using escape as the + prefixing an escape character (in effect, using escape as the _m_e_t_a _p_r_e_f_i_x). ddiissaabbllee--ccoommpplleettiioonn ((OOffff)) If set to OOnn, readline will inhibit word completion. Completion - characters will be inserted into the line as if they had been + characters will be inserted into the line as if they had been mapped to sseellff--iinnsseerrtt. eeddiittiinngg--mmooddee ((eemmaaccss)) Controls whether readline begins with a set of key bindings sim- - ilar to _e_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can be set to either eemmaaccss or + ilar to _E_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can be set to either eemmaaccss or vvii. eecchhoo--ccoonnttrrooll--cchhaarraacctteerrss ((OOnn)) - When set to OOnn, on operating systems that indicate they support + When set to OOnn, on operating systems that indicate they support it, readline echoes a character corresponding to a signal gener- ated from the keyboard. eennaabbllee--kkeeyyppaadd ((OOffff)) When set to OOnn, readline will try to enable the application key- - pad when it is called. Some systems need this to enable the + pad when it is called. Some systems need this to enable the arrow keys. eennaabbllee--mmeettaa--kkeeyy ((OOnn)) - When set to OOnn, readline will try to enable any meta modifier - key the terminal claims to support when it is called. On many + When set to OOnn, readline will try to enable any meta modifier + key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. eexxppaanndd--ttiillddee ((OOffff)) - If set to oonn, tilde expansion is performed when readline + If set to OOnn, tilde expansion is performed when readline attempts word completion. hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff)) - If set to oonn, the history code attempts to place point at the - same location on each history line retrieved with pprreevviioouuss--hhiiss-- + If set to OOnn, the history code attempts to place point at the + same location on each history line retrieved with pprreevviioouuss--hhiiss-- ttoorryy or nneexxtt--hhiissttoorryy. hhiissttoorryy--ssiizzee ((00)) - Set the maximum number of history entries saved in the history + Set the maximum number of history entries saved in the history list. If set to zero, the number of entries in the history list is not limited. hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff)) - When set to OOnn, makes readline use a single line for display, + When set to OOnn, makes readline use a single line for display, scrolling the input horizontally on a single screen line when it - becomes longer than the screen width rather than wrapping to a + becomes longer than the screen width rather than wrapping to a new line. iinnppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will enable eight-bit input (that is, it - will not strip the high bit from the characters it reads), + If set to OOnn, readline will enable eight-bit input (that is, it + will not strip the high bit from the characters it reads), regardless of what the terminal claims it can support. The name mmeettaa--ffllaagg is a synonym for this variable. iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[CC--JJ'''')) - The string of characters that should terminate an incremental - search without subsequently executing the character as a com- - mand. If this variable has not been given a value, the charac- + The string of characters that should terminate an incremental + search without subsequently executing the character as a com- + mand. If this variable has not been given a value, the charac- ters _E_S_C and _C_-_J will terminate an incremental search. kkeeyymmaapp ((eemmaaccss)) - Set the current readline keymap. The set of valid keymap names - is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_- - _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is - equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the + Set the current readline keymap. The set of valid keymap names + is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_- + _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is + equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the value of eeddiittiinngg--mmooddee also affects the default keymap. mmaarrkk--ddiirreeccttoorriieess ((OOnn)) If set to OOnn, completed directory names have a slash appended. mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) - If set to OOnn, history lines that have been modified are dis- + If set to OOnn, history lines that have been modified are dis- played with a preceding asterisk (**). mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff)) If set to OOnn, completed names which are symbolic links to direc- - tories have a slash appended (subject to the value of + tories have a slash appended (subject to the value of mmaarrkk--ddiirreeccttoorriieess). mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) - This variable, when set to OOnn, causes readline to match files - whose names begin with a `.' (hidden files) when performing - filename completion. If set to OOffff, the leading `.' must be + This variable, when set to OOnn, causes readline to match files + whose names begin with a `.' (hidden files) when performing + filename completion. If set to OOffff, the leading `.' must be supplied by the user in the filename to be completed. + mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff)) + If set to OOnn, menu completion displays the common prefix of the + list of possible completions (which may be empty) before cycling + through the list. oouuttppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will display characters with the eighth + If set to OOnn, readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. ppaaggee--ccoommpplleettiioonnss ((OOnn)) - If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- + If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- play a screenful of possible completions at a time. pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) - If set to OOnn, readline will display completions with matches - sorted horizontally in alphabetical order, rather than down the + If set to OOnn, readline will display completions with matches + sorted horizontally in alphabetical order, rather than down the screen. rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) - If set to oonn, readline will undo all changes to history lines + If set to OOnn, readline will undo all changes to history lines before returning when aacccceepptt--lliinnee is executed. By default, his- - tory lines may be modified and retain individual undo lists + tory lines may be modified and retain individual undo lists across calls to rreeaaddlliinnee. sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff)) - This alters the default behavior of the completion functions. - If set to oonn, words which have more than one possible completion - cause the matches to be listed immediately instead of ringing + This alters the default behavior of the completion functions. + If set to OOnn, words which have more than one possible completion + cause the matches to be listed immediately instead of ringing the bell. sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) - This alters the default behavior of the completion functions in - a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to oonn, words - which have more than one possible completion without any possi- - ble partial completion (the possible completions don't share a - common prefix) cause the matches to be listed immediately + This alters the default behavior of the completion functions in + a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words + which have more than one possible completion without any possi- + ble partial completion (the possible completions don't share a + common prefix) cause the matches to be listed immediately instead of ringing the bell. sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) - If set to OOnn, this alters the default completion behavior when - inserting a single match into the line. It's only active when - performing completion in the middle of a word. If enabled, - readline does not insert characters from the completion that - match characters after point in the word being completed, so + If set to OOnn, this alters the default completion behavior when + inserting a single match into the line. It's only active when + performing completion in the middle of a word. If enabled, + readline does not insert characters from the completion that + match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. vviissiibbllee--ssttaattss ((OOffff)) - If set to OOnn, a character denoting a file's type as reported by - _s_t_a_t(2) is appended to the filename when listing possible com- + If set to OOnn, a character denoting a file's type as reported by + _s_t_a_t(2) is appended to the filename when listing possible com- pletions. RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss - Readline implements a facility similar in spirit to the conditional - compilation features of the C preprocessor which allows key bindings - and variable settings to be performed as the result of tests. There + Readline implements a facility similar in spirit to the conditional + compilation features of the C preprocessor which allows key bindings + and variable settings to be performed as the result of tests. There are four parser directives used. - $$iiff The $$iiff construct allows bindings to be made based on the edit- - ing mode, the terminal being used, or the application using - readline. The text of the test extends to the end of the line; + $$iiff The $$iiff construct allows bindings to be made based on the edit- + ing mode, the terminal being used, or the application using + readline. The text of the test extends to the end of the line; no characters are required to isolate it. - mmooddee The mmooddee== form of the $$iiff directive is used to test - whether readline is in emacs or vi mode. This may be - used in conjunction with the sseett kkeeyymmaapp command, for - instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and - _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in + mmooddee The mmooddee== form of the $$iiff directive is used to test + whether readline is in emacs or vi mode. This may be + used in conjunction with the sseett kkeeyymmaapp command, for + instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and + _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in emacs mode. - tteerrmm The tteerrmm== form may be used to include terminal-specific + tteerrmm The tteerrmm== form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the terminal's function keys. The word on the right side of the == is tested against the both full name of the ter- - minal and the portion of the terminal name before the - first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, + minal and the portion of the terminal name before the + first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, for instance. aapppplliiccaattiioonn The aapppplliiccaattiioonn construct is used to include application- specific settings. Each program using the readline - library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization + library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization file can test for a particular value. This could be used - to bind key sequences to functions useful for a specific - program. For instance, the following command adds a key - sequence that quotes the current or previous word in - Bash: + to bind key sequences to functions useful for a specific + program. For instance, the following command adds a key + sequence that quotes the current or previous word in + bbaasshh: $$iiff Bash # Quote the current or previous word @@ -2978,51 +2983,51 @@ RREEAADDLLIINNEE test fails. $$iinncclluuddee - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the follow- + This directive takes a single filename as an argument and reads + commands and bindings from that file. For example, the follow- ing directive would read _/_e_t_c_/_i_n_p_u_t_r_c: $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c SSeeaarrcchhiinngg - Readline provides commands for searching through the command history + Readline provides commands for searching through the command history (see HHIISSTTOORRYY below) for lines containing a specified string. There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l. - Incremental searches begin before the user has finished typing the - search string. As each character of the search string is typed, read- + Incremental searches begin before the user has finished typing the + search string. As each character of the search string is typed, read- line displays the next entry from the history matching the string typed - so far. An incremental search requires only as many characters as - needed to find the desired history entry. The characters present in - the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an + so far. An incremental search requires only as many characters as + needed to find the desired history entry. The characters present in + the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an incremental search. If that variable has not been assigned a value the - Escape and Control-J characters will terminate an incremental search. - Control-G will abort an incremental search and restore the original - line. When the search is terminated, the history entry containing the + Escape and Control-J characters will terminate an incremental search. + Control-G will abort an incremental search and restore the original + line. When the search is terminated, the history entry containing the search string becomes the current line. - To find other matching entries in the history list, type Control-S or - Control-R as appropriate. This will search backward or forward in the - history for the next entry matching the search string typed so far. - Any other key sequence bound to a readline command will terminate the - search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- + To find other matching entries in the history list, type Control-S or + Control-R as appropriate. This will search backward or forward in the + history for the next entry matching the search string typed so far. + Any other key sequence bound to a readline command will terminate the + search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- nate the search and accept the line, thereby executing the command from the history list. Readline remembers the last incremental search string. If two Control- - Rs are typed without any intervening characters defining a new search + Rs are typed without any intervening characters defining a new search string, any remembered search string is used. - Non-incremental searches read the entire search string before starting - to search for matching history lines. The search string may be typed + Non-incremental searches read the entire search string before starting + to search for matching history lines. The search string may be typed by the user or be part of the contents of the current line. RReeaaddlliinnee CCoommmmaanndd NNaammeess - The following is a list of the names of the commands and the default + The following is a list of the names of the commands and the default key sequences to which they are bound. Command names without an accom- panying key sequence are unbound by default. In the following descrip- - tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to - a cursor position saved by the sseett--mmaarrkk command. The text between the + tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to + a cursor position saved by the sseett--mmaarrkk command. The text between the point and mark is referred to as the _r_e_g_i_o_n. CCoommmmaannddss ffoorr MMoovviinngg @@ -3038,17 +3043,17 @@ RREEAADDLLIINNEE Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits). bbaacckkwwaarrdd--wwoorrdd ((MM--bb)) - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits). sshheellll--ffoorrwwaarrdd--wwoorrdd - Move forward to the end of the next word. Words are delimited + Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. sshheellll--bbaacckkwwaarrdd--wwoorrdd - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. cclleeaarr--ssccrreeeenn ((CC--ll)) - Clear the screen leaving the current line at the top of the - screen. With an argument, refresh the current line without + Clear the screen leaving the current line at the top of the + screen. With an argument, refresh the current line without clearing the screen. rreeddrraaww--ccuurrrreenntt--lliinnee Refresh the current line. @@ -3056,132 +3061,132 @@ RREEAADDLLIINNEE CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn)) Accept the line regardless of where the cursor is. If this line - is non-empty, add it to the history list according to the state - of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history + is non-empty, add it to the history list according to the state + of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history line, then restore the history line to its original state. pprreevviioouuss--hhiissttoorryy ((CC--pp)) Fetch the previous command from the history list, moving back in the list. nneexxtt--hhiissttoorryy ((CC--nn)) - Fetch the next command from the history list, moving forward in + Fetch the next command from the history list, moving forward in the list. bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<)) Move to the first line in the history. eenndd--ooff--hhiissttoorryy ((MM-->>)) - Move to the end of the input history, i.e., the line currently + Move to the end of the input history, i.e., the line currently being entered. rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr)) - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental + Search backward starting at the current line and moving `up' + through the history as necessary. This is an incremental search. ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss)) - Search forward starting at the current line and moving `down' - through the history as necessary. This is an incremental + Search forward starting at the current line and moving `down' + through the history as necessary. This is an incremental search. nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp)) Search backward through the history starting at the current line - using a non-incremental search for a string supplied by the + using a non-incremental search for a string supplied by the user. nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) - Search forward through the history using a non-incremental + Search forward through the history using a non-incremental search for a string supplied by the user. hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd - Search forward through the history for the string of characters - between the start of the current line and the point. This is a + Search forward through the history for the string of characters + between the start of the current line and the point. This is a non-incremental search. hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd Search backward through the history for the string of characters - between the start of the current line and the point. This is a + between the start of the current line and the point. This is a non-incremental search. yyaannkk--nntthh--aarrgg ((MM--CC--yy)) - Insert the first argument to the previous command (usually the + Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument _n, - insert the _nth word from the previous command (the words in the - previous command begin with word 0). A negative argument + insert the _nth word from the previous command (the words in the + previous command begin with word 0). A negative argument inserts the _nth word from the end of the previous command. Once - the argument _n is computed, the argument is extracted as if the + the argument _n is computed, the argument is extracted as if the "!_n" history expansion had been specified. yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__)) - Insert the last argument to the previous command (the last word - of the previous history entry). With an argument, behave - exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg - move back through the history list, inserting the last argument + Insert the last argument to the previous command (the last word + of the previous history entry). With an argument, behave + exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg + move back through the history list, inserting the last argument of each line in turn. The history expansion facilities are used - to extract the last argument, as if the "!$" history expansion + to extract the last argument, as if the "!$" history expansion had been specified. sshheellll--eexxppaanndd--lliinnee ((MM--CC--ee)) Expand the line as the shell does. This performs alias and his- tory expansion as well as all of the shell word expansions. See - HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. + HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^)) - Perform history expansion on the current line. See HHIISSTTOORRYY + Perform history expansion on the current line. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. mmaaggiicc--ssppaaccee - Perform history expansion on the current line and insert a + Perform history expansion on the current line and insert a space. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. aalliiaass--eexxppaanndd--lliinnee - Perform alias expansion on the current line. See AALLIIAASSEESS above + Perform alias expansion on the current line. See AALLIIAASSEESS above for a description of alias expansion. hhiissttoorryy--aanndd--aalliiaass--eexxppaanndd--lliinnee Perform history and alias expansion on the current line. iinnsseerrtt--llaasstt--aarrgguummeenntt ((MM--..,, MM--__)) A synonym for yyaannkk--llaasstt--aarrgg. ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo)) - Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any + Accept the current line for execution and fetch the next line + relative to the current line from the history for editing. Any argument is ignored. eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xxCC--ee)) - Invoke an editor on the current command line, and execute the - result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, + Invoke an editor on the current command line, and execute the + result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDDIITTOORR, and _e_m_a_c_s as the editor, in that order. CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt ddeelleettee--cchhaarr ((CC--dd)) - Delete the character at point. If point is at the beginning of - the line, there are no characters in the line, and the last + Delete the character at point. If point is at the beginning of + the line, there are no characters in the line, and the last character typed was not bound to ddeelleettee--cchhaarr, then return EEOOFF. bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) - Delete the character behind the cursor. When given a numeric + Delete the character behind the cursor. When given a numeric argument, save the deleted text on the kill ring. ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr - Delete the character under the cursor, unless the cursor is at + Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cur- sor is deleted. qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv)) - Add the next character typed to the line verbatim. This is how + Add the next character typed to the line verbatim. This is how to insert characters like CC--qq, for example. ttaabb--iinnsseerrtt ((CC--vv TTAABB)) Insert a tab character. sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......)) Insert the character typed. ttrraannssppoossee--cchhaarrss ((CC--tt)) - Drag the character before point forward over the character at - point, moving point forward as well. If point is at the end of - the line, then this transposes the two characters before point. + Drag the character before point forward over the character at + point, moving point forward as well. If point is at the end of + the line, then this transposes the two characters before point. Negative arguments have no effect. ttrraannssppoossee--wwoorrddss ((MM--tt)) - Drag the word before point past the word after point, moving - point over that word as well. If point is at the end of the + Drag the word before point past the word after point, moving + point over that word as well. If point is at the end of the line, this transposes the last two words on the line. uuppccaassee--wwoorrdd ((MM--uu)) - Uppercase the current (or following) word. With a negative + Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move point. ddoowwnnccaassee--wwoorrdd ((MM--ll)) - Lowercase the current (or following) word. With a negative + Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move point. ccaappiittaalliizzee--wwoorrdd ((MM--cc)) - Capitalize the current (or following) word. With a negative + Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move point. oovveerrwwrriittee--mmooddee - Toggle overwrite mode. With an explicit positive numeric argu- + Toggle overwrite mode. With an explicit positive numeric argu- ment, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects - only eemmaaccss mode; vvii mode does overwrite differently. Each call + only eemmaaccss mode; vvii mode does overwrite differently. Each call to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In overwrite mode, charac- - ters bound to sseellff--iinnsseerrtt replace the text at point rather than - pushing the text to the right. Characters bound to bbaacckk-- - wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a + ters bound to sseellff--iinnsseerrtt replace the text at point rather than + pushing the text to the right. Characters bound to bbaacckk-- + wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a space. By default, this command is unbound. KKiilllliinngg aanndd YYaannkkiinngg @@ -3190,31 +3195,31 @@ RREEAADDLLIINNEE bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt)) Kill backward to the beginning of the line. uunniixx--lliinnee--ddiissccaarrdd ((CC--uu)) - Kill backward from point to the beginning of the line. The + Kill backward from point to the beginning of the line. The killed text is saved on the kill-ring. kkiillll--wwhhoollee--lliinnee - Kill all characters on the current line, no matter where point + Kill all characters on the current line, no matter where point is. kkiillll--wwoorrdd ((MM--dd)) - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the + Kill from point to the end of the current word, or if between + words, to the end of the next word. Word boundaries are the same as those used by ffoorrwwaarrdd--wwoorrdd. bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) - Kill the word behind point. Word boundaries are the same as + Kill the word behind point. Word boundaries are the same as those used by bbaacckkwwaarrdd--wwoorrdd. sshheellll--kkiillll--wwoorrdd ((MM--dd)) - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the + Kill from point to the end of the current word, or if between + words, to the end of the next word. Word boundaries are the same as those used by sshheellll--ffoorrwwaarrdd--wwoorrdd. sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) - Kill the word behind point. Word boundaries are the same as + Kill the word behind point. Word boundaries are the same as those used by sshheellll--bbaacckkwwaarrdd--wwoorrdd. uunniixx--wwoorrdd--rruubboouutt ((CC--ww)) - Kill the word behind point, using white space as a word bound- + Kill the word behind point, using white space as a word bound- ary. The killed text is saved on the kill-ring. uunniixx--ffiilleennaammee--rruubboouutt - Kill the word behind point, using white space and the slash - character as the word boundaries. The killed text is saved on + Kill the word behind point, using white space and the slash + character as the word boundaries. The killed text is saved on the kill-ring. ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\)) Delete all spaces and tabs around point. @@ -3223,65 +3228,65 @@ RREEAADDLLIINNEE ccooppyy--rreeggiioonn--aass--kkiillll Copy the text in the region to the kill buffer. ccooppyy--bbaacckkwwaarrdd--wwoorrdd - Copy the word before point to the kill buffer. The word bound- + Copy the word before point to the kill buffer. The word bound- aries are the same as bbaacckkwwaarrdd--wwoorrdd. ccooppyy--ffoorrwwaarrdd--wwoorrdd - Copy the word following point to the kill buffer. The word + Copy the word following point to the kill buffer. The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd. yyaannkk ((CC--yy)) Yank the top of the kill ring into the buffer at point. yyaannkk--ppoopp ((MM--yy)) - Rotate the kill ring, and yank the new top. Only works follow- + Rotate the kill ring, and yank the new top. Only works follow- ing yyaannkk or yyaannkk--ppoopp. NNuummeerriicc AArrgguummeennttss ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----)) - Add this digit to the argument already accumulating, or start a + Add this digit to the argument already accumulating, or start a new argument. M-- starts a negative argument. uunniivveerrssaall--aarrgguummeenntt - This is another way to specify an argument. If this command is - followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is fol- - lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the - numeric argument, but is otherwise ignored. As a special case, - if this command is immediately followed by a character that is - neither a digit or minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argu- + This is another way to specify an argument. If this command is + followed by one or more digits, optionally with a leading minus + sign, those digits define the argument. If the command is fol- + lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the + numeric argument, but is otherwise ignored. As a special case, + if this command is immediately followed by a character that is + neither a digit or minus sign, the argument count for the next + command is multiplied by four. The argument count is initially + one, so executing this function the first time makes the argu- ment count four, a second time makes the argument count sixteen, and so on. CCoommpplleettiinngg ccoommpplleettee ((TTAABB)) - Attempt to perform completion on the text before point. BBaasshh + Attempt to perform completion on the text before point. BBaasshh attempts completion treating the text as a variable (if the text - begins with $$), username (if the text begins with ~~), hostname - (if the text begins with @@), or command (including aliases and + begins with $$), username (if the text begins with ~~), hostname + (if the text begins with @@), or command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted. ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??)) List the possible completions of the text before point. iinnsseerrtt--ccoommpplleettiioonnss ((MM--**)) - Insert all completions of the text before point that would have + Insert all completions of the text before point that would have been generated by ppoossssiibbllee--ccoommpplleettiioonnss. mmeennuu--ccoommpplleettee - Similar to ccoommpplleettee, but replaces the word to be completed with - a single match from the list of possible completions. Repeated - execution of mmeennuu--ccoommpplleettee steps through the list of possible - completions, inserting each match in turn. At the end of the + Similar to ccoommpplleettee, but replaces the word to be completed with + a single match from the list of possible completions. Repeated + execution of mmeennuu--ccoommpplleettee steps through the list of possible + completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of bbeellll--ssttyyllee) and the original text is restored. An argument of _n - moves _n positions forward in the list of matches; a negative - argument may be used to move backward through the list. This - command is intended to be bound to TTAABB, but is unbound by - default.cc - mmeennuu--ccoommpplleettee--kkrrdd - Identicwwal to mmeennuu--ccoommpplleettee, but moves backward through the list - of possible completions, as if mmeennuu--ccoommpplleettee had been given a + moves _n positions forward in the list of matches; a negative + argument may be used to move backward through the list. This + command is intended to be bound to TTAABB, but is unbound by + default. + mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd + Identical to mmeennuu--ccoommpplleettee, but moves backward through the list + of possible completions, as if mmeennuu--ccoommpplleettee had been given a negative argument. This command is unbound by default. ddeelleettee--cchhaarr--oorr--lliisstt - Deletes the character under the cursor if not at the beginning - or end of the line (like ddeelleettee--cchhaarr). If at the end of the + Deletes the character under the cursor if not at the beginning + or end of the line (like ddeelleettee--cchhaarr). If at the end of the line, behaves identically to ppoossssiibbllee--ccoommpplleettiioonnss. This command is unbound by default. ccoommpplleettee--ffiilleennaammee ((MM--//)) @@ -3290,213 +3295,213 @@ RREEAADDLLIINNEE List the possible completions of the text before point, treating it as a filename. ccoommpplleettee--uusseerrnnaammee ((MM--~~)) - Attempt completion on the text before point, treating it as a + Attempt completion on the text before point, treating it as a username. ppoossssiibbllee--uusseerrnnaammee--ccoommpplleettiioonnss ((CC--xx ~~)) List the possible completions of the text before point, treating it as a username. ccoommpplleettee--vvaarriiaabbllee ((MM--$$)) - Attempt completion on the text before point, treating it as a + Attempt completion on the text before point, treating it as a shell variable. ppoossssiibbllee--vvaarriiaabbllee--ccoommpplleettiioonnss ((CC--xx $$)) List the possible completions of the text before point, treating it as a shell variable. ccoommpplleettee--hhoossttnnaammee ((MM--@@)) - Attempt completion on the text before point, treating it as a + Attempt completion on the text before point, treating it as a hostname. ppoossssiibbllee--hhoossttnnaammee--ccoommpplleettiioonnss ((CC--xx @@)) List the possible completions of the text before point, treating it as a hostname. ccoommpplleettee--ccoommmmaanndd ((MM--!!)) - Attempt completion on the text before point, treating it as a - command name. Command completion attempts to match the text - against aliases, reserved words, shell functions, shell + Attempt completion on the text before point, treating it as a + command name. Command completion attempts to match the text + against aliases, reserved words, shell functions, shell builtins, and finally executable filenames, in that order. ppoossssiibbllee--ccoommmmaanndd--ccoommpplleettiioonnss ((CC--xx !!)) List the possible completions of the text before point, treating it as a command name. ddyynnaammiicc--ccoommpplleettee--hhiissttoorryy ((MM--TTAABB)) - Attempt completion on the text before point, comparing the text - against lines from the history list for possible completion + Attempt completion on the text before point, comparing the text + against lines from the history list for possible completion matches. ddaabbbbrreevv--eexxppaanndd - Attempt menu completion on the text before point, comparing the + Attempt menu completion on the text before point, comparing the text against lines from the history list for possible completion matches. ccoommpplleettee--iinnttoo--bbrraacceess ((MM--{{)) Perform filename completion and insert the list of possible com- - pletions enclosed within braces so the list is available to the + pletions enclosed within braces so the list is available to the shell (see BBrraaccee EExxppaannssiioonn above). KKeeyybbooaarrdd MMaaccrrooss ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (()) - Begin saving the characters typed into the current keyboard + Begin saving the characters typed into the current keyboard macro. eenndd--kkbbdd--mmaaccrroo ((CC--xx )))) Stop saving the characters typed into the current keyboard macro and store the definition. ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee)) - Re-execute the last keyboard macro defined, by making the char- + Re-execute the last keyboard macro defined, by making the char- acters in the macro appear as if typed at the keyboard. MMiisscceellllaanneeoouuss rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr)) - Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any + Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any bindings or variable assignments found there. aabboorrtt ((CC--gg)) - Abort the current editing command and ring the terminal's bell + Abort the current editing command and ring the terminal's bell (subject to the setting of bbeellll--ssttyyllee). ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......)) - If the metafied character _x is lowercase, run the command that + If the metafied character _x is lowercase, run the command that is bound to the corresponding uppercase character. pprreeffiixx--mmeettaa ((EESSCC)) Metafy the next character typed. EESSCC ff is equivalent to MMeettaa--ff. uunnddoo ((CC--__,, CC--xx CC--uu)) Incremental undo, separately remembered for each line. rreevveerrtt--lliinnee ((MM--rr)) - Undo all changes made to this line. This is like executing the - uunnddoo command enough times to return the line to its initial + Undo all changes made to this line. This is like executing the + uunnddoo command enough times to return the line to its initial state. ttiillddee--eexxppaanndd ((MM--&&)) Perform tilde expansion on the current word. sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>)) - Set the mark to the point. If a numeric argument is supplied, + Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) - Swap the point with the mark. The current cursor position is - set to the saved position, and the old cursor position is saved + Swap the point with the mark. The current cursor position is + set to the saved position, and the old cursor position is saved as the mark. cchhaarraacctteerr--sseeaarrcchh ((CC--]])) A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous occur- + that character. A negative count searches for previous occur- rences. cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]])) - A character is read and point is moved to the previous occur- - rence of that character. A negative count searches for subse- + A character is read and point is moved to the previous occur- + rence of that character. A negative count searches for subse- quent occurrences. - sskkiipp--ccssii--sseeqquueennccee (()) - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. Such sequences begin + sskkiipp--ccssii--sseeqquueennccee + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. + sequence is bound to "\[", keys producing such sequences will + have no effect unless explicitly bound to a readline command, + instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. iinnsseerrtt--ccoommmmeenntt ((MM--##)) - Without a numeric argument, the value of the readline ccoomm-- - mmeenntt--bbeeggiinn variable is inserted at the beginning of the current + Without a numeric argument, the value of the readline ccoomm-- + mmeenntt--bbeeggiinn variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a - toggle: if the characters at the beginning of the line do not - match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- + toggle: if the characters at the beginning of the line do not + match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- wise the characters in ccoommmmeenntt--bbeeggiinn are deleted from the begin- - ning of the line. In either case, the line is accepted as if a - newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn - causes this command to make the current line a shell comment. - If a numeric argument causes the comment character to be + ning of the line. In either case, the line is accepted as if a + newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn + causes this command to make the current line a shell comment. + If a numeric argument causes the comment character to be removed, the line will be executed by the shell. gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) - The word before point is treated as a pattern for pathname - expansion, with an asterisk implicitly appended. This pattern - is used to generate a list of matching file names for possible + The word before point is treated as a pattern for pathname + expansion, with an asterisk implicitly appended. This pattern + is used to generate a list of matching file names for possible completions. gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **)) - The word before point is treated as a pattern for pathname - expansion, and the list of matching file names is inserted, - replacing the word. If a numeric argument is supplied, an + The word before point is treated as a pattern for pathname + expansion, and the list of matching file names is inserted, + replacing the word. If a numeric argument is supplied, an asterisk is appended before pathname expansion. gglloobb--lliisstt--eexxppaannssiioonnss ((CC--xx gg)) - The list of expansions that would have been generated by - gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line is redrawn. If a - numeric argument is supplied, an asterisk is appended before + The list of expansions that would have been generated by + gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line is redrawn. If a + numeric argument is supplied, an asterisk is appended before pathname expansion. dduummpp--ffuunnccttiioonnss - Print all of the functions and their key bindings to the read- + Print all of the functions and their key bindings to the read- line output stream. If a numeric argument is supplied, the out- - put is formatted in such a way that it can be made part of an + put is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. dduummpp--vvaarriiaabblleess Print all of the settable readline variables and their values to - the readline output stream. If a numeric argument is supplied, - the output is formatted in such a way that it can be made part + the readline output stream. If a numeric argument is supplied, + the output is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. dduummpp--mmaaccrrooss - Print all of the readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the + Print all of the readline key sequences bound to macros and the + strings they output. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. ddiissppllaayy--sshheellll--vveerrssiioonn ((CC--xx CC--vv)) - Display version information about the current instance of bbaasshh. + Display version information about the current instance of bbaasshh. PPrrooggrraammmmaabbllee CCoommpplleettiioonn - When word completion is attempted for an argument to a command for - which a completion specification (a _c_o_m_p_s_p_e_c) has been defined using - the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the pro- + When word completion is attempted for an argument to a command for + which a completion specification (a _c_o_m_p_s_p_e_c) has been defined using + the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the pro- grammable completion facilities are invoked. - First, the command name is identified. If the command word is the - empty string (completion attempted at the beginning of an empty line), - any compspec defined with the --EE option to ccoommpplleettee is used. If a - compspec has been defined for that command, the compspec is used to + First, the command name is identified. If the command word is the + empty string (completion attempted at the beginning of an empty line), + any compspec defined with the --EE option to ccoommpplleettee is used. If a + compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command - word is a full pathname, a compspec for the full pathname is searched - for first. If no compspec is found for the full pathname, an attempt - is made to find a compspec for the portion following the final slash. - If those searches to not result in a compspec, any compspec defined + word is a full pathname, a compspec for the full pathname is searched + for first. If no compspec is found for the full pathname, an attempt + is made to find a compspec for the portion following the final slash. + If those searches do not result in a compspec, any compspec defined with the --DD option to ccoommpplleettee is used as the default. - Once a compspec has been found, it is used to generate the list of - matching words. If a compspec is not found, the default bbaasshh comple- + Once a compspec has been found, it is used to generate the list of + matching words. If a compspec is not found, the default bbaasshh comple- tion as described above under CCoommpplleettiinngg is performed. - First, the actions specified by the compspec are used. Only matches - which are prefixed by the word being completed are returned. When the - --ff or --dd option is used for filename or directory name completion, the + First, the actions specified by the compspec are used. Only matches + which are prefixed by the word being completed are returned. When the + --ff or --dd option is used for filename or directory name completion, the shell variable FFIIGGNNOORREE is used to filter the matches. - Any completions specified by a pathname expansion pattern to the --GG + Any completions specified by a pathname expansion pattern to the --GG option are generated next. The words generated by the pattern need not - match the word being completed. The GGLLOOBBIIGGNNOORREE shell variable is not + match the word being completed. The GGLLOOBBIIGGNNOORREE shell variable is not used to filter the matches, but the FFIIGGNNOORREE variable is used. - Next, the string specified as the argument to the --WW option is consid- - ered. The string is first split using the characters in the IIFFSS spe- - cial variable as delimiters. Shell quoting is honored. Each word is - then expanded using brace expansion, tilde expansion, parameter and - variable expansion, command substitution, and arithmetic expansion, as + Next, the string specified as the argument to the --WW option is consid- + ered. The string is first split using the characters in the IIFFSS spe- + cial variable as delimiters. Shell quoting is honored. Each word is + then expanded using brace expansion, tilde expansion, parameter and + variable expansion, command substitution, and arithmetic expansion, as described above under EEXXPPAANNSSIIOONN. The results are split using the rules described above under WWoorrdd SSpplliittttiinngg. The results of the expansion are prefix-matched against the word being completed, and the matching words become the possible completions. - After these matches have been generated, any shell function or command - specified with the --FF and --CC options is invoked. When the command or + After these matches have been generated, any shell function or command + specified with the --FF and --CC options is invoked. When the command or function is invoked, the CCOOMMPP__LLIINNEE, CCOOMMPP__PPOOIINNTT, CCOOMMPP__KKEEYY, and CCOOMMPP__TTYYPPEE variables are assigned values as described above under SShheellll VVaarriiaabblleess. - If a shell function is being invoked, the CCOOMMPP__WWOORRDDSS and CCOOMMPP__CCWWOORRDD - variables are also set. When the function or command is invoked, the - first argument is the name of the command whose arguments are being - completed, the second argument is the word being completed, and the - third argument is the word preceding the word being completed on the - current command line. No filtering of the generated completions - against the word being completed is performed; the function or command + If a shell function is being invoked, the CCOOMMPP__WWOORRDDSS and CCOOMMPP__CCWWOORRDD + variables are also set. When the function or command is invoked, the + first argument is the name of the command whose arguments are being + completed, the second argument is the word being completed, and the + third argument is the word preceding the word being completed on the + current command line. No filtering of the generated completions + against the word being completed is performed; the function or command has complete freedom in generating the matches. - Any function specified with --FF is invoked first. The function may use - any of the shell facilities, including the ccoommppggeenn builtin described - below, to generate the matches. It must put the possible completions + Any function specified with --FF is invoked first. The function may use + any of the shell facilities, including the ccoommppggeenn builtin described + below, to generate the matches. It must put the possible completions in the CCOOMMPPRREEPPLLYY array variable. - Next, any command specified with the --CC option is invoked in an envi- - ronment equivalent to command substitution. It should print a list of - completions, one per line, to the standard output. Backslash may be + Next, any command specified with the --CC option is invoked in an envi- + ronment equivalent to command substitution. It should print a list of + completions, one per line, to the standard output. Backslash may be used to escape a newline, if necessary. - After all of the possible completions are generated, any filter speci- - fied with the --XX option is applied to the list. The filter is a pat- - tern as used for pathname expansion; a && in the pattern is replaced - with the text of the word being completed. A literal && may be escaped - with a backslash; the backslash is removed before attempting a match. - Any completion that matches the pattern will be removed from the list. + After all of the possible completions are generated, any filter speci- + fied with the --XX option is applied to the list. The filter is a pat- + tern as used for pathname expansion; a && in the pattern is replaced + with the text of the word being completed. A literal && may be escaped + with a backslash; the backslash is removed before attempting a match. + Any completion that matches the pattern will be removed from the list. A leading !! negates the pattern; in this case any completion not match- ing the pattern will be removed. @@ -3504,44 +3509,44 @@ RREEAADDLLIINNEE added to each member of the completion list, and the result is returned to the readline completion code as the list of possible completions. - If the previously-applied actions do not generate any matches, and the - --oo ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was + If the previously-applied actions do not generate any matches, and the + --oo ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was defined, directory name completion is attempted. - If the --oo pplluussddiirrss option was supplied to ccoommpplleettee when the compspec + If the --oo pplluussddiirrss option was supplied to ccoommpplleettee when the compspec was defined, directory name completion is attempted and any matches are added to the results of the other actions. - By default, if a compspec is found, whatever it generates is returned - to the completion code as the full set of possible completions. The + By default, if a compspec is found, whatever it generates is returned + to the completion code as the full set of possible completions. The default bbaasshh completions are not attempted, and the readline default of filename completion is disabled. If the --oo bbaasshhddeeffaauulltt option was sup- - plied to ccoommpplleettee when the compspec was defined, the bbaasshh default com- + plied to ccoommpplleettee when the compspec was defined, the bbaasshh default com- pletions are attempted if the compspec generates no matches. If the --oo - ddeeffaauulltt option was supplied to ccoommpplleettee when the compspec was defined, - readline's default completion will be performed if the compspec (and, + ddeeffaauulltt option was supplied to ccoommpplleettee when the compspec was defined, + readline's default completion will be performed if the compspec (and, if attempted, the default bbaasshh completions) generate no matches. - When a compspec indicates that directory name completion is desired, - the programmable completion functions force readline to append a slash - to completed names which are symbolic links to directories, subject to - the value of the mmaarrkk--ddiirreeccttoorriieess readline variable, regardless of the + When a compspec indicates that directory name completion is desired, + the programmable completion functions force readline to append a slash + to completed names which are symbolic links to directories, subject to + the value of the mmaarrkk--ddiirreeccttoorriieess readline variable, regardless of the setting of the mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess readline variable. - There is some support for dynamically modifying completions. This is - most useful when used in combination with a default completion speci- - fied with ccoommpplleettee --DD. It's possible for shell functions executed as - completion handlers to indicate that completion should be retried by - returning an exit status of 124. If a shell function returns 124, and + There is some support for dynamically modifying completions. This is + most useful when used in combination with a default completion speci- + fied with ccoommpplleettee --DD. It's possible for shell functions executed as + completion handlers to indicate that completion should be retried by + returning an exit status of 124. If a shell function returns 124, and changes the compspec associated with the command on which completion is - being attempted (supplied as the first argument when the function is + being attempted (supplied as the first argument when the function is executed), programmable completion restarts from the beginning, with an - attempt to find a new compspec for that command. This allows a set of - completions to be built dynamically as completion is attempted, rather + attempt to find a new compspec for that command. This allows a set of + completions to be built dynamically as completion is attempted, rather than being loaded all at once. - For instance, assuming that there is a library of compspecs, each kept - in a file corresponding to the name of the command, the following + For instance, assuming that there is a library of compspecs, each kept + in a file corresponding to the name of the command, the following default completion function would load completions dynamically: _completion_loader() @@ -3552,133 +3557,135 @@ RREEAADDLLIINNEE HHIISSTTOORRYY - When the --oo hhiissttoorryy option to the sseett builtin is enabled, the shell + When the --oo hhiissttoorryy option to the sseett builtin is enabled, the shell provides access to the _c_o_m_m_a_n_d _h_i_s_t_o_r_y, the list of commands previously - typed. The value of the HHIISSTTSSIIZZEE variable is used as the number of + typed. The value of the HHIISSTTSSIIZZEE variable is used as the number of commands to save in a history list. The text of the last HHIISSTTSSIIZZEE com- - mands (default 500) is saved. The shell stores each command in the - history list prior to parameter and variable expansion (see EEXXPPAANNSSIIOONN - above) but after history expansion is performed, subject to the values + mands (default 500) is saved. The shell stores each command in the + history list prior to parameter and variable expansion (see EEXXPPAANNSSIIOONN + above) but after history expansion is performed, subject to the values of the shell variables HHIISSTTIIGGNNOORREE and HHIISSTTCCOONNTTRROOLL. On startup, the history is initialized from the file named by the vari- - able HHIISSTTFFIILLEE (default _~_/_._b_a_s_h___h_i_s_t_o_r_y). The file named by the value - of HHIISSTTFFIILLEE is truncated, if necessary, to contain no more than the - number of lines specified by the value of HHIISSTTFFIILLEESSIIZZEE. When the his- - tory file is read, lines beginning with the history comment character - followed immediately by a digit are interpreted as timestamps for the - preceding history line. These timestamps are optionally displayed - depending on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When an inter- - active shell exits, the last $$HHIISSTTSSIIZZEE lines are copied from the his- + able HHIISSTTFFIILLEE (default _~_/_._b_a_s_h___h_i_s_t_o_r_y). The file named by the value + of HHIISSTTFFIILLEE is truncated, if necessary, to contain no more than the + number of lines specified by the value of HHIISSTTFFIILLEESSIIZZEE. When the his- + tory file is read, lines beginning with the history comment character + followed immediately by a digit are interpreted as timestamps for the + preceding history line. These timestamps are optionally displayed + depending on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When an inter- + active shell exits, the last $$HHIISSTTSSIIZZEE lines are copied from the his- tory list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell option is enabled (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the lines - are appended to the history file, otherwise the history file is over- - written. If HHIISSTTFFIILLEE is unset, or if the history file is unwritable, - the history is not saved. If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, time + are appended to the history file, otherwise the history file is over- + written. If HHIISSTTFFIILLEE is unset, or if the history file is unwritable, + the history is not saved. If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, time stamps are written to the history file, marked with the history comment - character, so they may be preserved across shell sessions. This uses + character, so they may be preserved across shell sessions. This uses the history comment character to distinguish timestamps from other his- tory lines. After saving the history, the history file is truncated to - contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEESSIIZZEE is not set, + contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEESSIIZZEE is not set, no truncation is performed. - The builtin command ffcc (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) may be used + The builtin command ffcc (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) may be used to list or edit and re-execute a portion of the history list. The hhiiss-- - ttoorryy builtin may be used to display or modify the history list and - manipulate the history file. When using command-line editing, search - commands are available in each editing mode that provide access to the + ttoorryy builtin may be used to display or modify the history list and + manipulate the history file. When using command-line editing, search + commands are available in each editing mode that provide access to the history list. - The shell allows control over which commands are saved on the history + The shell allows control over which commands are saved on the history list. The HHIISSTTCCOONNTTRROOLL and HHIISSTTIIGGNNOORREE variables may be set to cause the shell to save only a subset of the commands entered. The ccmmddhhiisstt shell - option, if enabled, causes the shell to attempt to save each line of a - multi-line command in the same history entry, adding semicolons where - necessary to preserve syntactic correctness. The lliitthhiisstt shell option - causes the shell to save the command with embedded newlines instead of + option, if enabled, causes the shell to attempt to save each line of a + multi-line command in the same history entry, adding semicolons where + necessary to preserve syntactic correctness. The lliitthhiisstt shell option + causes the shell to save the command with embedded newlines instead of semicolons. See the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for information on setting and unsetting shell options. HHIISSTTOORRYY EEXXPPAANNSSIIOONN - The shell supports a history expansion feature that is similar to the - history expansion in ccsshh.. This section describes what syntax features - are available. This feature is enabled by default for interactive + The shell supports a history expansion feature that is similar to the + history expansion in ccsshh.. This section describes what syntax features + are available. This feature is enabled by default for interactive shells, and can be disabled using the ++HH option to the sseett builtin com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). Non-interactive shells do not perform history expansion by default. History expansions introduce words from the history list into the input - stream, making it easy to repeat commands, insert the arguments to a + stream, making it easy to repeat commands, insert the arguments to a previous command into the current input line, or fix errors in previous commands quickly. - History expansion is performed immediately after a complete line is - read, before the shell breaks it into words. It takes place in two - parts. The first is to determine which line from the history list to + History expansion is performed immediately after a complete line is + read, before the shell breaks it into words. It takes place in two + parts. The first is to determine which line from the history list to use during substitution. The second is to select portions of that line for inclusion into the current one. The line selected from the history - is the _e_v_e_n_t, and the portions of that line that are acted upon are - _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are available to manipulate the selected + is the _e_v_e_n_t, and the portions of that line that are acted upon are + _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are available to manipulate the selected words. The line is broken into words in the same fashion as when read- - ing input, so that several _m_e_t_a_c_h_a_r_a_c_t_e_r-separated words surrounded by - quotes are considered one word. History expansions are introduced by - the appearance of the history expansion character, which is !! by - default. Only backslash (\\) and single quotes can quote the history + ing input, so that several _m_e_t_a_c_h_a_r_a_c_t_e_r-separated words surrounded by + quotes are considered one word. History expansions are introduced by + the appearance of the history expansion character, which is !! by + default. Only backslash (\\) and single quotes can quote the history expansion character. - Several characters inhibit history expansion if found immediately fol- - lowing the history expansion character, even if it is unquoted: space, - tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is + Several characters inhibit history expansion if found immediately fol- + lowing the history expansion character, even if it is unquoted: space, + tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is enabled, (( will also inhibit expansion. - Several shell options settable with the sshhoopptt builtin may be used to - tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell + Several shell options settable with the sshhoopptt builtin may be used to + tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell option is enabled (see the description of the sshhoopptt builtin below), and - rreeaaddlliinnee is being used, history substitutions are not immediately - passed to the shell parser. Instead, the expanded line is reloaded + rreeaaddlliinnee is being used, history substitutions are not immediately + passed to the shell parser. Instead, the expanded line is reloaded into the rreeaaddlliinnee editing buffer for further modification. If rreeaaddlliinnee - is being used, and the hhiissttrreeeeddiitt shell option is enabled, a failed - history substitution will be reloaded into the rreeaaddlliinnee editing buffer - for correction. The --pp option to the hhiissttoorryy builtin command may be - used to see what a history expansion will do before using it. The --ss + is being used, and the hhiissttrreeeeddiitt shell option is enabled, a failed + history substitution will be reloaded into the rreeaaddlliinnee editing buffer + for correction. The --pp option to the hhiissttoorryy builtin command may be + used to see what a history expansion will do before using it. The --ss option to the hhiissttoorryy builtin may be used to add commands to the end of - the history list without actually executing them, so that they are + the history list without actually executing them, so that they are available for subsequent recall. - The shell allows control of the various characters used by the history + The shell allows control of the various characters used by the history expansion mechanism (see the description of hhiissttcchhaarrss above under SShheellll - VVaarriiaabblleess). The shell uses the history comment character to mark his- + VVaarriiaabblleess). The shell uses the history comment character to mark his- tory timestamps when writing the history file. EEvveenntt DDeessiiggnnaattoorrss - An event designator is a reference to a command line entry in the his- - tory list. + An event designator is a reference to a command line entry in the his- + tory list. Unless the reference is absolute, events are relative to + the current position in the history list. !! Start a history substitution, except when followed by a bbllaannkk, newline, carriage return, = or ( (when the eexxttgglloobb shell option is enabled using the sshhoopptt builtin). !!_n Refer to command line _n. - !!--_n Refer to the current command line minus _n. + !!--_n Refer to the current command minus _n. !!!! Refer to the previous command. This is a synonym for `!-1'. !!_s_t_r_i_n_g - Refer to the most recent command starting with _s_t_r_i_n_g. + Refer to the most recent command preceding the current position + in the history list starting with _s_t_r_i_n_g. !!??_s_t_r_i_n_g[[??]] - Refer to the most recent command containing _s_t_r_i_n_g. The trail- - ing ?? may be omitted if _s_t_r_i_n_g is followed immediately by a new- - line. + Refer to the most recent command preceding the current postition + in the history list containing _s_t_r_i_n_g. The trailing ?? may be + omitted if _s_t_r_i_n_g is followed immediately by a newline. ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ - Quick substitution. Repeat the last command, replacing _s_t_r_i_n_g_1 - with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMoodd-- - iiffiieerrss below). + Quick substitution. Repeat the previous command, replacing + _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' + (see MMooddiiffiieerrss below). !!## The entire command line typed so far. WWoorrdd DDeessiiggnnaattoorrss - Word designators are used to select desired words from the event. A :: - separates the event specification from the word designator. It may be - omitted if the word designator begins with a ^^, $$, **, --, or %%. Words - are numbered from the beginning of the line, with the first word being - denoted by 0 (zero). Words are inserted into the current line sepa- + Word designators are used to select desired words from the event. A :: + separates the event specification from the word designator. It may be + omitted if the word designator begins with a ^^, $$, **, --, or %%. Words + are numbered from the beginning of the line, with the first word being + denoted by 0 (zero). Words are inserted into the current line sepa- rated by single spaces. 00 ((zzeerroo)) @@ -3688,17 +3695,17 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN $$ The last argument. %% The word matched by the most recent `?_s_t_r_i_n_g?' search. _x--_y A range of words; `-_y' abbreviates `0-_y'. - ** All of the words but the zeroth. This is a synonym for `_1_-_$'. - It is not an error to use ** if there is just one word in the + ** All of the words but the zeroth. This is a synonym for `_1_-_$'. + It is not an error to use ** if there is just one word in the event; the empty string is returned in that case. xx** Abbreviates _x_-_$. xx-- Abbreviates _x_-_$ like xx**, but omits the last word. - If a word designator is supplied without an event specification, the + If a word designator is supplied without an event specification, the previous command is used as the event. MMooddiiffiieerrss - After the optional word designator, there may appear a sequence of one + After the optional word designator, there may appear a sequence of one or more of the following modifiers, each preceded by a `:'. hh Remove a trailing file name component, leaving only the head. @@ -3707,74 +3714,74 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN ee Remove all but the trailing suffix. pp Print the new command but do not execute it. qq Quote the substituted words, escaping further substitutions. - xx Quote the substituted words as with qq, but break into words at + xx Quote the substituted words as with qq, but break into words at bbllaannkkss and newlines. ss//_o_l_d//_n_e_w// - Substitute _n_e_w for the first occurrence of _o_l_d in the event - line. Any delimiter can be used in place of /. The final - delimiter is optional if it is the last character of the event - line. The delimiter may be quoted in _o_l_d and _n_e_w with a single - backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin- - gle backslash will quote the &. If _o_l_d is null, it is set to - the last _o_l_d substituted, or, if no previous history substitu- + Substitute _n_e_w for the first occurrence of _o_l_d in the event + line. Any delimiter can be used in place of /. The final + delimiter is optional if it is the last character of the event + line. The delimiter may be quoted in _o_l_d and _n_e_w with a single + backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin- + gle backslash will quote the &. If _o_l_d is null, it is set to + the last _o_l_d substituted, or, if no previous history substitu- tions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search. && Repeat the previous substitution. gg Cause changes to be applied over the entire event line. This is - used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'. - If used with `::ss', any delimiter can be used in place of /, and - the final delimiter is optional if it is the last character of + used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'. + If used with `::ss', any delimiter can be used in place of /, and + the final delimiter is optional if it is the last character of the event line. An aa may be used as a synonym for gg. - GG Apply the following `ss' modifier once to each word in the event + GG Apply the following `ss' modifier once to each word in the event line. SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Unless otherwise noted, each builtin command documented in this section as accepting options preceded by -- accepts ---- to signify the end of the - options. The ::, ttrruuee, ffaallssee, and tteesstt builtins do not accept options + options. The ::, ttrruuee, ffaallssee, and tteesstt builtins do not accept options and do not treat ---- specially. The eexxiitt, llooggoouutt, bbrreeaakk, ccoonnttiinnuuee, lleett, - and sshhiifftt builtins accept and process arguments beginning with -- with- - out requiring ----. Other builtins that accept arguments but are not - specified as accepting options interpret arguments beginning with -- as + and sshhiifftt builtins accept and process arguments beginning with -- with- + out requiring ----. Other builtins that accept arguments but are not + specified as accepting options interpret arguments beginning with -- as invalid options and require ---- to prevent this interpretation. :: [_a_r_g_u_m_e_n_t_s] - No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s - and performing any specified redirections. A zero exit code is + No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s + and performing any specified redirections. A zero exit code is returned. .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - Read and execute commands from _f_i_l_e_n_a_m_e in the current shell - environment and return the exit status of the last command exe- + Read and execute commands from _f_i_l_e_n_a_m_e in the current shell + environment and return the exit status of the last command exe- cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, file - names in PPAATTHH are used to find the directory containing _f_i_l_e_- - _n_a_m_e. The file searched for in PPAATTHH need not be executable. - When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is - searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option - to the sshhoopptt builtin command is turned off, the PPAATTHH is not - searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- - tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the - positional parameters are unchanged. The return status is the - status of the last command exited within the script (0 if no - commands are executed), and false if _f_i_l_e_n_a_m_e is not found or + names in PPAATTHH are used to find the directory containing _f_i_l_e_- + _n_a_m_e. The file searched for in PPAATTHH need not be executable. + When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is + searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option + to the sshhoopptt builtin command is turned off, the PPAATTHH is not + searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- + tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the + positional parameters are unchanged. The return status is the + status of the last command exited within the script (0 if no + commands are executed), and false if _f_i_l_e_n_a_m_e is not found or cannot be read. aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] AAlliiaass with no arguments or with the --pp option prints the list of - aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When - arguments are supplied, an alias is defined for each _n_a_m_e whose + aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When + arguments are supplied, an alias is defined for each _n_a_m_e whose _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word to be checked for alias substitution when the alias is expanded. - For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup- - plied, the name and value of the alias is printed. AAlliiaass - returns true unless a _n_a_m_e is given for which no alias has been + For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup- + plied, the name and value of the alias is printed. AAlliiaass + returns true unless a _n_a_m_e is given for which no alias has been defined. bbgg [_j_o_b_s_p_e_c ...] - Resume each suspended job _j_o_b_s_p_e_c in the background, as if it + Resume each suspended job _j_o_b_s_p_e_c in the background, as if it had been started with &&. If _j_o_b_s_p_e_c is not present, the shell's - notion of the _c_u_r_r_e_n_t _j_o_b is used. bbgg _j_o_b_s_p_e_c returns 0 unless - run when job control is disabled or, when run with job control - enabled, any specified _j_o_b_s_p_e_c was not found or was started + notion of the _c_u_r_r_e_n_t _j_o_b is used. bbgg _j_o_b_s_p_e_c returns 0 unless + run when job control is disabled or, when run with job control + enabled, any specified _j_o_b_s_p_e_c was not found or was started without job control. bbiinndd [--mm _k_e_y_m_a_p] [--llppssvvPPSSVV] @@ -3783,28 +3790,28 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d - Display current rreeaaddlliinnee key and function bindings, bind a key - sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee - variable. Each non-option argument is a command as it would - appear in _._i_n_p_u_t_r_c, but each binding or command must be passed - as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. + Display current rreeaaddlliinnee key and function bindings, bind a key + sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee + variable. Each non-option argument is a command as it would + appear in _._i_n_p_u_t_r_c, but each binding or command must be passed + as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. Options, if supplied, have the following meanings: --mm _k_e_y_m_a_p Use _k_e_y_m_a_p as the keymap to be affected by the subsequent bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_- - _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, - and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is + _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, + and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. --ll List the names of all rreeaaddlliinnee functions. - --pp Display rreeaaddlliinnee function names and bindings in such a + --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the + --SS Display rreeaaddlliinnee key sequences bound to macros and the strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. --ff _f_i_l_e_n_a_m_e @@ -3816,157 +3823,157 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr _k_e_y_s_e_q Remove any current binding for _k_e_y_s_e_q. --xx _k_e_y_s_e_q::_s_h_e_l_l_-_c_o_m_m_a_n_d - Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is - entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets - the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- - lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the + Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is + entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets + the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- + lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the current location of the insertion point. If the executed - command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- - LLIINNEE__PPOOIINNTT, those new values will be reflected in the + command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- + LLIINNEE__PPOOIINNTT, those new values will be reflected in the editing state. - The return value is 0 unless an unrecognized option is given or + The return value is 0 unless an unrecognized option is given or an error occurred. bbrreeaakk [_n] - Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is - specified, break _n levels. _n must be >= 1. If _n is greater - than the number of enclosing loops, all enclosing loops are - exited. The return value is 0 unless _n is not greater than or + Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is + specified, break _n levels. _n must be >= 1. If _n is greater + than the number of enclosing loops, all enclosing loops are + exited. The return value is 0 unless _n is not greater than or equal to 1. bbuuiillttiinn _s_h_e_l_l_-_b_u_i_l_t_i_n [_a_r_g_u_m_e_n_t_s] - Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and + Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and return its exit status. This is useful when defining a function - whose name is the same as a shell builtin, retaining the func- + whose name is the same as a shell builtin, retaining the func- tionality of the builtin within the function. The ccdd builtin is - commonly redefined this way. The return status is false if + commonly redefined this way. The return status is false if _s_h_e_l_l_-_b_u_i_l_t_i_n is not a shell builtin command. ccaalllleerr [_e_x_p_r] Returns the context of any active subroutine call (a shell func- tion or a script executed with the .. or ssoouurrccee builtins). With- out _e_x_p_r, ccaalllleerr displays the line number and source filename of - the current subroutine call. If a non-negative integer is sup- + the current subroutine call. If a non-negative integer is sup- plied as _e_x_p_r, ccaalllleerr displays the line number, subroutine name, - and source file corresponding to that position in the current - execution call stack. This extra information may be used, for - example, to print a stack trace. The current frame is frame 0. - The return value is 0 unless the shell is not executing a sub- - routine call or _e_x_p_r does not correspond to a valid position in + and source file corresponding to that position in the current + execution call stack. This extra information may be used, for + example, to print a stack trace. The current frame is frame 0. + The return value is 0 unless the shell is not executing a sub- + routine call or _e_x_p_r does not correspond to a valid position in the call stack. ccdd [--LL|[--PP [--ee]]] [_d_i_r] - Change the current directory to _d_i_r. The variable HHOOMMEE is the - default _d_i_r. The variable CCDDPPAATTHH defines the search path for - the directory containing _d_i_r. Alternative directory names in - CCDDPPAATTHH are separated by a colon (:). A null directory name in - CCDDPPAATTHH is the same as the current directory, i.e., ``..''. If - _d_i_r begins with a slash (/), then CCDDPPAATTHH is not used. The --PP - option says to use the physical directory structure instead of - following symbolic links (see also the --PP option to the sseett + Change the current directory to _d_i_r. The variable HHOOMMEE is the + default _d_i_r. The variable CCDDPPAATTHH defines the search path for + the directory containing _d_i_r. Alternative directory names in + CCDDPPAATTHH are separated by a colon (:). A null directory name in + CCDDPPAATTHH is the same as the current directory, i.e., ``..''. If + _d_i_r begins with a slash (/), then CCDDPPAATTHH is not used. The --PP + option says to use the physical directory structure instead of + following symbolic links (see also the --PP option to the sseett builtin command); the --LL option forces symbolic links to be fol- - lowed. If the --ee option is supplied with --PP, and the current + lowed. If the --ee option is supplied with --PP, and the current working directory cannot be successfully determined after a suc- cessful directory change, ccdd will return an unsuccessful status. - An argument of -- is equivalent to $$OOLLDDPPWWDD. If a non-empty - directory name from CCDDPPAATTHH is used, or if -- is the first argu- + An argument of -- is equivalent to $$OOLLDDPPWWDD. If a non-empty + directory name from CCDDPPAATTHH is used, or if -- is the first argu- ment, and the directory change is successful, the absolute path- - name of the new working directory is written to the standard - output. The return value is true if the directory was success- + name of the new working directory is written to the standard + output. The return value is true if the directory was success- fully changed; false otherwise. ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function - lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + lookup. Only builtin commands or commands found in the PPAATTHH are + executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is + performed using a default value for PPAATTHH that is guaranteed to + find all of the standard utilities. If either the --VV or --vv option is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv - option causes a single word indicating the command or file name + option causes a single word indicating the command or file name used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a - more verbose description. If the --VV or --vv option is supplied, - the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If + more verbose description. If the --VV or --vv option is supplied, + the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If neither option is supplied and an error occurred or _c_o_m_m_a_n_d can- - not be found, the exit status is 127. Otherwise, the exit sta- + not be found, the exit status is 127. Otherwise, the exit sta- tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d. ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d] - Generate possible completion matches for _w_o_r_d according to the - _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee - builtin with the exception of --pp and --rr, and write the matches - to the standard output. When using the --FF or --CC options, the - various shell variables set by the programmable completion + Generate possible completion matches for _w_o_r_d according to the + _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee + builtin with the exception of --pp and --rr, and write the matches + to the standard output. When using the --FF or --CC options, the + various shell variables set by the programmable completion facilities, while available, will not have useful values. - The matches will be generated in the same way as if the pro- - grammable completion code had generated them directly from a + The matches will be generated in the same way as if the pro- + grammable completion code had generated them directly from a completion specification with the same flags. If _w_o_r_d is speci- fied, only those completions matching _w_o_r_d will be displayed. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e _._._.] ccoommpplleettee --pprr [--DDEE] [_n_a_m_e ...] - Specify how arguments to each _n_a_m_e should be completed. If the - --pp option is supplied, or if no options are supplied, existing - completion specifications are printed in a way that allows them + 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- + 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 + 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 PPrroo-- + The process of applying these completion specifications when + word completion is attempted is described above under PPrroo-- ggrraammmmaabbllee 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. - 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 @@ -3974,7 +3981,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 @@ -3983,17 +3990,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. @@ -4002,173 +4009,173 @@ 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 it finishes, the possible com- - pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When it finishes, the possible com- + pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY array variable. --GG _g_l_o_b_p_a_t - The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to generate the possible completions. --PP _p_r_e_f_i_x - _p_r_e_f_i_x is added at the beginning of each possible com- + _p_r_e_f_i_x is added at the beginning of each possible com- pletion after all other options have been applied. --SS _s_u_f_f_i_x _s_u_f_f_i_x is appended to each possible completion after all other options have been applied. --WW _w_o_r_d_l_i_s_t - The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS - special variable as delimiters, and each resultant word - is expanded. The possible completions are the members - of the resultant list which match the word being com- + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. The possible completions are the members + of the resultant list which match the word being com- pleted. --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 - 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 + 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 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] 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 the remaining 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; + 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, + 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 [--aaAAffFFggiillrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] ttyyppeesseett [--aaAAffFFggiillrrttuuxx] [--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 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 + 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 defi- - nitions; only the function name and attributes are printed. If - the eexxttddeebbuugg shell option is enabled using sshhoopptt, the source + nitions; 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 the function is defined are dis- played as well. The --FF option 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 following options can be used to restrict - output to variables with the specified attribute or to give + 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 following 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. --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, makes each _n_a_m_e local, as with the llooccaall command, - unless the --ggPP ooppttiioonn iiss ssuupppplliieedd,, IIff aa vvaarriiaabbllee nnaammee iiss ffooll-- + unless the --ggPP ooppttiioonn iiss ssuupppplliieedd,, IIff aa vvaarriiaabbllee nnaammee iiss ffooll-- lloowweedd bbyy ==_v_a_l_u_e,, tthhee vvaalluuee ooff tthhee vvaarriiaabbllee iiss sseett ttoo _v_a_l_u_e.. TThhee - rreettuurrnn vvaalluuee iiss 00 uunnlleessss aann iinnvvaalliidd ooppttiioonn iiss eennccoouunntteerreedd,, aann - aatttteemmpptt iiss mmaaddee ttoo ddeeffiinnee aa ffuunnccttiioonn uussiinngg ````--ff ffoooo==bbaarr'''',, aann - aatttteemmpptt iiss mmaaddee ttoo aassssiiggnn aa vvaalluuee ttoo aa rreeaaddoonnllyy vvaarriiaabbllee,, aann - aatttteemmpptt iiss mmaaddee ttoo aassssiiggnn aa vvaalluuee ttoo aann aarrrraayy vvaarriiaabbllee wwiitthhoouutt - uussiinngg tthhee ccoommppoouunndd aassssiiggnnmmeenntt ssyynnttaaxx ((sseeee AArrrraayyss above), one of + rreettuurrnn vvaalluuee iiss 00 uunnlleessss aann iinnvvaalliidd ooppttiioonn iiss eennccoouunntteerreedd,, aann + aatttteemmpptt iiss mmaaddee ttoo ddeeffiinnee aa ffuunnccttiioonn uussiinngg ````--ff ffoooo==bbaarr'''',, aann + aatttteemmpptt iiss mmaaddee ttoo aassssiiggnn aa vvaalluuee ttoo aa rreeaaddoonnllyy vvaarriiaabbllee,, aann + aatttteemmpptt iiss mmaaddee ttoo aassssiiggnn aa vvaalluuee ttoo aann aarrrraayy vvaarriiaabbllee wwiitthhoouutt + uussiinngg tthhee ccoommppoouunndd aassssiiggnnmmeenntt ssyynnttaaxx ((sseeee AArrrraayyss above), one of the _n_a_m_e_s is not a valid shell variable name, an attempt is made - to turn off readonly status for a readonly variable, an attempt - is made to turn off array status for an array variable, or an + to turn off readonly status for a readonly variable, an attempt + is made to turn off array status for an array variable, or an attempt is made to display a non-existent function with --ff. ddiirrss [[++_n]] [[--_n]] [[--ccllppvv]] - 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 + 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. ++_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. --cc Clears the directory stack by deleting all of the entries. - --ll Produces a longer listing; the default listing format + --ll Produces a longer listing; 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. - 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 ...] - Without options, each _j_o_b_s_p_e_c is removed from the table of - active jobs. If _j_o_b_s_p_e_c is not present, and neither --aa nor --rr - is supplied, the shell's notion of the _c_u_r_r_e_n_t _j_o_b is used. If + Without options, each _j_o_b_s_p_e_c is removed from the table of + active jobs. If _j_o_b_s_p_e_c is not present, and neither --aa nor --rr + is supplied, the shell's notion of 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 ta- - ble, 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 present, and neither - the --aa nor the --rr option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. + ble, 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 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 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_- + 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. + Output the _a_r_gs, separated by spaces, followed by a newline. The return status is always 0. If --nn is specified, the trailing - newline is suppressed. If the --ee option is given, interpreta- - tion of the following backslash-escaped characters is enabled. - The --EE option disables the interpretation of these escape char- - acters, 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 + newline is suppressed. If the --ee option is given, interpreta- + tion of the following backslash-escaped characters is enabled. + The --EE option disables the interpretation of these escape char- + acters, 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 @@ -4181,190 +4188,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 shell option eexxeeccffaaiill is enabled, in which case it - returns failure. An interactive shell returns failure if the + not be executed for some reason, a non-interactive shell exits, + unless the shell option eexxeeccffaaiill is enabled, in which case it + returns failure. An interactive shell returns failure if the file cannot be executed. If _c_o_m_m_a_n_d is not specified, any redi- rections take effect in the current shell, and the return status - is 0. If there is a redirection error, the return status is 1. + 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 all names that are - exported in this shell 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 + 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 all names that are + exported in this shell 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 supplied with a _n_a_m_e that is not a func- tion. 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] - Fix Command. In the first form, a range of commands from _f_i_r_s_t - to _l_a_s_t is selected from the history list. _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 + Fix Command. In the first form, a range of commands from _f_i_r_s_t + to _l_a_s_t is selected from the history list. _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 cur- rent 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 + current command for listing (so that ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t otherwise. If _f_i_r_s_t is not spec- - ified it is set to the previous command for editing and -16 for + ified it is set to the previous command 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. A useful alias to use with this is - ``r="fc -s"'', so that typing ``r cc'' runs the last command + 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. 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 com- mand. - 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 - the first non-option argument, and nnaammee is set to ?. + 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 file name 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 file name 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 @@ -4380,44 +4387,44 @@ 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. - --aa Append the ``new'' history lines (history lines entered - since the beginning of the current bbaasshh session) to the + --aa Append the ``new'' history lines (history lines entered + since the beginning of the current bbaasshh session) 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 use them as the current history. - --ww Write the current history to the history file, overwrit- + --ww Write the current history to the history file, overwrit- ing 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 previous history line. 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- + 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- plied as an argument to --dd, or the history expansion supplied as an argument to --pp fails. @@ -4426,195 +4433,195 @@ 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 - status since the user was last notified of their status. - --pp List only the process ID of the job's process group + --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 leader. --rr Restrict output to running jobs. --ss Restrict output to 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 [_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. kkiillll returns true - if at least one signal was successfully sent, or false if an + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. 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- + variable _n_a_m_e to have a visible scope restricted to that func- tion and its children. With no operands, llooccaall writes a list of - local variables to the standard output. It is an error to use + 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, + llooccaall is used outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. llooggoouutt Exit a login shell. - mmaappffiillee [--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] + mmaappffiillee [--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 [--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] + rreeaaddaarrrraayy [--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: - --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 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 (except that \\cc terminates output, - backslashes in \\'', \\"", and \\?? are not removed, and octal + backslashes in \\'', \\"", and \\?? are not removed, and octal escapes beginning with \\00 may contain up to four digits). - %%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 + 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. - 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 + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working directory. With no arguments, exchanges the top two directories - and returns 0, unless the directory stack is empty. Arguments, + and returns 0, unless the directory stack is empty. Arguments, if supplied, have the following meanings: - --nn Suppresses the normal change of directory when adding - directories to the stack, so that only the stack is + --nn Suppresses the normal change of directory when 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. 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, 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, 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, with leftover words and their interven- - ing separators assigned to the last _n_a_m_e. If there are fewer + second _n_a_m_e, and so on, with leftover words and their interven- + ing separators 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 values. The characters in IIFFSS are used to - split the line into words. The backslash character (\\) may be - used to remove any special meaning for the next character read - and for line continuation. Options, if supplied, have the fol- + are assigned empty values. The characters in IIFFSS are used to + split the line into words. The backslash character (\\) may be + used to remove any special meaning for the next character read + and for line continuation. Options, if supplied, have the fol- lowing meanings: --aa _a_n_a_m_e The words are assigned to sequential indices of the array @@ -4622,132 +4629,132 @@ 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 + The first character of _d_e_l_i_m is used to terminate the input line, rather than newline. --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 + (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. --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 - waiting for a complete line of input, but honor a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the + rreeaadd returns after reading _n_c_h_a_r_s characters rather than + waiting for a complete line of input, but honor a delim- + 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 + 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. --pp _p_r_o_m_p_t Display _p_r_o_m_p_t on standard error, without a trailing new- 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 is not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_- - _o_u_t may be a decimal number with a fractional portion - following the decimal point. This option is only effec- - tive if rreeaadd is reading input from a terminal, pipe, or - other special file; it has no effect when reading from - regular files. If _t_i_m_e_o_u_t is 0, rreeaadd returns success if - input is available on the specified file descriptor, - failure otherwise. The exit status is greater than 128 + Cause rreeaadd to time out and return failure if a complete + line of input is not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_- + _o_u_t may be a decimal number with a fractional portion + following the decimal point. This option is only effec- + tive if rreeaadd is reading input from a terminal, pipe, or + other special file; it has no effect when reading from + regular files. If _t_i_m_e_o_u_t is 0, rreeaadd returns success if + input is available on the specified file descriptor, + failure otherwise. The exit status 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 return code is zero, unless end-of-file is - encountered, rreeaadd times out (in which case the return code is - greater than 128), or an invalid file descriptor is supplied as + able RREEPPLLYY. The return code is zero, unless end-of-file is + encountered, rreeaadd times out (in which case the return code is + greater than 128), or an invalid file descriptor is supplied as the argument to --uu. rreeaaddoonnllyy [--aaAAppff] [_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 no _n_a_m_e arguments are given, or if the --pp option is - supplied, a list of all readonly names is printed. 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 + 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 no _n_a_m_e arguments are given, or if the --pp option is + supplied, a list of all readonly names is printed. 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 + 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 exit with the return value specified by _n. - If _n is omitted, the return status is that of the last command - executed in the function body. If used outside a function, but - during execution of a script by the .. (ssoouurrccee) command, it + Causes a function to exit with the return value specified by _n. + If _n is omitted, the return status is that of the last command + executed in the function body. If used outside a function, but + during execution of a script by the .. (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 used outside a - function and not during execution of a script by .., the return + _n or the exit status of the last command executed within the + script as the exit status of the script. If used outside a + function and not during execution of a script by .., the return status is false. Any command associated with the RREETTUURRNN trap is - executed before execution resumes after the function or script. + executed before execution resumes after the function or script. - sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n] [_a_r_g ...] - sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n] [_a_r_g ...] - Without options, the name and value of each shell variable are + 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 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 _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- + 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 Automatically mark variables and functions which are - modified or created for export to the environment of + --aa Automatically mark variables and functions which are + modified or created 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 _s_u_b_s_h_e_l_l command enclosed in - parentheses, or one of the commands executed as part of - a command list enclosed by braces (see SSHHEELLLL GGRRAAMMMMAARR + --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 _s_u_b_s_h_e_l_l command enclosed in + parentheses, or one of the commands executed as part of + a command list enclosed by braces (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 &&&& or ||||, any - command in a pipeline but the last, or if the command's - return value is being inverted with !!. A trap on EERRRR, + 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 !!. 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. --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). Background pro- - cesses run in a separate process group and a line con- - taining their exit status is printed upon their comple- + --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). Background pro- + cesses run in a separate process group and a line con- + taining their exit status is printed upon their comple- tion. --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: @@ -4755,10 +4762,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 @@ -4772,8 +4779,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. @@ -4788,232 +4795,232 @@ 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 + 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). 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 follow symbolic links when - executing commands such as ccdd that change the current + --PP If set, the shell does not follow 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 variables controlling optional shell behav- ior. With no options, or with the --pp option, a list of all set- table options is displayed, with an indication of whether or not - each is set. The --pp option causes output to be displayed in a - form that may be reused as input. Other options have the fol- + each is set. The --pp option causes output to be displayed in a + form that may be reused as input. Other options have the fol- lowing 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, the dis- + If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, the dis- play is limited to those options which are set or unset, respec- - tively. Unless otherwise noted, the sshhoopptt options are disabled + tively. Unless otherwise noted, the sshhoopptt options are disabled (unset) by default. - The return status when listing options is zero if all _o_p_t_n_a_m_e_s - are enabled, non-zero otherwise. When setting or unsetting - options, the return status is zero unless an _o_p_t_n_a_m_e is not a + The return status when listing options is zero if all _o_p_t_n_a_m_e_s + are enabled, non-zero otherwise. When setting or unsetting + options, the return status is zero unless an _o_p_t_n_a_m_e is not a valid shell option. The list of sshhoopptt options is: - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- + 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 file name 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 file name is printed, and the com- + mand proceeds. This option is only used by interactive shells. cchheecckkhhaasshh If set, bbaasshh checks that a command found in the hash ta- - ble exists before trying to execute it. If a hashed - command no longer exists, a normal path search is per- + ble exists before trying to execute it. If a hashed + command no longer exists, a normal path search is per- formed. cchheecckkjjoobbss If set, bbaasshh lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs + jobs before exiting an interactive shell. If any jobs are running, this causes the exit to be deferred until a - second exit is attempted without an intervening command - (see JJOOBB CCOONNTTRROOLL above). The shell always postpones + second exit is attempted without an intervening command + (see JJOOBB CCOONNTTRROOLL above). The shell always postpones exiting if any jobs are stopped. cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each command - and, if necessary, updates the values of LLIINNEESS and CCOOLL-- + If set, bbaasshh checks the window size after each command + and, if necessary, updates the values of LLIINNEESS and CCOOLL-- UUMMNNSS. - ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- - line command in the same history entry. This allows + 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. ccoommppaatt3311 If set, bbaasshh changes its behavior to that of version 3.1 with respect to quoted arguments to the conditional com- - mand's =~ operator. + mand's ==~~ operator. 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. + with respect to locale-specific string comparison when + using the conditional command's << and >> operators. 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 and + with respect to locale-specific string comparison when + using the conditional command's << and >> operators and the effect of interrupting a command list. ccoommppaatt4411 - @item compat41 If set, bbaasshh, when in posix mode, treats + @item compat41 If set, bbaasshh, 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 + 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. The default bash behav- ior remains as in previous versions. 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 + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in the results of pathname expansion. 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, behavior intended for use by debuggers is + If set, behavior 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), a call to + 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), a call to rreettuurrnn is simulated. - 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. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- @@ -5024,62 +5031,62 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. 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. 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. 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-- @@ -5087,47 +5094,47 @@ 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 or 1 depending on the evaluation of the - conditional expression _e_x_p_r. Each operator and operand must be - a separate argument. Expressions are composed of the primaries - described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. tteesstt does not + Return a status of 0 or 1 depending on the evaluation of the + conditional expression _e_x_p_r. Each operator and operand 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. !! _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. @@ -5144,59 +5151,59 @@ 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 - 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. - 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- @@ -5204,53 +5211,53 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a sim- ple command has a non-zero exit status, subject to 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, part of a - command executed in a &&&& or |||| list, or if the command's return - value is being inverted via !!. These are the same conditions + 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, part of a + command executed in a &&&& or |||| list, or if the command's return + value is being inverted via !!. These are the same conditions obeyed by the eerrrreexxiitt 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, not necessarily the + hashed, --pp and --PP print the hashed value, not necessarily 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 func- - tion lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true if + 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 func- + tion lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true if all of the arguments are found, false if any are not found. uulliimmiitt [--HHSSTTaabbccddeeffiillmmnnppqqrrssttuuvvxx [_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: @@ -5259,11 +5266,11 @@ 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 --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) @@ -5272,65 +5279,65 @@ 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 --TT The maximum number of threads If _l_i_m_i_t is given, it is the new value of the specified resource (the --aa option is display only). 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, - and --TT, --bb, --nn, and --uu, which are unscaled values. The return + is assumed. Values are in 1024-byte increments, except for --tt, + which is in seconds, --pp, which is in units of 512-byte blocks, + and --TT, --bb, --nn, and --uu, which are unscaled values. The return status is 0 unless an invalid option or argument is supplied, or an error occurs while setting a new limit. 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] [_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 no options are supplied, or the --vv option is given, each _n_a_m_e - refers to a shell variable. 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. Each unset vari- - able or function is removed from the environment passed to sub- - sequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANNDDOOMM, SSEECCOONNDDSS, - LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they - lose their special properties, even if they are subsequently + refers to a shell variable. 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. Each unset vari- + able or function is removed from the environment passed to sub- + sequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANNDDOOMM, SSEECCOONNDDSS, + LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they + lose their special properties, even if they are subsequently reset. The exit status is true unless a _n_a_m_e is readonly. wwaaiitt [_n _._._.] - Wait for each specified process and return its termination sta- - tus. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- - cesses are waited for, and the return status is zero. If _n - specifies a non-existent process or job, the return status is - 127. Otherwise, the return status is the exit status of the + Wait for each specified process and return its termination sta- + tus. Each _n may be a process ID or a job specification; if a + job spec is given, all processes in that job's pipeline are + waited for. If _n is not given, all currently active child pro- + cesses are waited for, and the return status is zero. If _n + specifies a non-existent process or job, the return status is + 127. Otherwise, the return status is the exit status of the last process or job waited for. 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 @@ -5339,16 +5346,16 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying command names containing // - +o specifying a file name containing a // as an argument to the .. + +o specifying a file name 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- @@ -5357,10 +5364,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 @@ -5370,14 +5377,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 _s_h(1), _k_s_h(1), _c_s_h(1) _e_m_a_c_s(1), _v_i(1) @@ -5393,7 +5400,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 @@ -5407,14 +5414,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: @@ -5425,7 +5432,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 @@ -5442,10 +5449,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. @@ -5454,4 +5461,4 @@ BBUUGGSS -GNU Bash-4.2 2010 July 21 BASH(1) +GNU Bash-4.2 2010 September 6 BASH(1) @@ -9366,8 +9366,8 @@ is .BR RETURN , the command .I arg -is executed each time a shell function or a script executed with the -\fB.\fP or \fBsource\fP builtins finishes executing. +is executed each time a shell function or a script executed with +the \fB.\fP or \fBsource\fP builtins finishes executing. .if t .sp 0.5 .if n .sp 1 If a diff --git a/doc/bash.html b/doc/bash.html index 7b12f5c0..3a1be6ba 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ </HEAD> <BODY><TABLE WIDTH=100%> <TR> -<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2010 July 21<TH ALIGN=RIGHT width=33%>BASH(1) +<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2010 September 6<TH ALIGN=RIGHT width=33%>BASH(1) </TR> </TABLE> <BR><A HREF="#index">Index</A> @@ -530,7 +530,7 @@ No other startup files are read. <B>Bash</B> attempts to determine when it is being run with its standard input -connected to a a network connection, as if by the remote shell +connected to a network connection, as when executed by the remote shell daemon, usually <I>rshd</I>, or the secure shell daemon <I>sshd</I>. If <B>bash</B> @@ -1200,7 +1200,7 @@ command (see below). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. -The process id of the shell spawned to execute the coprocess is +The process ID of the shell spawned to execute the coprocess is available as the value of the variable <I>NAME</I>_PID. The <B>wait</B> builtin command may be used to wait for the coprocess to terminate. @@ -1572,7 +1572,7 @@ builtin commands. In the context where an assignment statement is assigning a value to a shell variable or array index, the += operator can be used to append to or add to the variable's previous value. -When += is applied to a variable for which the integer attribute has been +When += is applied to a variable for which the <I>integer</I> attribute has been set, <I>value</I> is evaluated as an arithmetic expression and added to the variable's current value, which is also evaluated. When += is applied to an array variable using compound assignment (see @@ -1784,7 +1784,7 @@ This variable is read-only. <DT><B>BASHPID</B> <DD> -Expands to the process id of the current <B>bash</B> process. +Expands to the process ID of the current <B>bash</B> process. This differs from <B>$$</B> under certain circumstances, such as subshells that do not require <B>bash</B> to be re-initialized. <DT><B>BASH_ALIASES</B> @@ -2421,7 +2421,7 @@ If <B>bash</B> finds this variable in the environment when the shell starts with value <TT>t</TT>, -it assumes that the shell is running in an emacs shell buffer and disables +it assumes that the shell is running in an Emacs shell buffer and disables line editing. <DT><B>ENV</B> @@ -2704,14 +2704,15 @@ for printing selection lists. Automatically set upon receipt of a <DT><B>MAIL</B> <DD> -If this parameter is set to a file name and the +If this parameter is set to a file or directory name and the <FONT SIZE=-1><B>MAILPATH</B> </FONT> variable is not set, <B>bash</B> -informs the user of the arrival of mail in the specified file. +informs the user of the arrival of mail in the specified file or +Maildir-format directory. <DT><B>MAILCHECK</B> <DD> @@ -2947,8 +2948,8 @@ not arrive. <DT><B>TMPDIR</B> <DD> -If set, <B>Bash</B> uses its value as the name of a directory in which -<B>Bash</B> creates temporary files for the shell's use. +If set, <B>bash</B> uses its value as the name of a directory in which +<B>bash</B> creates temporary files for the shell's use. <DT><B>auto_resume</B> <DD> @@ -3438,7 +3439,7 @@ a level of variable indirection is introduced. expanded and that value is used in the rest of the substitution, rather than the value of <I>parameter</I> itself. This is known as <I>indirect expansion</I>. -The exceptions to this are the expansions of ${!<I>prefix</I>*} and +The exceptions to this are the expansions of ${<B>!\fPfIprefix</B><B>*</B>} and ${<B>!</B><I>name</I>[<I>@</I>]} described below. The exclamation point must immediately follow the left brace in order to introduce indirection. @@ -3507,7 +3508,7 @@ is substituted. <DT>${<I>parameter</I><B>:</B><I>offset</I><B>:</B><I>length</I>}<DD> -<B>Substring Expansion.</B> +<B>Substring Expansion</B>. Expands to up to <I>length</I> characters of <I>parameter</I> starting at the character specified by <I>offset</I>. If <I>length</I> is omitted, expands to the substring of @@ -3543,7 +3544,7 @@ prefixed to the list. <DT>${<B>!</B><I>prefix</I><B>@</B>}<DD> -<B>Names matching prefix.</B> +<B>Names matching prefix</B>. Expands to the names of variables whose names begin with <I>prefix</I>, separated by the first character of the <FONT SIZE=-1><B>IFS</B> @@ -3556,7 +3557,7 @@ variable name expands to a separate word. <DT>${<B>!</B><I>name</I>[<I>*</I>]}<DD> -<B>List of array keys.</B> +<B>List of array keys</B>. If <I>name</I> is an array variable, expands to the list of array indices (keys) assigned in <I>name</I>. If <I>name</I> is not an array, expands to 0 if <I>name</I> is set and null @@ -3564,7 +3565,7 @@ otherwise. When <I>@</I> is used and the expansion appears within double quotes, each key expands to a separate word. <DT>${<B>#</B><I>parameter</I>}<DD> -<B>Parameter length.</B> +<B>Parameter length</B>. The length in characters of the value of <I>parameter</I> is substituted. If <I>parameter</I> @@ -3590,7 +3591,7 @@ the value substituted is the number of elements in the array. <DT>${<I>parameter</I><B>##</B><I>word</I>}<DD> -<B>Remove matching prefix pattern.</B> +<B>Remove matching prefix pattern</B>. The <I>word</I> @@ -3630,7 +3631,7 @@ array in turn, and the expansion is the resultant list. <DT>${<I>parameter</I><B>%%</B><I>word</I>}<DD> -<B>Remove matching suffix pattern.</B> +<B>Remove matching suffix pattern</B>. The <I>word</I> is expanded to produce a pattern just as in pathname expansion. If the pattern matches a trailing portion of the expanded value of @@ -3664,7 +3665,7 @@ or the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. <DT>${<I>parameter</I><B>/</B><I>pattern</I><B>/</B><I>string</I>}<DD> -<B>Pattern substitution.</B> +<B>Pattern substitution</B>. The <I>pattern</I> is expanded to produce a pattern just as in pathname expansion. <I>Parameter</I> is expanded and the longest match of <I>pattern</I> @@ -3705,7 +3706,7 @@ array in turn, and the expansion is the resultant list. <DT>${<I>parameter</I><B>,</B><I>pattern</I>}<DD> <DT>${<I>parameter</I><B>,,</B><I>pattern</I>}<DD> -<B>Case modification.</B> +<B>Case modification</B>. This expansion modifies the case of alphabetic characters in <I>parameter</I>. The <I>pattern</I> is expanded to produce a pattern just as in pathname expansion. @@ -4885,7 +4886,7 @@ during its execution. The special parameter <B>#</B> -is updated to reflect the change. Special parameter 0 +is updated to reflect the change. Special parameter <B>0</B> is unchanged. The first element of the <FONT SIZE=-1><B>FUNCNAME</B> @@ -5104,7 +5105,7 @@ The value of a variable is evaluated as an arithmetic expression when it is referenced, or when a variable which has been given the <I>integer</I> attribute using <B>declare -i</B> is assigned a value. A null value evaluates to 0. -A shell variable need not have its integer attribute +A shell variable need not have its <I>integer</I> attribute turned on to be used in an expression. <P> @@ -5530,8 +5531,8 @@ cannot affect the shell's execution environment. <P> Subshells spawned to execute command substitutions inherit the value of -the <B>-e</B> option from the parent shell. When not in posix mode, -Bash clears the <B>-e</B> option in such subshells. +the <B>-e</B> option from the parent shell. When not in <I>posix</I> mode, +<B>bash</B> clears the <B>-e</B> option in such subshells. <P> If a command is followed by a <B>&</B> and job control is not active, the @@ -6196,7 +6197,7 @@ shell, unless the option is given at shell invocation. Line editing is also used when using the <B>-e</B> option to the <B>read</B> builtin. -By default, the line editing commands are similar to those of emacs. +By default, the line editing commands are similar to those of Emacs. A vi-style line editing interface is also available. Line editing can be enabled at any time using the <B>-o emacs</B> @@ -6227,7 +6228,7 @@ builtin. <P> -In this section, the emacs-style notation is used to denote +In this section, the Emacs-style notation is used to denote keystrokes. Control keys are denoted by C-<I>key</I>, e.g., C-n means Control-N. Similarly, <I>meta</I> @@ -6655,7 +6656,7 @@ mapped to <B>self-insert</B>. <DD> Controls whether readline begins with a set of key bindings similar -to <I>emacs</I> or <I>vi</I>. +to <I>Emacs</I> or <I>vi</I>. <B>editing-mode</B> can be set to either @@ -6685,12 +6686,12 @@ the meta key is used to send eight-bit characters. <DT><B>expand-tilde (Off)</B> <DD> -If set to <B>on</B>, tilde expansion is performed when readline +If set to <B>On</B>, tilde expansion is performed when readline attempts word completion. <DT><B>history-preserve-point (Off)</B> <DD> -If set to <B>on</B>, the history code attempts to place point at the +If set to <B>On</B>, the history code attempts to place point at the same location on each history line retrieved with <B>previous-history</B> or <B>next-history</B>. <DT><B>history-size (0)</B> @@ -6760,6 +6761,12 @@ names begin with a `.' (hidden files) when performing filename completion. If set to <B>Off</B>, the leading `.' must be supplied by the user in the filename to be completed. +<DT><B>menu-complete-display-prefix (Off)</B> + +<DD> +If set to <B>On</B>, menu completion displays the common prefix of the +list of possible completions (which may be empty) before cycling through +the list. <DT><B>output-meta (Off)</B> <DD> @@ -6779,7 +6786,7 @@ sorted horizontally in alphabetical order, rather than down the screen. <DT><B>revert-all-at-newline (Off)</B> <DD> -If set to <B>on</B>, readline will undo all changes to history lines +If set to <B>On</B>, readline will undo all changes to history lines before returning when <B>accept-line</B> is executed. By default, history lines may be modified and retain individual undo lists across calls to <B>readline</B>. @@ -6788,7 +6795,7 @@ calls to <B>readline</B>. <DD> This alters the default behavior of the completion functions. If set to -<B>on</B>, +<B>On</B>, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. @@ -6798,7 +6805,7 @@ matches to be listed immediately instead of ringing the bell. This alters the default behavior of the completion functions in a fashion similar to <B>show-all-if-ambiguous</B>. If set to -<B>on</B>, +<B>On</B>, words which have more than one possible completion without any possible partial completion (the possible completions don't share @@ -6872,7 +6879,7 @@ library sets the <I>application name</I>, and an initialization file can test for a particular value. This could be used to bind key sequences to functions useful for a specific program. For instance, the following command adds a -key sequence that quotes the current or previous word in Bash: +key sequence that quotes the current or previous word in <B>bash</B>: <P> <DL COMPACT><DT><DD> <PRE> @@ -7435,7 +7442,7 @@ of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to <B>TAB</B>, but is unbound by default. -<DT><B>menu-complete-rd</B> +<DT><B>menu-complete-backward</B> <DD> Identical to <B>menu-complete</B>, but moves backward through the list @@ -7617,7 +7624,7 @@ character. A negative count searches for previous occurrences. <DD> A character is read and point is moved to the previous occurrence of that character. A negative count searches for subsequent occurrences. -<DT><B>skip-csi-sequence ()</B> +<DT><B>skip-csi-sequence</B> <DD> Read enough characters to consume a multi-key sequence such as those @@ -7720,7 +7727,7 @@ If the command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. -If those searches to not result in a compspec, any compspec defined with +If those searches do not result in a compspec, any compspec defined with the <B>-D</B> option to <B>complete</B> is used as the default. <P> @@ -8199,6 +8206,8 @@ writing the history file. An event designator is a reference to a command line entry in the history list. +Unless the reference is absolute, events are relative to the current +position in the history list. <P> @@ -8221,7 +8230,7 @@ Refer to command line <DT><B>!-</B><I>n</I> <DD> -Refer to the current command line minus +Refer to the current command minus <I>n</I>. <DT><B>!!</B> @@ -8231,13 +8240,15 @@ Refer to the previous command. This is a synonym for `!-1'. <DT><B>!</B><I>string</I> <DD> -Refer to the most recent command starting with +Refer to the most recent command preceding the current position in the +history list starting with <I>string</I>. <DT><B>!?</B><I>string</I><B>[?]</B> <DD> -Refer to the most recent command containing +Refer to the most recent command preceding the current postition in the +history list containing <I>string</I>. The trailing <B>?</B> may be omitted if @@ -8247,7 +8258,7 @@ is followed immediately by a newline. <DT><B></B><FONT SIZE=+2><B>^</B></FONT><B></B><I>string1</I><FONT SIZE=+2>^</FONT><I>string2</I><FONT SIZE=+2>^</FONT> <DD> -Quick substitution. Repeat the last command, replacing +Quick substitution. Repeat the previous command, replacing <I>string1</I> with @@ -9826,7 +9837,7 @@ return value greater than zero. </FONT> is set to the index of the first non-option argument, -and <B>name</B> is set to ?. +and <I>name</I> is set to ?. <P> <B>getopts</B> @@ -10750,9 +10761,9 @@ function and not during execution of a script by <B>.</B>, the return status is false. Any command associated with the <B>RETURN</B> trap is executed before execution resumes after the function or script. -<DT><B>set</B> [<B>--abefhkmnptuvxBCEHPT</B>] [<B>-o</B> <I>option</I>] [<I>arg</I> ...]<DD> +<DT><B>set</B> [<B>--abefhkmnptuvxBCEHPT</B>] [<B>-o</B> <I>option-name</I>] [<I>arg</I> ...]<DD> -<DT><B>set</B> [<B>+abefhkmnptuvxBCEHPT</B>] [<B>+o</B> <I>option</I>] [<I>arg</I> ...]<DD> +<DT><B>set</B> [<B>+abefhkmnptuvxBCEHPT</B>] [<B>+o</B> <I>option-name</I>] [<I>arg</I> ...]<DD> Without options, the name and value of each shell variable are displayed in a format that can be reused as input @@ -11390,7 +11401,7 @@ If set, <B>bash</B> changes its behavior to that of version 3.1 with respect to quoted -arguments to the conditional command's =~ operator. +arguments to the conditional command's <B>=~</B> operator. <DT><B>compat32</B> <DD> @@ -11398,7 +11409,8 @@ If set, <B>bash</B> changes its behavior to that of version 3.2 with respect to locale-specific -string comparison when using the conditional command's < and > operators. +string comparison when using the conditional command's <B><</B> and <B>></B> +operators. <DT><B>compat40</B> <DD> @@ -11406,8 +11418,8 @@ If set, <B>bash</B> changes its behavior to that of version 4.0 with respect to locale-specific -string comparison when using the conditional command's < and > operators -and the effect of interrupting a command list. +string comparison when using the conditional command's <B><</B> and <B>></B> +operators and the effect of interrupting a command list. <DT><B>compat41</B> <DD> @@ -11958,8 +11970,8 @@ is the command <I>arg</I> -is executed each time a shell function or a script executed with the -<B>.</B> or <B>source</B> builtins finishes executing. +is executed each time a shell function or a script executed with +the <B>.</B> or <B>source</B> builtins finishes executing. <P> @@ -12432,7 +12444,7 @@ as an argument to the builtin command <DT>*<DD> -Specifying a filename containing a slash as an argument to the +specifying a filename containing a slash as an argument to the <B>-p</B> option to the @@ -12466,7 +12478,7 @@ options to the builtin command <DT>*<DD> -Using the <B>enable</B> builtin command to enable disabled shell builtins +using the <B>enable</B> builtin command to enable disabled shell builtins <DT>*<DD> specifying the <B>-p</B> @@ -12660,7 +12672,7 @@ There may be only one active coprocess at a time. <HR> <TABLE WIDTH=100%> <TR> -<TH ALIGN=LEFT width=33%>GNU Bash-4.2<TH ALIGN=CENTER width=33%>2010 July 21<TH ALIGN=RIGHT width=33%>BASH(1) +<TH ALIGN=LEFT width=33%>GNU Bash-4.2<TH ALIGN=CENTER width=33%>2010 September 6<TH ALIGN=RIGHT width=33%>BASH(1) </TR> </TABLE> <HR> @@ -12766,6 +12778,6 @@ There may be only one active coprocess at a time. </DL> <HR> This document was created by man2html from bash.1.<BR> -Time: 21 July 2010 08:54:57 EDT +Time: 25 October 2010 12:00:43 EDT </BODY> </HTML> diff --git a/doc/bash.pdf b/doc/bash.pdf Binary files differindex 362c3d76..8f296da3 100644 --- a/doc/bash.pdf +++ b/doc/bash.pdf diff --git a/doc/bash.ps b/doc/bash.ps index 213b5f18..1abbb210 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.19.2 -%%CreationDate: Wed Jul 21 08:54:49 2010 +%%CreationDate: Mon Oct 25 10:55:37 2010 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -330,7 +330,7 @@ F .475(xtended deb)-.15 F(ug-)-.2 E 144 686.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 F2(\255\255login)108 703.2 Q F0 (Equi)144 715.2 Q -.25(va)-.25 G(lent to).25 E F2<ad6c>2.5 E F0(.)A -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(1)203.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(1)192.615 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -452,7 +452,7 @@ F(ariable)-.25 E F3 -.27(BA)108 679.2 S(SH_ENV).27 E F0 1.01(in the en) 108 727.2 S 2.5(tt).2 G(he v)-2.5 E(alue of the)-.25 E F3 -.666(PA)2.5 G (TH)-.189 E F0 -.25(va)2.25 G (riable is not used to search for the \214le name.).25 E(GNU Bash-4.2)72 -768 Q(2010 July 21)148.175 E(2)203.165 E 0 Cg EP +768 Q(2010 September 6)137.625 E(2)192.615 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -501,23 +501,24 @@ E F0 .226(mode, as with the)3.256 F F1(\255\255posix)2.726 E F0 .226 F3(ENV)2.841 E F0 -.25(va)2.591 G .342(riable and commands are read and) .25 F -.15(exe)108 220.8 S(cuted from the \214le whose name is the e).15 E(xpanded v)-.15 E 2.5(alue. No)-.25 F(other startup \214les are read.) -2.5 E F1(Bash)108 237.6 Q F0 .644(attempts to determine when it is bein\ -g run with its standard input connected to a a netw)3.144 F .643 -(ork connec-)-.1 F .229(tion, as if by the remote shell daemon, usually) -108 249.6 R F2 -.1(rs)2.729 G(hd).1 E F0 2.729(,o)C 2.73(rt)-2.729 G .23 -(he secure shell daemon)-2.73 F F2(sshd)2.73 E F0 5.23(.I)C(f)-5.23 E F1 -(bash)2.73 E F0 .23(determines it)2.73 F .741(is being run in this f)108 -261.6 R .741(ashion, it reads and e)-.1 F -.15(xe)-.15 G .741 -(cutes commands from).15 F F2(~/.bashr)3.241 E(c)-.37 E F0 3.241(,i)C -3.241(ft)-3.241 G .741(hat \214le e)-3.241 F .741(xists and is read-) --.15 F 2.97(able. It)108 273.6 R .47(will not do this if in)2.97 F -.2 -(vo)-.4 G -.1(ke).2 G 2.97(da).1 G(s)-2.97 E F1(sh)2.97 E F0 5.47(.T)C -(he)-5.47 E F1<adad6e6f72>2.97 E(c)-.18 E F0 .47 -(option may be used to inhibit this beha)2.97 F(vior)-.2 E 2.97(,a)-.4 G -.47(nd the)-2.97 F F1<adad72>108 285.6 Q(c\214le)-.18 E F0 .886 -(option may be used to force another \214le to be read, b)3.387 F(ut)-.2 -E F2 -.1(rs)3.386 G(hd).1 E F0 .886(does not generally in)3.386 F -.2 -(vo)-.4 G 1.086 -.1(ke t).2 H .886(he shell).1 F +2.5 E F1(Bash)108 237.6 Q F0 .224(attempts to determine when it is bein\ +g run with its standard input connected to a netw)2.724 F .223 +(ork connection,)-.1 F .025(as when e)108 249.6 R -.15(xe)-.15 G .025 +(cuted by the remote shell daemon, usually).15 F F2 -.1(rs)2.525 G(hd).1 +E F0 2.525(,o)C 2.525(rt)-2.525 G .025(he secure shell daemon)-2.525 F +F2(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F1(bash)2.525 E F0(deter)2.525 +E(-)-.2 E .134(mines it is being run in this f)108 261.6 R .134 +(ashion, it reads and e)-.1 F -.15(xe)-.15 G .133(cutes commands from) +.15 F F2(~/.bashr)2.633 E(c)-.37 E F0 2.633(,i)C 2.633(ft)-2.633 G .133 +(hat \214le e)-2.633 F .133(xists and is)-.15 F 2.869(readable. It)108 +273.6 R .369(will not do this if in)2.869 F -.2(vo)-.4 G -.1(ke).2 G +2.869(da).1 G(s)-2.869 E F1(sh)2.869 E F0 5.369(.T)C(he)-5.369 E F1 +<adad6e6f72>2.869 E(c)-.18 E F0 .369 +(option may be used to inhibit this beha)2.869 F(vior)-.2 E 2.869(,a)-.4 +G(nd)-2.869 E(the)108 285.6 Q F1<adad72>2.606 E(c\214le)-.18 E F0 .106 +(option may be used to force another \214le to be read, b)2.606 F(ut)-.2 +E F2 -.1(rs)2.606 G(hd).1 E F0 .106(does not generally in)2.606 F -.2 +(vo)-.4 G .306 -.1(ke t).2 H .106(he shell).1 F (with those options or allo)108 297.6 Q 2.5(wt)-.25 G (hem to be speci\214ed.)-2.5 E 1.207 (If the shell is started with the ef)108 314.4 R(fecti)-.25 E 1.507 -.15 @@ -580,7 +581,7 @@ F1(Pipelines)87 691.2 Q F0(A)108 703.2 Q F2(pipeline)2.996 E F0 .496(is\ a sequence of one or more commands separated by one of the control ope\ rators)2.996 F F1(|)2.996 E F0(or)2.996 E F1(|&)2.996 E F0 5.496(.T)C (he)-5.496 E(format for a pipeline is:)108 715.2 Q(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(3)203.165 E 0 Cg EP +(2010 September 6)137.625 E(3)192.615 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -700,7 +701,7 @@ A({)108 703.2 Q F2(list)2.5 E F0 2.5(;})C F2(list)3.89 E F0 .401 (\))2.719 E F0(,)A F1({)2.719 E F0(and)2.719 E F1(})2.719 E F0(are)2.719 E F2 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E F0 .22 (and must occur where a reserv)2.72 F(ed)-.15 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(4)203.165 E 0 Cg EP +(2010 September 6)137.625 E(4)192.615 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -825,7 +826,7 @@ E F0(;)2.5 E F4(done)2.5 E F0 .424(The list of w)144 649.2 R .424 (follo)144 697.2 Q(wing)-.25 E F4(in)2.5 E F0 (results in an empty list, no commands are e)2.5 E -.15(xe)-.15 G (cuted, and the return status is 0.).15 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(5)203.165 E 0 Cg EP +(2010 September 6)137.625 E(5)192.615 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -978,7 +979,7 @@ F F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G 722.4 S .163(rd of the simple command.).1 F .163(When the coproc is e) 5.163 F -.15(xe)-.15 G .163(cuted, the shell creates an array v).15 F .163(ariable \(see)-.25 F F1(Arrays)2.663 E F0(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(6)203.165 E 0 Cg EP +(2010 September 6)137.625 E(6)192.615 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -1000,14 +1001,15 @@ R F1(command)3.417 E F0 .716 (mand \(see)108 132 R/F2 9/Times-Bold@0 SF(REDIRECTION)3.684 E F0(belo) 3.434 E 3.684(w\). The)-.25 F 1.183 (\214le descriptors can be utilized as ar)3.684 F 1.183 -(guments to shell commands)-.18 F .07(and redirections using standard w) -108 144 R .07(ord e)-.1 F 2.57(xpansions. The)-.15 F .07 -(process id of the shell spa)2.57 F .07(wned to e)-.15 F -.15(xe)-.15 G -.07(cute the copro-).15 F .632(cess is a)108 156 R -.25(va)-.2 G .631 -(ilable as the v).25 F .631(alue of the v)-.25 F(ariable)-.25 E F1 -.27 -(NA)3.131 G(ME).27 E F0 3.131(_PID. The)B/F3 10/Times-Bold@0 SF(wait) -3.131 E F0 -.2(bu)3.131 G .631(iltin command may be used to w).2 F(ait) --.1 E(for the coprocess to terminate.)108 168 Q +(guments to shell commands)-.18 F 1.796 +(and redirections using standard w)108 144 R 1.796(ord e)-.1 F 4.297 +(xpansions. The)-.15 F 1.797(process ID of the shell spa)4.297 F 1.797 +(wned to e)-.15 F -.15(xe)-.15 G 1.797(cute the).15 F .483 +(coprocess is a)108 156 R -.25(va)-.2 G .483(ilable as the v).25 F .483 +(alue of the v)-.25 F(ariable)-.25 E F1 -.27(NA)2.983 G(ME).27 E F0 +2.983(_PID. The)B/F3 10/Times-Bold@0 SF(wait)2.983 E F0 -.2(bu)2.983 G +.483(iltin command may be used to).2 F -.1(wa)108 168 S +(it for the coprocess to terminate.).1 E (The return status of a coprocess is the e)108 184.8 Q(xit status of) -.15 E F1(command)2.5 E F0(.)A F3(Shell Function De\214nitions)87 201.6 Q F0 2.697(As)108 213.6 S .198 @@ -1114,8 +1116,8 @@ F3(\\)3.328 E F0 3.328(,a)C .828(nd, when history e)-3.328 F .828 (double quote may be quoted within double quotes by pre-)-2.5 F .081 (ceding it with a backslash.)108 724.8 R .082(If enabled, history e) 5.082 F .082(xpansion will be performed unless an)-.15 F F3(!)2.582 E F0 -.082(appearing in double)5.082 F(GNU Bash-4.2)72 768 Q(2010 July 21) -148.175 E(7)203.165 E 0 Cg EP +.082(appearing in double)5.082 F(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(7)192.615 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -1216,15 +1218,15 @@ E F0(,)A F1(export)3.649 E F0(,)A F1 -.18(re)108 667.2 S(adonly).18 E F0 (x, the +=)-.15 F .257 (operator can be used to append to or add to the v)108 696 R(ariable') -.25 E 2.757(sp)-.55 G(re)-2.757 E .257(vious v)-.25 F 2.757(alue. When) --.25 F .257(+= is applied to a v)2.757 F(ariable)-.25 E .373 -(for which the inte)108 708 R .373(ger attrib)-.15 F .372 -(ute has been set,)-.2 F F3(value)2.872 E F0 .372(is e)2.872 F -.25(va) --.25 G .372(luated as an arithmetic e).25 F .372 +-.25 F .257(+= is applied to a v)2.757 F(ariable)-.25 E .361 +(for which the)108 708 R F3(inte)2.861 E -.1(ge)-.4 G(r).1 E F0(attrib) +2.861 E .361(ute has been set,)-.2 F F3(value)2.861 E F0 .361(is e)2.861 +F -.25(va)-.25 G .36(luated as an arithmetic e).25 F .36 (xpression and added to the)-.15 F -.25(va)108 720 S(riable').25 E 2.888 (sc)-.55 G .388(urrent v)-2.888 F .388(alue, which is also e)-.25 F -.25 (va)-.25 G 2.889(luated. When).25 F .389(+= is applied to an array v) 2.889 F .389(ariable using compound)-.25 F(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(8)203.165 E 0 Cg EP +(2010 September 6)137.625 E(8)192.615 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP @@ -1348,17 +1350,17 @@ F2(on)3.206 E F0(by)3.217 E F1(shopt)2.977 E F0 5.477(.I)C 2.977(ft) -.4 E(when)144 684 Q F1(bash)3.142 E F0 .642(starts up, each shell opti\ on 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 696 Q(ariable is read-only)-.25 -E(.)-.65 E(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(9)203.165 E 0 Cg -EP +E(.)-.65 E(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(9)192.615 E +0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SHPID).3 E F0 .36 -(Expands to the process id of the current)144 96 R F1(bash)2.861 E F0 -2.861(process. This)2.861 F(dif)2.861 E .361(fers from)-.25 F F1($$) -2.861 E F0 .361(under certain circum-)2.861 F +-.35 E/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SHPID).3 E F0 .187 +(Expands to the process ID of the current)144 96 R F1(bash)2.687 E F0 +2.688(process. This)2.688 F(dif)2.688 E .188(fers from)-.25 F F1($$) +2.688 E F0 .188(under certain circum-)2.688 F (stances, such as subshells that do not require)144 108 Q F1(bash)2.5 E F0(to be re-initialized.)2.5 E F1 -.3(BA)108 120 S(SH_ALIASES).3 E F0 1.195(An associati)144 132 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F @@ -1456,7 +1458,7 @@ F0(is)3.281 E(de\214ned in the \214le)144 588 Q F1(${B)2.5 E 144 702 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)24.74 E -.15 (ve)-.25 G(l.).15 E F1 -.3(BA)144 714 S(SH_VERSINFO[).3 E F0(3)A F1(])A F0(The b)24.74 E(uild v)-.2 E(ersion.)-.15 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(10)198.165 E 0 Cg EP +(2010 September 6)137.625 E(10)187.615 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP @@ -1565,7 +1567,7 @@ F(ariable)-.25 E .351(will not change the current directory)144 648 R (The element with inde)144 729.6 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 -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(11)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(11)187.615 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP @@ -1656,7 +1658,7 @@ s the operating system on which)144 622.8 R F3(bash)2.83 E F0 .33(is e) 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E F3(PWD)108 709.2 Q F0(The current w)12.67 E (orking directory as set by the)-.1 E F3(cd)2.5 E F0(command.)2.5 E -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(12)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(12)187.615 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP @@ -1756,7 +1758,7 @@ lists.).2 F(Automatically set upon receipt of a)144 679.2 Q F2(SIGWINCH) (in)144 715.2 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(acility \(see)-.1 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E(GNU Bash-4.2)72 -768 Q(2010 July 21)148.175 E(13)198.165 E 0 Cg EP +768 Q(2010 September 6)137.625 E(13)187.615 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP @@ -1766,7 +1768,7 @@ BP (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 10 /Courier@0 SF(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 108 Q +(ssumes that the)-2.536 F(shell is running in an Emacs shell b)144 108 Q (uf)-.2 E(fer and disables line editing.)-.25 E F1(ENV)108 120 Q F0 (Similar to)14.89 E/F3 9/Times-Bold@0 SF -.27(BA)2.5 G(SH_ENV).27 E/F4 9 /Times-Roman@0 SF(;)A F0(used when the shell is in)2.25 E -.2(vo)-.4 G @@ -1876,7 +1878,7 @@ F1(HOME)108 696 Q F0 1.27 -.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 720 S(lue of this v).25 E (ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(14)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(14)187.615 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP @@ -1946,12 +1948,13 @@ ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) (Used by the)5.99 F F1(select)3.718 E F0 -.2(bu)3.718 G 1.219(iltin com\ mand to determine the column length for printing selection lists.).2 F (Automatically set upon receipt of a)144 492 Q F3(SIGWINCH)2.5 E/F4 9 -/Times-Roman@0 SF(.)A F1(MAIL)108 504 Q F0 .188 -(If this parameter is set to a \214le name and the)8.78 F F3(MAILP)2.687 -E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.437 G .187(riable is not set,) -.25 F F1(bash)2.687 E F0 .187(informs the user)2.687 F(of the arri)144 -516 Q -.25(va)-.25 G 2.5(lo).25 G 2.5(fm)-2.5 G -(ail in the speci\214ed \214le.)-2.5 E F1(MAILCHECK)108 528 Q F0 .098 +/Times-Roman@0 SF(.)A F1(MAIL)108 504 Q F0 1.201 +(If this parameter is set to a \214le or directory name and the)8.78 F +F3(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 +(riable is not set,).25 F F1(bash)3.701 E F0 +(informs the user of the arri)144 516 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 528 Q F0 .098 (Speci\214es ho)144 540 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 @@ -1981,7 +1984,8 @@ F F3 .359(SHELL B)144 696 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0 (belo)2.609 E(w\).)-.25 E F3(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 708 Q -.15(xe)-.15 G(cuted.) -.15 E(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(15)198.165 E 0 Cg EP +.15 E(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(15)187.615 E 0 Cg +EP %%Page: 16 16 %%BeginPageSetup BP @@ -2094,20 +2098,20 @@ 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 721.2 S .546(it for input after issuing the primary prompt.).1 F F1(Bash)5.546 E F0 .546(terminates after w)3.046 F .546 -(aiting for that number of)-.1 F(GNU Bash-4.2)72 768 Q(2010 July 21) -148.175 E(16)198.165 E 0 Cg EP +(aiting for that number of)-.1 F(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(16)187.615 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E(seconds if input does not arri)144 84 Q -.15(ve)-.25 G(.).15 E/F1 -10/Times-Bold@0 SF(TMPDIR)108 100.8 Q F0 .274(If set,)144 112.8 R F1 -(Bash)2.774 E F0 .274(uses its v)2.774 F .274 -(alue as the name of a directory in which)-.25 F F1(Bash)2.773 E F0 .273 -(creates temporary \214les for the)2.773 F(shell')144 124.8 Q 2.5(su) --.55 G(se.)-2.5 E F1(auto_r)108 141.6 Q(esume)-.18 E F0 .53(This v)144 -153.6 R .53(ariable controls ho)-.25 F 3.03(wt)-.25 G .531 +10/Times-Bold@0 SF(TMPDIR)108 100.8 Q F0 .391(If set,)144 112.8 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 124.8 Q 2.5(su)-.55 +G(se.)-2.5 E F1(auto_r)108 141.6 Q(esume)-.18 E F0 .53(This v)144 153.6 +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 165.6 R .538(ord simple commands without redirections are treated as candidates\ @@ -2222,7 +2226,7 @@ F2(subscript)A F0 3.575(]}. The)B 1.076(braces are required to a)3.576 F (xpansion. If)-.15 F F2(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 -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(17)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(17)187.615 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP @@ -2368,7 +2372,7 @@ F0 3.042(,i)C(nclusi)-3.042 E -.15(ve)-.25 G 5.542(.N).15 G .542 t one)-.15 F 3.44(unquoted comma or a v)108 729.6 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 -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(18)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(18)187.615 E 0 Cg EP %%Page: 19 19 %%BeginPageSetup BP @@ -2483,18 +2487,19 @@ E(ameter)-.15 E F0 .264(is follo)3.494 F .264 .106(as the name of the v)2.606 F .106(ariable; this v)-.25 F(ari-)-.25 E .351(able is then e)108 676.8 R .351(xpanded and that v)-.15 F .352 (alue is used in the rest of the substitution, rather than the v)-.25 F -.352(alue of)-.25 F F2(par)2.852 E(ame-)-.15 E(ter)108 688.8 Q F0 2.52 -(itself. This)2.52 F .02(is kno)2.52 F .02(wn as)-.25 F F2(indir)2.52 E -.02(ect e)-.37 F(xpansion)-.2 E F0 5.019(.T)C .019(he e)-5.019 F .019 -(xceptions to this are the e)-.15 F .019(xpansions of ${!)-.15 F F2(pr)A -(e\214x)-.37 E F0 .019(*} and)B(${)108 700.8 Q F1(!)A F2(name)A F0([)A -F2(@)A F0 .762(]} described belo)B 4.563 -.65(w. T)-.25 H .763(he e).65 -F .763(xclamation point must immediately follo)-.15 F 3.263(wt)-.25 G -.763(he left brace in order to)-3.263 F(introduce indirection.)108 712.8 -Q .334(In each of the cases belo)108 729.6 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(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(19)198.165 E 0 Cg EP +.352(alue of)-.25 F F2(par)2.852 E(ame-)-.15 E(ter)108 688.8 Q F0 6.84 +(itself. This)6.84 F 4.34(is kno)6.84 F 4.34(wn as)-.25 F F2(indir)6.84 +E 4.34(ect e)-.37 F(xpansion)-.2 E F0 9.34(.T)C 4.34(he e)-9.34 F 4.34 +(xceptions to this are the e)-.15 F 4.34(xpansions of)-.15 F(${)108 +700.8 Q F1(!\\fPfIpr)A(e\214x*)-.18 E F0 3.244(}a)C .744(nd ${)-3.244 F +F1(!)A F2(name)A F0([)A F2(@)A F0 .744(]} described belo)B 4.544 -.65 +(w. T)-.25 H .745(he e).65 F .745 +(xclamation point must immediately follo)-.15 F 3.245(wt)-.25 G(he) +-3.245 E(left brace in order to introduce indirection.)108 712.8 Q .334 +(In each of the cases belo)108 729.6 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(GNU Bash-4.2)72 768 Q +(2010 September 6)137.625 E(19)187.615 E 0 Cg EP %%Page: 20 20 %%BeginPageSetup BP @@ -2537,21 +2542,20 @@ F1 .535(Display Err)144 225.6 R .535(or if Null or Unset)-.18 F F0 5.535 (xpan-)-.15 E(sion of)144 285.6 Q F2(wor)2.84 E(d)-.37 E F0 (is substituted.)3.27 E(${)108 297.6 Q F2(par)A(ameter)-.15 E F1(:)A F2 (of)A(fset)-.18 E F0(})A(${)108 309.6 Q F2(par)A(ameter)-.15 E F1(:)A F2 -(of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .797 -(Substring Expansion.)144 321.6 R F0 .796(Expands to up to)5.797 F F2 -(length)3.296 E F0 .796(characters of)3.296 F F2(par)3.296 E(ameter)-.15 -E F0 .796(starting at the character)3.296 F .228(speci\214ed by)144 -333.6 R F2(of)2.728 E(fset)-.18 E F0 5.228(.I)C(f)-5.228 E F2(length) -2.728 E F0 .229(is omitted, e)2.729 F .229(xpands to the substring of) --.15 F F2(par)2.729 E(ameter)-.15 E F0 .229(starting at the char)2.729 F -(-)-.2 E .433(acter speci\214ed by)144 345.6 R F2(of)2.933 E(fset)-.18 E -F0(.)A F2(length)5.433 E F0(and)2.933 E F2(of)2.933 E(fset)-.18 E F0 -.433(are arithmetic e)2.933 F .433(xpressions \(see)-.15 F/F3 9 -/Times-Bold@0 SF .432(ARITHMETIC EV)2.933 F(ALU-)-1.215 E -.855(AT)144 -357.6 S(ION).855 E F0(belo)2.925 E 3.175(w\). If)-.25 F F2(of)3.175 E -(fset)-.18 E F0 -.25(eva)3.175 G .676 -(luates to a number less than zero, the v).25 F .676 -(alue is used as an of)-.25 F .676(fset from)-.25 F .103 +(of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .797(Substring Expansion) +144 321.6 R F0 5.797(.E)C .796(xpands to up to)-5.797 F F2(length)3.296 +E F0 .796(characters of)3.296 F F2(par)3.296 E(ameter)-.15 E F0 .796 +(starting at the character)3.296 F .228(speci\214ed by)144 333.6 R F2 +(of)2.728 E(fset)-.18 E F0 5.228(.I)C(f)-5.228 E F2(length)2.728 E F0 +.229(is omitted, e)2.729 F .229(xpands to the substring of)-.15 F F2 +(par)2.729 E(ameter)-.15 E F0 .229(starting at the char)2.729 F(-)-.2 E +.433(acter speci\214ed by)144 345.6 R F2(of)2.933 E(fset)-.18 E F0(.)A +F2(length)5.433 E F0(and)2.933 E F2(of)2.933 E(fset)-.18 E F0 .433 +(are arithmetic e)2.933 F .433(xpressions \(see)-.15 F/F3 9/Times-Bold@0 +SF .432(ARITHMETIC EV)2.933 F(ALU-)-1.215 E -.855(AT)144 357.6 S(ION) +.855 E F0(belo)2.925 E 3.175(w\). If)-.25 F F2(of)3.175 E(fset)-.18 E F0 +-.25(eva)3.175 G .676(luates to a number less than zero, the v).25 F +.676(alue is used as an of)-.25 F .676(fset from)-.25 F .103 (the end of the v)144 369.6 R .103(alue of)-.25 F F2(par)2.603 E(ameter) -.15 E F0 5.103(.I)C(f)-5.103 E F2(length)2.603 E F0 -.25(eva)2.603 G .103(luates to a number less than zero, and).25 F F2(par)2.602 E(ameter) @@ -2590,44 +2594,46 @@ F F2(length)2.574 E F0 .074(positional parameters be)2.574 F .074 (is 0, and the positional parameters are used,)2.5 E F1($0)2.5 E F0 (is pre\214x)2.5 E(ed to the list.)-.15 E(${)108 506.4 Q F1(!)A F2(pr)A (e\214x)-.37 E F1(*)A F0(})A(${)108 518.4 Q F1(!)A F2(pr)A(e\214x)-.37 E -F1(@)A F0(})A F1 .085(Names matching pr)144 530.4 R(e\214x.)-.18 E F0 -.084(Expands to the names of v)5.085 F .084(ariables whose names be)-.25 -F .084(gin with)-.15 F F2(pr)2.584 E(e\214x)-.37 E F0 2.584(,s)C(epa-) --2.584 E .257(rated by the \214rst character of the)144 542.4 R F3(IFS) -2.757 E F0 .257(special v)2.507 F 2.757(ariable. When)-.25 F F2(@)2.758 -E F0 .258(is used and the e)2.758 F .258(xpansion appears)-.15 F +F1(@)A F0(})A F1 .085(Names matching pr)144 530.4 R(e\214x)-.18 E F0 +5.085(.E)C .084(xpands to the names of v)-5.085 F .084 +(ariables whose names be)-.25 F .084(gin with)-.15 F F2(pr)2.584 E +(e\214x)-.37 E F0 2.584(,s)C(epa-)-2.584 E .257 +(rated by the \214rst character of the)144 542.4 R F3(IFS)2.757 E F0 +.257(special v)2.507 F 2.757(ariable. When)-.25 F F2(@)2.758 E F0 .258 +(is used and the e)2.758 F .258(xpansion appears)-.15 F (within double quotes, each v)144 554.4 Q(ariable name e)-.25 E (xpands to a separate w)-.15 E(ord.)-.1 E(${)108 571.2 Q F1(!)A F2(name) A F0([)A F2(@)A F0(]})A(${)108 583.2 Q F1(!)A F2(name)A F0([)A F2(*)A F0 -(]})A F1 2.036(List of array k)144 595.2 R(eys.)-.1 E F0(If)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(xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G(s\)) -.15 E .595(assigned in)144 607.2 R F2(name)3.095 E F0 5.595(.I)C(f) --5.595 E F2(name)3.095 E F0 .595(is not an array)3.095 F 3.095(,e)-.65 G -.595(xpands to 0 if)-3.245 F F2(name)3.095 E F0 .596 +(]})A F1 2.036(List of array k)144 595.2 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(xpands to the list of array indices \(k)-.15 F +-.15(ey)-.1 G(s\)).15 E .595(assigned in)144 607.2 R F2(name)3.095 E F0 +5.595(.I)C(f)-5.595 E F2(name)3.095 E F0 .595(is not an array)3.095 F +3.095(,e)-.65 G .595(xpands to 0 if)-3.245 F F2(name)3.095 E F0 .596 (is set and null otherwise.)3.095 F(When)5.596 E F2(@)144 619.2 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 636 Q F1(#)A F2(par)A(ameter)-.15 E F0(})A F1 -.1(Pa)144 648 S .471 -(rameter length.).1 F F0 .471(The length in characters of the v)5.471 F -.471(alue of)-.25 F F2(par)2.971 E(ameter)-.15 E F0 .47(is substituted.) -2.97 F(If)5.47 E F2(par)4.22 E(ame-)-.15 E(ter)144 660 Q F0(is)4.438 E -F1(*)3.708 E F0(or)3.708 E F1(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 -F 1.208(alue substituted is the number of positional parameters.)-.25 F -(If)6.209 E F2(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F +(rameter length).1 F F0 5.471(.T)C .471 +(he length in characters of the v)-5.471 F .471(alue of)-.25 F F2(par) +2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)5.47 E F2(par) +4.22 E(ame-)-.15 E(ter)144 660 Q F0(is)4.438 E F1(*)3.708 E F0(or)3.708 +E F1(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 F 1.208 +(alue substituted is the number of positional parameters.)-.25 F(If) +6.209 E F2(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F (array name subscripted by)144 672 Q F1(*)2.5 E F0(or)2.5 E F1(@)2.5 E F0 2.5(,t)C(he v)-2.5 E (alue substituted is the number of elements in the array)-.25 E(.)-.65 E (${)108 688.8 Q F2(par)A(ameter)-.15 E F1(#)A F2(wor)A(d)-.37 E F0(})A (${)108 700.8 Q F2(par)A(ameter)-.15 E F1(##)A F2(wor)A(d)-.37 E F0(})A F1(Remo)144 712.8 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(The)6.196 E F2(wor)4.036 E(d)-.37 E -F0 1.196(is e)4.466 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(is e)4.466 F 1.196 (xpanded to produce a pattern just as in path-)-.15 F .151(name e)144 724.8 R 2.651(xpansion. If)-.15 F .152(the pattern matches the be)2.652 F .152(ginning of the v)-.15 F .152(alue of)-.25 F F2(par)2.652 E (ameter)-.15 E F0 2.652(,t).73 G .152(hen the result of)-2.652 F -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(20)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(20)187.615 E 0 Cg EP %%Page: 21 21 %%BeginPageSetup BP @@ -2652,8 +2658,8 @@ E(ameter)-.15 E F0(is)3.511 E F2(@)2.781 E F0(or)2.781 E F2(*)2.782 E F0 (xpansion is the resultant list.)-.15 E(${)108 148.8 Q F1(par)A(ameter) -.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 160.8 Q F1(par)A(ameter) -.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 172.8 Q .347 -.1 -(ve m)-.1 H .147(atching suf\214x patter).1 F(n.)-.15 E F0(The)5.147 E -F1(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F .146 +(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 184.8 S 3.088(pansion. If).15 F .588 (the pattern matches a trailing portion of the e)3.088 F .588(xpanded v) @@ -2677,8 +2683,8 @@ G(per)-2.741 E(-)-.2 E (ation is applied to each member of the array in turn, and the e)144 244.8 Q(xpansion is the resultant list.)-.15 E(${)108 261.6 Q F1(par)A (ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa) -144 273.6 S(tter).1 E 3.607(ns)-.15 G(ubstitution.)-3.607 E F0(The)6.107 -E F1(pattern)3.607 E F0 1.107(is e)3.607 F 1.106 +144 273.6 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 285.6 Q F1 -.8(Pa)6.033 G -.15(ra).8 G(meter).15 E F0 1.033 (is e)3.533 F 1.033(xpanded and the longest match of)-.15 F F1(pattern) @@ -2711,8 +2717,8 @@ F0 6.253(.I)C(f)-6.253 E F1(string)3.753 E F0 1.253(is null, matches of) -.15 E F2(^)A F1(pattern)A F0(})A(${)108 410.4 Q F1(par)A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108 422.4 Q F1(par)A(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 434.4 Q F1(par)A(ameter)-.15 E F2(,,)A F1 -(pattern)A F0(})A F2 .437(Case modi\214cation.)144 446.4 R F0 .437 -(This e)5.437 F .438 +(pattern)A F0(})A F2 .437(Case modi\214cation)144 446.4 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 458.4 Q F0 .814(is e)3.314 F .813 @@ -2763,8 +2769,8 @@ e \214rst backquote not preceded by a backslash terminates the command \ sub-)-5.315 F 5.766(stitution. When)108 722.4 R 3.266(using the $\() 5.766 F F1(command).833 E F0 5.766(\)f)1.666 G 3.266 (orm, all characters between the parentheses mak)-5.766 F 5.767(eu)-.1 G -5.767(pt)-5.767 G(he)-5.767 E(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 -E(21)198.165 E 0 Cg EP +5.767(pt)-5.767 G(he)-5.767 E(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(21)187.615 E 0 Cg EP %%Page: 22 22 %%BeginPageSetup BP @@ -2897,7 +2903,7 @@ E F0 .929(is enabled, the match is per)3.429 F(-)-.2 E .033 3.665 G -.55(.').63 G(')-.08 E F0 1.166 (character is not treated specially)6.165 F 6.166(.S)-.65 G 1.166 (ee the description of)-6.166 F F1(shopt)3.666 E F0(belo)3.666 E(w)-.25 -E(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(22)198.165 E 0 Cg EP +E(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(22)187.615 E 0 Cg EP %%Page: 23 23 %%BeginPageSetup BP @@ -3014,7 +3020,7 @@ F0(.)A(Composite patterns may be formed using one or more of the follo) .15 G(atterns)-2.5 E F2(!\()144 706.8 Q F3(pattern-list).833 E F2(\)) .833 E F0(Matches an)180 718.8 Q(ything e)-.15 E(xcept one of the gi) -.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(23)198.165 E 0 Cg EP +(2010 September 6)137.625 E(23)187.615 E 0 Cg EP %%Page: 24 24 %%BeginPageSetup BP @@ -3111,7 +3117,7 @@ hould be used with care, as the)108 650.4 R 3.447(ym)-.15 G .947 (he standard input \(\214le descriptor 0\) if)-2.5 E F3(n)2.86 E F0 (is not speci\214ed.)2.74 E (The general format for redirecting input is:)108 720 Q(GNU Bash-4.2)72 -768 Q(2010 July 21)148.175 E(24)198.165 E 0 Cg EP +768 Q(2010 September 6)137.625 E(24)187.615 E 0 Cg EP %%Page: 25 25 %%BeginPageSetup BP @@ -3198,7 +3204,7 @@ F0 .774(are quoted, the)4.044 F F1(delimiter)3.624 E F0 .774 (subjected to parameter e)108 722.4 R .695 (xpansion, command substitution, and arithmetic e)-.15 F 3.195 (xpansion. In)-.15 F .695(the latter case, the)3.195 F(GNU Bash-4.2)72 -768 Q(2010 July 21)148.175 E(25)198.165 E 0 Cg EP +768 Q(2010 September 6)137.625 E(25)187.615 E 0 Cg EP %%Page: 26 26 %%BeginPageSetup BP @@ -3300,8 +3306,8 @@ F1($)2.973 E F0(,)A F1<92>2.973 E F0(,)A(and)108 648 Q F1(=)3.612 E F0 (wing the alias is also check)-.25 E(ed for alias e)-.1 E(xpansion.)-.15 E(Aliases are created and listed with the)108 724.8 Q F1(alias)2.5 E F0 (command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F1 -(unalias)2.5 E F0(command.)2.5 E(GNU Bash-4.2)72 768 Q(2010 July 21) -148.175 E(26)198.165 E 0 Cg EP +(unalias)2.5 E F0(command.)2.5 E(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(26)187.615 E 0 Cg EP %%Page: 27 27 %%BeginPageSetup BP @@ -3364,8 +3370,9 @@ F .639(function is e)108 331.2 R -.15(xe)-.15 G .639(cuted, the ar).15 F (guments to the function become the positional parameters during its e) -.18 F -.15(xe)-.15 G(cution.).15 E .533(The special parameter)108 343.2 R F2(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 -(Special parameter 0 is unchanged.)5.532 F .532(The \214rst ele-)5.532 F -(ment of the)108 355.2 Q F1(FUNCN)2.5 E(AME)-.18 E F0 -.25(va)2.25 G +(Special parameter)5.532 F F2(0)3.032 E F0 .532(is unchanged.)3.032 F +.532(The \214rst ele-)5.532 F(ment of the)108 355.2 Q F1(FUNCN)2.5 E +(AME)-.18 E F0 -.25(va)2.25 G (riable is set to the name of the function while the function is e).25 E -.15(xe)-.15 G(cuting.).15 E 1.25(All other aspects of the shell e)108 372 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 @@ -3444,8 +3451,8 @@ F0(and)4.798 E F2(declar)108 712.8 Q(e)-.18 E F0 -.2(bu)2.706 G .206 F .205(gers with no)-.15 F 2.07(check for o)108 724.8 R -.15(ve)-.15 G (r\215o).15 E 3.37 -.65(w, t)-.25 H 2.07(hough di).65 F 2.07 (vision by 0 is trapped and \215agged as an error)-.25 F 7.07(.T)-.55 G -2.07(he operators and their)-7.07 F(GNU Bash-4.2)72 768 Q(2010 July 21) -148.175 E(27)198.165 E 0 Cg EP +2.07(he operators and their)-7.07 F(GNU Bash-4.2)72 768 Q +(2010 September 6)137.625 E(27)187.615 E 0 Cg EP %%Page: 28 28 %%BeginPageSetup BP @@ -3493,17 +3500,17 @@ F 1.008(xpression, shell v)-.15 F 1.007 (when it is referenced, or when a v)108 453.6 R 1.389 (ariable which has been gi)-.25 F -.15(ve)-.25 G 3.89(nt).15 G(he)-3.89 E F1(inte)3.89 E -.1(ge)-.4 G(r).1 E F0(attrib)3.89 E 1.39(ute using)-.2 -F F2(declar)3.89 E 3.89(e-)-.18 G(i)-3.89 E F0(is)3.89 E .344 -(assigned a v)108 465.6 R 2.844(alue. A)-.25 F .343(null v)2.843 F .343 -(alue e)-.25 F -.25(va)-.25 G .343(luates to 0.).25 F 2.843(As)5.343 G -.343(hell v)-2.843 F .343(ariable need not ha)-.25 F .643 -.15(ve i)-.2 -H .343(ts inte).15 F .343(ger attrib)-.15 F .343(ute turned on)-.2 F -(to be used in an e)108 477.6 Q(xpression.)-.15 E 1.406 -(Constants with a leading 0 are interpreted as octal numbers.)108 494.4 -R 3.906(Al)6.406 G 1.407(eading 0x or 0X denotes he)-3.906 F(xadecimal.) --.15 E .113(Otherwise, numbers tak)108 506.4 R 2.613(et)-.1 G .113 -(he form [)-2.613 F F1(base#)A F0 .112(]n, where the optional)B F1(base) -2.612 E F0 .112(is a decimal number between 2 and 64)2.612 F .533 +F F2(declar)3.89 E 3.89(e-)-.18 G(i)-3.89 E F0(is)3.89 E .333 +(assigned a v)108 465.6 R 2.832(alue. A)-.25 F .332(null v)2.832 F .332 +(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832(As)5.332 G +.332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 -.15(ve i)-.2 +H(ts).15 E F1(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib)2.832 E .332 +(ute turned on)-.2 F(to be used in an e)108 477.6 Q(xpression.)-.15 E +1.406(Constants with a leading 0 are interpreted as octal numbers.)108 +494.4 R 3.906(Al)6.406 G 1.407(eading 0x or 0X denotes he)-3.906 F +(xadecimal.)-.15 E .113(Otherwise, numbers tak)108 506.4 R 2.613(et)-.1 +G .113(he form [)-2.613 F F1(base#)A F0 .112(]n, where the optional)B F1 +(base)2.612 E F0 .112(is a decimal number between 2 and 64)2.612 F .533 (representing the arithmetic base, and)108 518.4 R F1(n)3.033 E F0 .533 (is a number in that base.)3.033 F(If)5.534 E F1(base#)3.034 E F0 .534 (is omitted, then base 10 is used.)3.034 F .916 @@ -3541,7 +3548,7 @@ G .234(luated \214rst and may).25 F -.15(ove)108 583.2 S Q(When used with)108 706.8 Q F2([[)2.5 E F0 2.5(,T)C(he)-2.5 E F2(<)2.5 E F0(and)2.5 E F2(>)2.5 E F0(operators sort le)2.5 E (xicographically using the current locale.)-.15 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(28)198.165 E 0 Cg EP +(2010 September 6)137.625 E(28)187.615 E 0 Cg EP %%Page: 29 29 %%BeginPageSetup BP @@ -3637,7 +3644,7 @@ F2(ar)144 696 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly) .15 E(.)-.65 E F2(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F2(ar)2.83 E(g2)-.37 E F0(may be positi)2.52 E .3 -.15(ve o)-.25 H 2.5(rn).15 G -2.25 -.15 (eg a)-2.5 H(ti).15 E .3 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(29)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(29)187.615 E 0 Cg EP %%Page: 30 30 %%BeginPageSetup BP @@ -3759,7 +3766,7 @@ e remainder of the \214rst line speci\214es an interpreter for the pro-) (interpreter name on the \214rst line of the program, follo)108 710.4 R 1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F (command ar)108 722.4 Q(guments, if an)-.18 E -.65(y.)-.15 G -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(30)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(30)187.615 E 0 Cg EP %%Page: 31 31 %%BeginPageSetup BP @@ -3833,15 +3840,15 @@ R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357 547.2 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 F3<ad65>3.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) -108 559.2 R(not in posix mode, Bash clears the)2.5 E F3<ad65>2.5 E F0 -(option in such subshells.)2.5 E .404(If a command is follo)108 576 R -.404(wed by a)-.25 F F3(&)2.904 E F0 .405(and job control is not acti) -2.904 F -.15(ve)-.25 G 2.905(,t).15 G .405(he def)-2.905 F .405 -(ault standard input for the command)-.1 F .198(is the empty \214le)108 -588 R F2(/de)2.698 E(v/null)-.15 E F0 5.198(.O)C .198(therwise, the in) --5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc).1 G .197 -(ommand inherits the \214le descriptors of the calling shell)-2.698 F -(as modi\214ed by redirections.)108 600 Q F1(ENVIR)72 616.8 Q(ONMENT) +108 559.2 R(not in)2.5 E F2(posix)2.5 E F0(mode,)2.5 E F3(bash)2.5 E F0 +(clears the)2.5 E F3<ad65>2.5 E F0(option in such subshells.)2.5 E .404 +(If a command is follo)108 576 R .404(wed by a)-.25 F F3(&)2.904 E F0 +.405(and job control is not acti)2.904 F -.15(ve)-.25 G 2.905(,t).15 G +.405(he def)-2.905 F .405(ault standard input for the command)-.1 F .198 +(is the empty \214le)108 588 R F2(/de)2.698 E(v/null)-.15 E F0 5.198(.O) +C .198(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc).1 G +.197(ommand inherits the \214le descriptors of the calling shell)-2.698 +F(as modi\214ed by redirections.)108 600 Q F1(ENVIR)72 616.8 Q(ONMENT) -.329 E F0 2.353(When a program is in)108 628.8 R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G 4.853(ti)-4.853 G 4.853(sg)-4.853 G -2.15 -.25(iv e) -4.853 H 4.853(na).25 G 4.853(na)-4.853 G 2.353 @@ -3871,7 +3878,7 @@ R 3.08(ye)-.15 G -.15(xe)-3.23 G .58 (airs remo)-2.801 F -.15(ve)-.15 G 2.801(db).15 G 2.801(yt)-2.801 G(he) -2.801 E F3(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3 (dditions via the)-2.8 F F3(export)2.8 E F0(and)2.8 E(GNU Bash-4.2)72 -768 Q(2010 July 21)148.175 E(31)198.165 E 0 Cg EP +768 Q(2010 September 6)137.625 E(31)187.615 E 0 Cg EP %%Page: 32 32 %%BeginPageSetup BP @@ -4004,7 +4011,7 @@ F1(bash)2.5 E F0(.)A .785(The shell associates a)108 712.8 R F2(job) (jobs)2.84 E F0 2.84(command. When)2.84 F F1(bash)2.84 E F0 .341 (starts a job asynchronously \(in the)2.84 F F2(bac)2.841 E(kgr)-.2 E (ound)-.45 E F0 .341(\), it prints a line).77 F(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(32)198.165 E 0 Cg EP +(2010 September 6)137.625 E(32)187.615 E 0 Cg EP %%Page: 33 33 %%BeginPageSetup BP @@ -4140,7 +4147,7 @@ F3(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F 1.825 F0(allo)4.326 E 1.826(ws these)-.25 F 1.499(prompt strings to be custom\ ized by inserting a number of backslash-escaped special characters that\ are)108 703.2 R(decoded as follo)108 715.2 Q(ws:)-.25 E(GNU Bash-4.2)72 -768 Q(2010 July 21)148.175 E(33)198.165 E 0 Cg EP +768 Q(2010 September 6)137.625 E(33)187.615 E 0 Cg EP %%Page: 34 34 %%BeginPageSetup BP @@ -4212,10 +4219,10 @@ F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) -.2(vo)-.4 G 3.709(cation. Line).2 F 1.208 (editing is also used when using the)3.709 F F1<ad65>3.708 E F0 1.208 (option to the)3.708 F F1 -.18(re)3.708 G(ad).18 E F0 -.2(bu)3.708 G -3.708(iltin. By).2 F(def)108 573.6 Q .949 -(ault, the line editing commands are similar to those of emacs.)-.1 F -3.45(Av)5.95 G .95(i-style line editing interf)-3.45 F .95(ace is also) --.1 F -.2(av)108 585.6 S 3.35(ailable. Line)-.05 F .85 +3.708(iltin. By).2 F(def)108 573.6 Q .851 +(ault, the line editing commands are similar to those of Emacs.)-.1 F +3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .852 +(ace is also)-.1 F -.2(av)108 585.6 S 3.35(ailable. Line)-.05 F .85 (editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the) -3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0 .85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E @@ -4225,9 +4232,9 @@ F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) (ine editing after the shell is running, use the)-3.263 F F1(+o)3.263 E (emacs)108 609.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1 (set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 626.4 Q -F0 .568(In this section, the emacs-style notation is used to denote k) -108 638.4 R -.15(ey)-.1 G(strok).15 E 3.067(es. Control)-.1 F -.1(ke) -3.067 G .567(ys are denoted by C\255)-.05 F F2 -.1(ke)C(y)-.2 E F0(,)A +F0 .463(In this section, the Emacs-style notation is used to denote k) +108 638.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) +2.963 G .463(ys are denoted by C\255)-.05 F F2 -.1(ke)C(y)-.2 E F0(,)A 1.152(e.g., C\255n means Control\255N.)108 650.4 R(Similarly)6.152 E(,) -.65 E F2(meta)4.032 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255) -.05 F F2 -.1(ke)C(y)-.2 E F0 3.653(,s)C 3.653(oM)-3.653 G 1.153 @@ -4252,8 +4259,8 @@ F0 .568(In this section, the emacs-style notation is used to denote k) (ument to a command that).18 F 2.938(acts in the forw)108 727.2 R 2.938 (ard direction \(e.g.,)-.1 F F1(kill\255line)5.438 E F0 5.438(\)c)C 2.938(auses that command to act in a backw)-5.438 F 2.938 -(ard direction.)-.1 F(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(34) -198.165 E 0 Cg EP +(ard direction.)-.1 F(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E +(34)187.615 E 0 Cg EP %%Page: 35 35 %%BeginPageSetup BP @@ -4361,7 +4368,7 @@ G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0 (ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F4 (Function Key 1)2.5 E F0(.)A (The full set of GNU Emacs style escape sequences is)108 710.4 Q -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(35)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(35)187.615 E 0 Cg EP %%Page: 36 36 %%BeginPageSetup BP @@ -4455,8 +4462,8 @@ n ellipsis when displaying possible completions.).25 E F1 the v)5.783 F .782(alue of this)-.25 F -.25(va)144 729.6 S .237 (riable, the user is ask).25 F .237(ed whether or not he wishes to vie) -.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G -.237(re simply listed)-2.737 F(GNU Bash-4.2)72 768 Q(2010 July 21) -148.175 E(36)198.165 E 0 Cg EP +.237(re simply listed)-2.737 F(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(36)187.615 E 0 Cg EP %%Page: 37 37 %%BeginPageSetup BP @@ -4475,10 +4482,10 @@ E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)-.4 G .613 (ord completion.)-.1 F .038 (Completion characters will be inserted into the)5.038 F(line as if the) 144 168 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 -(.)A F1(editing\255mode \(emacs\))108 180 Q F0 .252 -(Controls whether readline be)144 192 R .253(gins with a set of k)-.15 F -.553 -.15(ey b)-.1 H .253(indings similar to).15 F F2(emacs)2.753 E F0 -(or)2.753 E F2(vi)2.753 E F0(.)A F1(editing\255mode)5.253 E F0 +(.)A F1(editing\255mode \(emacs\))108 180 Q F0 .141 +(Controls whether readline be)144 192 R .141(gins with a set of k)-.15 F +.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0 +(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0 (can be set to either)144 204 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E F0(.)A F1(echo\255contr)108 216 Q(ol\255characters \(On\))-.18 E F0 1.211(When set to)144 228 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 @@ -4497,12 +4504,12 @@ G(s.).15 E F1(enable\255meta\255k)108 288 Q(ey \(On\))-.1 E F0 .64 (he terminal claims to support).15 F(when it is called.)144 312 Q (On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H 2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 -(expand\255tilde \(Off\))108 324 Q F0(If set to)144 336 Q F1(on)2.5 E F0 +(expand\255tilde \(Off\))108 324 Q F0(If set to)144 336 Q F1(On)2.5 E F0 2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w) -.15 E(ord completion.)-.1 E F1(history\255pr)108 348 Q(eser)-.18 E -.1 -(ve)-.1 G(\255point \(Off\)).1 E F0 1.492(If set to)144 360 R F1(on) -3.992 E F0 3.992(,t)C 1.493(he history code attempts to place point at \ -the same location on each history line)-3.992 F(retrie)144 372 Q -.15 +(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 360 R F1(On) +3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \ +the same location on each history line)-3.838 F(retrie)144 372 Q -.15 (ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G (ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1 (history\255size \(0\))108 384 Q F0 .463 @@ -4553,7 +4560,7 @@ E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1(mark\255dir)108 624 Q (ompleted names which are symbolic links to directories ha)-2.675 F .475 -.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 696 Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(37)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(37)187.615 E 0 Cg EP %%Page: 38 38 %%BeginPageSetup BP @@ -4567,414 +4574,419 @@ F .193(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457 (If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) -2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F (user in the \214lename to be completed.)144 120 Q F1 -(output\255meta \(Off\))108 132 Q F0 .506(If set to)144 144 R F1(On) -3.006 E F0 3.006(,r)C .507(eadline will display characters with the eig\ -hth bit set directly rather than as a meta-)-3.006 F(pre\214x)144 156 Q -(ed escape sequence.)-.15 E F1(page\255completions \(On\))108 168 Q F0 -.809(If set to)144 180 R F1(On)3.308 E F0 3.308(,r)C .808 -(eadline uses an internal)-3.308 F/F2 10/Times-Italic@0 SF(mor)3.308 E -(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 +(menu\255complete\255display\255pr)108 132 Q(e\214x \(Off\))-.18 E F0 +1.585(If set to)144 144 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ +ion displays the common pre\214x of the list of possible completions) +-4.085 F(\(which may be empty\) before c)144 156 Q +(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 168 Q F0 +.507(If set to)144 180 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \ +display characters with the eighth bit set directly rather than as a me\ +ta-)-3.007 F(pre\214x)144 192 Q(ed escape sequence.)-.15 E F1 +(page\255completions \(On\))108 204 Q F0 .808(If set to)144 216 R F1(On) +3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F/F2 10 +/Times-Italic@0 SF(mor)3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 (ager to display a screenful of possible comple-)-3.308 F -(tions at a time.)144 192 Q F1 -(print\255completions\255horizontally \(Off\))108 204 Q F0 1.318 -(If set to)144 216 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\ -play completions with matches sorted horizontally in alphabetical)-3.818 -F(order)144 228 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 -E F1 -2.29 -.18(re v)108 240 T(ert\255all\255at\255newline \(Off\)).08 E -F0 .873(If set to)144 252 R F1(on)3.373 E F0 3.373(,r)C .872 +(tions at a time.)144 228 Q F1 +(print\255completions\255horizontally \(Off\))108 240 Q F0 1.319 +(If set to)144 252 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\ +play completions with matches sorted horizontally in alphabetical)-3.819 +F(order)144 264 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 +E F1 -2.29 -.18(re v)108 276 T(ert\255all\255at\255newline \(Off\)).08 E +F0 .698(If set to)144 288 R F1(On)3.198 E F0 3.198(,r)C .699 (eadline will undo all changes to history lines before returning when) --3.373 F F1(accept\255line)3.372 E F0(is)3.372 E -.15(exe)144 264 S +-3.198 F F1(accept\255line)3.199 E F0(is)3.199 E -.15(exe)144 300 S 2.686(cuted. By).15 F(def)2.686 E .186 (ault, history lines may be modi\214ed and retain indi)-.1 F .186 -(vidual undo lists across calls to)-.25 F F1 -.18(re)144 276 S(adline) -.18 E F0(.)A F1(sho)108 288 Q(w\255all\255if\255ambiguous \(Off\))-.1 E -F0 .478(This alters the def)144 300 R .478(ault beha)-.1 F .478 -(vior of the completion functions.)-.2 F .477(If set to)5.477 F F1(on) -2.977 E F0 2.977(,w)C .477(ords which ha)-3.077 F .777 -.15(ve m)-.2 H +(vidual undo lists across calls to)-.25 F F1 -.18(re)144 312 S(adline) +.18 E F0(.)A F1(sho)108 324 Q(w\255all\255if\255ambiguous \(Off\))-.1 E +F0 .303(This alters the def)144 336 R .303(ault beha)-.1 F .304 +(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) +2.804 E F0 2.804(,w)C .304(ords which ha)-2.904 F .604 -.15(ve m)-.2 H (ore).15 E 1.264(than one possible completion cause the matches to be l\ -isted immediately instead of ringing the)144 312 R(bell.)144 324 Q F1 -(sho)108 336 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 -(This alters the def)144 348 R 5.346(ault beha)-.1 F 5.345 -(vior of the completion functions in a f)-.2 F 5.345(ashion similar to) --.1 F F1(sho)144 360 Q(w\255all\255if\255ambiguous)-.1 E F0 6.922(.I)C -4.422(fs)-6.922 G 1.922(et to)-4.422 F F1(on)4.422 E F0 4.422(,w)C 1.922 -(ords which ha)-4.522 F 2.223 -.15(ve m)-.2 H 1.923 -(ore than one possible completion).15 F 1.04(without an)144 372 R 3.54 +isted immediately instead of ringing the)144 348 R(bell.)144 360 Q F1 +(sho)108 372 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.345 +(This alters the def)144 384 R 5.345(ault beha)-.1 F 5.345 +(vior of the completion functions in a f)-.2 F 5.346(ashion similar to) +-.1 F F1(sho)144 396 Q(w\255all\255if\255ambiguous)-.1 E F0 6.691(.I)C +4.191(fs)-6.691 G 1.691(et to)-4.191 F F1(On)4.191 E F0 4.191(,w)C 1.691 +(ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 +(ore than one possible completion).15 F 1.039(without an)144 408 R 3.539 (yp)-.15 G 1.039 -(ossible partial completion \(the possible completions don')-3.54 F -3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\ -es to be listed immediately instead of ringing the bell.)144 384 Q F1 -(skip\255completed\255text \(Off\))108 396 Q F0 .094(If set to)144 408 R -F1(On)2.594 E F0 2.594(,t)C .095(his alters the def)-2.594 F .095 -(ault completion beha)-.1 F .095 -(vior when inserting a single match into the line.)-.2 F(It')144 420 Q -2.546(so)-.55 G .046(nly acti)-2.546 F .346 -.15(ve w)-.25 H .046 -(hen performing completion in the middle of a w).15 F 2.545(ord. If)-.1 -F .045(enabled, readline does not)2.545 F 1.394(insert characters from \ -the completion that match characters after point in the w)144 432 R -1.395(ord being com-)-.1 F(pleted, so portions of the w)144 444 Q +(ossible partial completion \(the possible completions don')-3.539 F +3.539(ts)-.18 G 1.04(hare a common pre\214x\))-3.539 F(cause the matche\ +s to be listed immediately instead of ringing the bell.)144 420 Q F1 +(skip\255completed\255text \(Off\))108 432 Q F0 .095(If set to)144 444 R +F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095 +(ault completion beha)-.1 F .094 +(vior when inserting a single match into the line.)-.2 F(It')144 456 Q +2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046 +(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1 +F .046(enabled, readline does not)2.546 F 1.394(insert characters from \ +the completion that match characters after point in the w)144 468 R +1.394(ord being com-)-.1 F(pleted, so portions of the w)144 480 Q (ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 -(visible\255stats \(Off\))108 456 Q F0 .847(If set to)144 468 R F1(On) +(visible\255stats \(Off\))108 492 Q F0 .846(If set to)144 504 R F1(On) 3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346 (st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846 (\(2\) is appended to the \214lename)B -(when listing possible completions.)144 480 Q F1 -(Readline Conditional Constructs)87 496.8 Q F0 .05 -(Readline implements a f)108 508.8 R .05(acility similar in spirit to t\ -he conditional compilation features of the C preprocessor)-.1 F .097 -(which allo)108 520.8 R .097(ws k)-.25 F .396 -.15(ey b)-.1 H .096 +(when listing possible completions.)144 516 Q F1 +(Readline Conditional Constructs)87 532.8 Q F0 .05 +(Readline implements a f)108 544.8 R .05(acility similar in spirit to t\ +he conditional compilation features of the C preprocessor)-.1 F .096 +(which allo)108 556.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096 (indings and v).15 F .096 -(ariable settings to be performed as the result of tests.)-.25 F .096 -(There are four parser)5.096 F(directi)108 532.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 549.6 Q F0(The)24.89 E F1($if)2.962 E -F0 .462(construct allo)2.962 F .463(ws bindings to be made based on the\ - editing mode, the terminal being used,)-.25 F .478 -(or the application using readline.)144 561.6 R .477(The te)5.477 F .477 +(ariable settings to be performed as the result of tests.)-.25 F .097 +(There are four parser)5.096 F(directi)108 568.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 585.6 Q F0(The)24.89 E F1($if)2.963 E +F0 .463(construct allo)2.963 F .462(ws bindings to be made based on the\ + editing mode, the terminal being used,)-.25 F .477 +(or the application using readline.)144 597.6 R .477(The te)5.477 F .477 (xt of the test e)-.15 F .477 (xtends to the end of the line; no characters)-.15 F -(are required to isolate it.)144 573.6 Q F1(mode)144 590.4 Q F0(The) -12.67 E F1(mode=)3.711 E F0 1.211(form of the)3.711 F F1($if)3.711 E F0 +(are required to isolate it.)144 609.6 Q F1(mode)144 626.4 Q F0(The) +12.67 E F1(mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0 (directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211 (sed to test whether readline is in emacs or vi)-3.711 F 3.065 -(mode. This)180 602.4 R .565(may be used in conjunction with the)3.065 F +(mode. This)180 638.4 R .565(may be used in conjunction with the)3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to) -3.065 F .735(set bindings in the)180 614.4 R F2(emacs\255standar)3.235 E +3.065 F .735(set bindings in the)180 650.4 R F2(emacs\255standar)3.235 E (d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)3.235 E F0 -.1(ke)3.235 G .735 -(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 626.4 -Q F1(term)144 643.2 Q F0(The)15.46 E F1(term=)3.197 E F0 .696 -(form may be used to include terminal-speci\214c k)3.197 F .996 -.15 -(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 655.2 R +(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 662.4 +Q F1(term)144 679.2 Q F0(The)15.46 E F1(term=)3.196 E F0 .696 +(form may be used to include terminal-speci\214c k)3.196 F .996 -.15 +(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 691.2 R .954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154 (sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1 -(wo)3.154 G .654(rd on the right side of).1 F(the)180 667.2 Q F1(=)3.232 -E F0 .732(is tested ag)3.232 F .732(ainst the both full name of the ter\ +(wo)3.154 G .654(rd on the right side of).1 F(the)180 703.2 Q F1(=)3.231 +E F0 .731(is tested ag)3.231 F .732(ainst the both full name of the ter\ minal and the portion of the terminal)-.05 F(name before the \214rst)180 -679.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 +715.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 (to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0 -2.5(,f).77 G(or instance.)-2.5 E F1(application)144 696 Q F0(The)180 708 -Q F1(application)3.003 E F0 .503 -(construct is used to include application-speci\214c settings.)3.003 F -.503(Each program)5.503 F .114(using the readline library sets the)180 -720 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 -(nd an initialization \214le can test for a)-2.614 F(GNU Bash-4.2)72 768 -Q(2010 July 21)148.175 E(38)198.165 E 0 Cg EP +2.5(,f).77 G(or instance.)-2.5 E(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(38)187.615 E 0 Cg EP %%Page: 39 39 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .5(particular v)180 84 R 3(alue. This)-.25 F .501 -(could be used to bind k)3 F .801 -.15(ey s)-.1 H .501 -(equences to functions useful for a spe-).15 F .397(ci\214c program.)180 -96 R -.15(Fo)5.397 G 2.896(ri).15 G .396(nstance, the follo)-2.896 F -.396(wing command adds a k)-.25 F .696 -.15(ey s)-.1 H .396 -(equence that quotes the).15 F(current or pre)180 108 Q(vious w)-.25 E -(ord in Bash:)-.1 E/F1 10/Times-Bold@0 SF($if)180 132 Q F0(Bash)2.5 E -2.5(#Q)180 144 S(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E -("\\C\255xq": "\\eb\\"\\ef\\"")180 156 Q F1($endif)180 168 Q($endif)108 -184.8 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E +-.35 E/F1 10/Times-Bold@0 SF(application)144 84 Q F0(The)180 96 Q F1 +(application)3.003 E F0 .503 +(construct is used to include application-speci\214c settings.)3.003 F +.503(Each program)5.503 F .114(using the readline library sets the)180 +108 R/F2 10/Times-Italic@0 SF .114(application name)2.614 F F0 2.614(,a) +C .114(nd an initialization \214le can test for a)-2.614 F .501 +(particular v)180 120 R 3.001(alue. This)-.25 F .501 +(could be used to bind k)3.001 F .801 -.15(ey s)-.1 H .5 +(equences to functions useful for a spe-).15 F .396(ci\214c program.)180 +132 R -.15(Fo)5.396 G 2.896(ri).15 G .396(nstance, the follo)-2.896 F +.396(wing command adds a k)-.25 F .696 -.15(ey s)-.1 H .397 +(equence that quotes the).15 F(current or pre)180 144 Q(vious w)-.25 E +(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 168 Q F0(Bash)2.5 E 2.5 +(#Q)180 180 S(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E +("\\C\255xq": "\\eb\\"\\ef\\"")180 192 Q F1($endif)180 204 Q($endif)108 +220.8 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E (xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1($else) -108 201.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0 +108 237.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0 (directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G -(cuted if the test f).15 E(ails.)-.1 E F1($include)108 218.4 Q F0 .356 -(This directi)144 230.4 R .656 -.15(ve t)-.25 H(ak).15 E .356 -(es a single \214lename as an ar)-.1 F .357 +(cuted if the test f).15 E(ails.)-.1 E F1($include)108 254.4 Q F0 .357 +(This directi)144 266.4 R .657 -.15(ve t)-.25 H(ak).15 E .357 +(es a single \214lename as an ar)-.1 F .356 (gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) -144 242.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 --.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5 -E(c)-.37 E F0(:)A F1($include)144 266.4 Q F2(/etc/inputr)5.833 E(c)-.37 -E F1(Sear)87 283.2 Q(ching)-.18 E F0 .835(Readline pro)108 295.2 R .835 +144 278.4 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 302.4 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 319.2 Q +(ching)-.18 E F0 .834(Readline pro)108 331.2 R .834 (vides commands for searching through the command history \(see)-.15 F -/F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E -.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 307.2 Q +/F3 9/Times-Bold@0 SF(HIST)3.335 E(OR)-.162 E(Y)-.315 E F0(belo)3.085 E +.835(w\) for lines)-.25 F(containing a speci\214ed string.)108 343.2 Q (There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E (emental)-.37 E F0(and)3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 -E .697(Incremental searches be)108 324 R .697 +E .698(Incremental searches be)108 360 R .698 (gin before the user has \214nished typing the search string.)-.15 F -.698(As each character of the)5.698 F .113 -(search string is typed, readline displays the ne)108 336 R .112 +.697(As each character of the)5.697 F .112 +(search string is typed, readline displays the ne)108 372 R .112 (xt entry from the history matching the string typed so f)-.15 F(ar)-.1 -E 5.112(.A)-.55 G(n)-5.112 E .542 -(incremental search requires only as man)108 348 R 3.042(yc)-.15 G .542 -(haracters as needed to \214nd the desired history entry)-3.042 F 5.542 -(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224(acters present in the v) -108 360 R .224(alue of the)-.25 F F1(isear)2.724 E(ch-terminators)-.18 E +E 5.113(.A)-.55 G(n)-5.113 E .542 +(incremental search requires only as man)108 384 R 3.042(yc)-.15 G .542 +(haracters as needed to \214nd the desired history entry)-3.042 F 5.541 +(.T)-.65 G .541(he char)-5.541 F(-)-.2 E .224(acters present in the v) +108 396 R .224(alue of the)-.25 F F1(isear)2.724 E(ch-terminators)-.18 E F0 -.25(va)2.724 G .224 (riable are used to terminate an incremental search.).25 F .66 -(If that v)108 372 R .66(ariable has not been assigned a v)-.25 F .66 +(If that v)108 408 R .66(ariable has not been assigned a v)-.25 F .66 (alue the Escape and Control-J characters will terminate an incre-)-.25 -F .097(mental search.)108 384 R .096(Control-G will abort an incrementa\ -l search and restore the original line.)5.097 F .096(When the search is) -5.096 F(terminated, the history entry containing the search string beco\ -mes the current line.)108 396 Q 2.938 -.8(To \214)108 412.8 T 1.339(nd \ +F .096(mental search.)108 420 R .096(Control-G will abort an incrementa\ +l search and restore the original line.)5.096 F .097(When the search is) +5.097 F(terminated, the history entry containing the search string beco\ +mes the current line.)108 432 Q 2.939 -.8(To \214)108 448.8 T 1.339(nd \ other matching entries in the history list, type Control-S or Control-R\ - as appropriate.).8 F 1.339(This will)6.339 F .675(search backw)108 -424.8 R .675(ard or forw)-.1 F .675(ard in the history for the ne)-.1 F -.674(xt entry matching the search string typed so f)-.15 F(ar)-.1 E -5.674(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 436.8 R .474 -.15 + as appropriate.).8 F 1.338(This will)6.338 F .674(search backw)108 +460.8 R .674(ard or forw)-.1 F .674(ard in the history for the ne)-.1 F +.675(xt entry matching the search string typed so f)-.15 F(ar)-.1 E +5.675(.A)-.55 G -.15(ny)-5.675 G .175(other k)108 472.8 R .475 -.15 (ey s)-.1 H .174 (equence bound to a readline command will terminate the search and e).15 -F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E -.541(instance, a)108 448.8 R F2(ne)3.041 E(wline)-.15 E F0 .541 -(will terminate the search and accept the line, thereby e)3.041 F -.15 -(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 460.8 -Q .653(Readline remembers the last incremental search string.)108 477.6 -R .653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) --3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E -(ing characters de\214ning a ne)108 489.6 Q 2.5(ws)-.25 G +F -.15(xe)-.15 G .174(cute that command.).15 F -.15(Fo)5.174 G(r).15 E +.54(instance, a)108 484.8 R F2(ne)3.04 E(wline)-.15 E F0 .541 +(will terminate the search and accept the line, thereby e)3.04 F -.15 +(xe)-.15 G .541(cuting the command from the).15 F(history list.)108 +496.8 Q .653(Readline remembers the last incremental search string.)108 +513.6 R .653(If tw)5.653 F 3.153(oC)-.1 G .653 +(ontrol-Rs are typed without an)-3.153 F 3.152(yi)-.15 G(nterv)-3.152 E +(en-)-.15 E(ing characters de\214ning a ne)108 525.6 Q 2.5(ws)-.25 G (earch string, an)-2.5 E 2.5(yr)-.15 G(emembered search string is used.) -2.5 E .567(Non-incremental searches read the entire search string befo\ -re starting to search for matching history lines.)108 506.4 R(The searc\ +re starting to search for matching history lines.)108 542.4 R(The searc\ h string may be typed by the user or be part of the contents of the cur\ -rent line.)108 518.4 Q F1(Readline Command Names)87 535.2 Q F0 1.391 -(The follo)108 547.2 R 1.391 +rent line.)108 554.4 Q F1(Readline Command Names)87 571.2 Q F0 1.392 +(The follo)108 583.2 R 1.391 (wing is a list of the names of the commands and the def)-.25 F 1.391 (ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F -3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 559.2 R .122 -(names without an accompan)2.622 F .122(ying k)-.15 F .421 -.15(ey s)-.1 -H .121(equence are unbound by def).15 F 2.621(ault. In)-.1 F .121 -(the follo)2.621 F(wing)-.25 E(descriptions,)108 571.2 Q F2(point)3.41 E -F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E -F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db) -.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 583.2 Q F0 2.5 +3.891(ya)-.15 G(re)-3.891 E 2.621(bound. Command)108 595.2 R .121 +(names without an accompan)2.621 F .121(ying k)-.15 F .421 -.15(ey s)-.1 +H .122(equence are unbound by def).15 F 2.622(ault. In)-.1 F .122 +(the follo)2.622 F(wing)-.25 E(descriptions,)108 607.2 Q F2(point)3.411 +E F0 .911(refers to the current cursor position, and)3.411 F F2(mark) +3.411 E F0 .91(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.41 +(db).15 G 3.41(yt)-3.41 G(he)-3.41 E F1(set\255mark)108 619.2 Q F0 2.5 (command. The)2.5 F(te)2.5 E (xt between the point and mark is referred to as the)-.15 E F2 -.37(re) -2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 600 Q(or Mo)-.25 E(ving)-.1 E -(beginning\255of\255line \(C\255a\))108 612 Q F0(Mo)144 624 Q .3 -.15 +2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 636 Q(or Mo)-.25 E(ving)-.1 E +(beginning\255of\255line \(C\255a\))108 648 Q F0(Mo)144 660 Q .3 -.15 (ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1 -(end\255of\255line \(C\255e\))108 636 Q F0(Mo)144 648 Q .3 -.15(ve t) --.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 660 S -(rward\255char \(C\255f\)).25 E F0(Mo)144 672 Q .3 -.15(ve f)-.15 H(orw) -.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108 -684 Q F0(Mo)144 696 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(39)198.165 E 0 Cg EP +(end\255of\255line \(C\255e\))108 672 Q F0(Mo)144 684 Q .3 -.15(ve t) +-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 696 S +(rward\255char \(C\255f\)).25 E F0(Mo)144 708 Q .3 -.15(ve f)-.15 H(orw) +.15 E(ard a character)-.1 E(.)-.55 E(GNU Bash-4.2)72 768 Q +(2010 September 6)137.625 E(39)187.615 E 0 Cg EP %%Page: 40 40 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF -.25(fo)108 84 S(rward\255w).25 E -(ord \(M\255f\))-.1 E F0(Mo)144 96 Q .823 -.15(ve f)-.15 H(orw).15 E -.523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W)-.1 F -.522(ords are composed of alphanumeric characters \(let-)-.8 F -(ters and digits\).)144 108 Q F1(backward\255w)108 120 Q(ord \(M\255b\)) --.1 E F0(Mo)144 132 Q 1.71 -.15(ve b)-.15 H 1.41 +-.35 E/F1 10/Times-Bold@0 SF(backward\255char \(C\255b\))108 84 Q F0(Mo) +144 96 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo) +108 108 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 120 Q .822 +-.15(ve f)-.15 H(orw).15 E .522(ard to the end of the ne)-.1 F .523 +(xt w)-.15 F 3.023(ord. W)-.1 F .523 +(ords are composed of alphanumeric characters \(let-)-.8 F +(ters and digits\).)144 132 Q F1(backward\255w)108 144 Q(ord \(M\255b\)) +-.1 E F0(Mo)144 156 Q 1.71 -.15(ve b)-.15 H 1.41 (ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91 (ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F -(characters \(letters and digits\).)144 144 Q F1(shell\255f)108 156 Q -(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 168 Q .784 -.15(ve f)-.15 H(orw) +(characters \(letters and digits\).)144 168 Q F1(shell\255f)108 180 Q +(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 192 Q .784 -.15(ve f)-.15 H(orw) .15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984(ord. W) -.1 F .484(ords are delimited by non-quoted shell metacharac-)-.8 F -(ters.)144 180 Q F1(shell\255backward\255w)108 192 Q(ord)-.1 E F0(Mo)144 -204 Q .908 -.15(ve b)-.15 H .609(ack to the start of the current or pre) -.15 F .609(vious w)-.25 F 3.109(ord. W)-.1 F .609 -(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 216 Q -F1(clear\255scr)108 228 Q(een \(C\255l\))-.18 E F0 .993 -(Clear the screen lea)144 240 R .993 +(ters.)144 204 Q F1(shell\255backward\255w)108 216 Q(ord)-.1 E F0(Mo)144 +228 Q .909 -.15(ve b)-.15 H .609(ack to the start of the current or pre) +.15 F .609(vious w)-.25 F 3.109(ord. W)-.1 F .608 +(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 240 Q +F1(clear\255scr)108 252 Q(een \(C\255l\))-.18 E F0 .993 +(Clear the screen lea)144 264 R .993 (ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G .993(th an ar).4 F .993(gument, refresh the)-.18 F -(current line without clearing the screen.)144 252 Q F1 -.18(re)108 264 +(current line without clearing the screen.)144 276 Q F1 -.18(re)108 288 S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 -276 Q F1(Commands f)87 292.8 Q(or Manipulating the History)-.25 E -(accept\255line \(Newline, Retur)108 304.8 Q(n\))-.15 E F0 .158 -(Accept the line re)144 316.8 R -.05(ga)-.15 G .158 +300 Q F1(Commands f)87 316.8 Q(or Manipulating the History)-.25 E +(accept\255line \(Newline, Retur)108 328.8 Q(n\))-.15 E F0 .159 +(Accept the line re)144 340.8 R -.05(ga)-.15 G .159 (rdless of where the cursor is.).05 F .158(If this line is non-empty) -5.158 F 2.659(,a)-.65 G .159(dd it to the history list)-2.659 F .699 -(according to the state of the)144 328.8 R/F2 9/Times-Bold@0 SF +5.158 F 2.658(,a)-.65 G .158(dd it to the history list)-2.658 F .699 +(according to the state of the)144 352.8 R/F2 9/Times-Bold@0 SF (HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F .699(the line is a modi\214ed history line, then)3.199 F -(restore the history line to its original state.)144 340.8 Q F1(pr)108 -352.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 -(Fetch the pre)144 364.8 Q(vious command from the history list, mo)-.25 -E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 376.8 -Q F0(Fetch the ne)144 388.8 Q(xt command from the history list, mo)-.15 +(restore the history line to its original state.)144 364.8 Q F1(pr)108 +376.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 388.8 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 400.8 +Q F0(Fetch the ne)144 412.8 Q(xt command from the history list, mo)-.15 E(ving forw)-.15 E(ard in the list.)-.1 E F1 -(beginning\255of\255history \(M\255<\))108 400.8 Q F0(Mo)144 412.8 Q .3 +(beginning\255of\255history \(M\255<\))108 424.8 Q F0(Mo)144 436.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.) --.65 E F1(end\255of\255history \(M\255>\))108 424.8 Q F0(Mo)144 436.8 Q +-.65 E F1(end\255of\255history \(M\255>\))108 448.8 Q F0(Mo)144 460.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5 (,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18 -(re v)108 448.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 -1.47(Search backw)144 460.8 R 1.471 -(ard starting at the current line and mo)-.1 F 1.471 +(re v)108 472.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 +1.471(Search backw)144 484.8 R 1.471 +(ard starting at the current line and mo)-.1 F 1.47 (ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 472.8 Q F1 -.25(fo)108 484.8 S -(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 -(Search forw)144 496.8 R 1.132(ard starting at the current line and mo) --.1 F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary) --.25 F(.)-.65 E(This is an incremental search.)144 508.8 Q F1 -(non\255incr)108 520.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H -(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .164(Search backw) -144 532.8 R .164(ard through the history starting at the current line u\ -sing a non-incremental search for)-.1 F 2.5(as)144 544.8 S -(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 556.8 Q +(This is an incremental search.)144 496.8 Q F1 -.25(fo)108 508.8 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 +(Search forw)144 520.8 R 1.131(ard starting at the current line and mo) +-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary) +-.25 F(.)-.65 E(This is an incremental search.)144 532.8 Q F1 +(non\255incr)108 544.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H +(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw) +144 556.8 R .164(ard through the history starting at the current line u\ +sing a non-incremental search for)-.1 F 2.5(as)144 568.8 S +(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 580.8 Q (emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 -E F0 1.354(Search forw)144 568.8 R 1.354(ard through the history using \ +E F0 1.353(Search forw)144 592.8 R 1.354(ard through the history using \ a non-incremental search for a string supplied by the)-.1 F(user)144 -580.8 Q(.)-.55 E F1(history\255sear)108 592.8 Q(ch\255f)-.18 E(orward) --.25 E F0 .248(Search forw)144 604.8 R .249(ard through the history for\ +604.8 Q(.)-.55 E F1(history\255sear)108 616.8 Q(ch\255f)-.18 E(orward) +-.25 E F0 .249(Search forw)144 628.8 R .249(ard through the history for\ the string of characters between the start of the current line)-.1 F -(and the point.)144 616.8 Q(This is a non-incremental search.)5 E F1 -(history\255sear)108 628.8 Q(ch\255backward)-.18 E F0 .951(Search backw) -144 640.8 R .951(ard through the history for the string of characters b\ -etween the start of the current)-.1 F(line and the point.)144 652.8 Q -(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 664.8 Q +(and the point.)144 640.8 Q(This is a non-incremental search.)5 E F1 +(history\255sear)108 652.8 Q(ch\255backward)-.18 E F0 .95(Search backw) +144 664.8 R .951(ard through the history for the string of characters b\ +etween the start of the current)-.1 F(line and the point.)144 676.8 Q +(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 688.8 Q 2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 -676.8 R .622(gument to the pre)-.18 F .622 +700.8 R .622(gument to the pre)-.18 F .622 (vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F -.622(vious line\))-.25 F .795(at point.)144 688.8 R -.4(Wi)5.795 G .794 +.622(vious line\))-.25 F .794(at point.)144 712.8 R -.4(Wi)5.794 G .794 (th an ar).4 F(gument)-.18 E/F3 10/Times-Italic@0 SF(n)3.294 E F0 3.294 (,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794 -(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .794 -(ords in the)-.1 F(pre)144 700.8 Q .291(vious command be)-.25 F .291 +(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .795 +(ords in the)-.1 F(pre)144 724.8 Q .292(vious command be)-.25 F .292 (gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a) -2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291 -(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .292 -(ord from the end of)-.1 F .282(the pre)144 712.8 R .282(vious command.) --.25 F .282(Once the ar)5.282 F(gument)-.18 E F3(n)2.781 E F0 .281 -(is computed, the ar)2.781 F .281(gument is e)-.18 F .281 -(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 724.8 Q -(xpansion had been speci\214ed.)-.15 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(40)198.165 E 0 Cg EP +(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .291 +(ord from the end of)-.1 F(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(40)187.615 E 0 Cg EP %%Page: 41 41 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(yank\255last\255ar)108 84 Q 2.5(g\()-.1 G --1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307 -(Insert the last ar)144 96 R 1.307(gument to the pre)-.18 F 1.307 -(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308 -(vious history entry\).)-.25 F -.4(Wi)144 108 S .736(th an ar).4 F .736 -(gument, beha)-.18 F 1.036 -.15(ve ex)-.2 H .736(actly lik).15 F(e)-.1 E -F1(yank\255nth\255ar)3.235 E(g)-.1 E F0 5.735(.S)C(uccessi)-5.735 E -1.035 -.15(ve c)-.25 H .735(alls to).15 F F1(yank\255last\255ar)3.235 E -(g)-.1 E F0(mo)3.235 E -.15(ve)-.15 G .728 -(back through the history list, inserting the last ar)144 120 R .728 -(gument of each line in turn.)-.18 F .729(The history e)5.728 F(xpan-) --.15 E .14(sion f)144 132 R .14(acilities are used to e)-.1 F .14 +-.35 E .281(the pre)144 84 R .281(vious command.)-.25 F .281 +(Once the ar)5.281 F(gument)-.18 E/F1 10/Times-Italic@0 SF(n)2.781 E F0 +.281(is computed, the ar)2.781 F .281(gument is e)-.18 F .282 +(xtracted as if the "!)-.15 F F1(n)A F0(")A(history e)144 96 Q +(xpansion had been speci\214ed.)-.15 E/F2 10/Times-Bold@0 SF +(yank\255last\255ar)108 108 Q 2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F +-1.667(M\255_ \))2.5 F F0 1.308(Insert the last ar)144 120 R 1.308 +(gument to the pre)-.18 F 1.307(vious command \(the last w)-.25 F 1.307 +(ord of the pre)-.1 F 1.307(vious history entry\).)-.25 F -.4(Wi)144 132 +S .735(th an ar).4 F .735(gument, beha)-.18 F 1.035 -.15(ve ex)-.2 H +.735(actly lik).15 F(e)-.1 E F2(yank\255nth\255ar)3.235 E(g)-.1 E F0 +5.736(.S)C(uccessi)-5.736 E 1.036 -.15(ve c)-.25 H .736(alls to).15 F F2 +(yank\255last\255ar)3.236 E(g)-.1 E F0(mo)3.236 E -.15(ve)-.15 G .728 +(back through the history list, inserting the last ar)144 144 R .728 +(gument of each line in turn.)-.18 F .728(The history e)5.728 F(xpan-) +-.15 E .14(sion f)144 156 R .14(acilities are used to e)-.1 F .14 (xtract the last ar)-.15 F .14(gument, as if the "!$" history e)-.18 F -.14(xpansion had been speci-)-.15 F(\214ed.)144 144 Q F1 -(shell\255expand\255line \(M\255C\255e\))108 156 Q F0 .622 -(Expand the line as the shell does.)144 168 R .622 -(This performs alias and history e)5.622 F .623 -(xpansion as well as all of the)-.15 F(shell w)144 180 Q(ord e)-.1 E 2.5 -(xpansions. See)-.15 F/F2 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25 +.14(xpansion had been speci-)-.15 F(\214ed.)144 168 Q F2 +(shell\255expand\255line \(M\255C\255e\))108 180 Q F0 .623 +(Expand the line as the shell does.)144 192 R .622 +(This performs alias and history e)5.622 F .622 +(xpansion as well as all of the)-.15 F(shell w)144 204 Q(ord e)-.1 E 2.5 +(xpansions. See)-.15 F/F3 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25 (YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G -(or a description of history e)-2.5 E(xpansion.)-.15 E F1 -(history\255expand\255line \(M\255^\))108 192 Q F0 .939 -(Perform history e)144 204 R .939(xpansion on the current line.)-.15 F -(See)5.939 E F2(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E -(ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-) --3.438 F(tion of history e)144 216 Q(xpansion.)-.15 E F1(magic\255space) -108 228 Q F0 1.626(Perform history e)144 240 R 1.626 -(xpansion on the current line and insert a space.)-.15 F(See)6.627 E F2 -(HIST)4.127 E(OR)-.162 E 3.877(YE)-.315 G(XP)-3.877 E(ANSION)-.666 E F0 -(belo)144 252 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E -(xpansion.)-.15 E F1(alias\255expand\255line)108 264 Q F0 .395 -(Perform alias e)144 276 R .395(xpansion on the current line.)-.15 F -(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .694 -.15(ve f)-.15 H -.394(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 288 Q F1 -(history\255and\255alias\255expand\255line)108 300 Q F0 -(Perform history and alias e)144 312 Q(xpansion on the current line.) --.15 E F1(insert\255last\255ar)108 324 Q(gument \(M\255.)-.1 E 2.5(,M) -.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 336 S(ynon)-2.5 E(ym for) --.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1 -(operate\255and\255get\255next \(C\255o\))108 348 Q F0 .947 -(Accept the current line for e)144 360 R -.15(xe)-.15 G .948 -(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15 -(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F -(history for editing.)144 372 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G -(ument is ignored.).18 E F1 -(edit\255and\255execute\255command \(C\255xC\255e\))108 384 Q F0(In)144 -396 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 +(or a description of history e)-2.5 E(xpansion.)-.15 E F2 +(history\255expand\255line \(M\255^\))108 216 Q F0 .938 +(Perform history e)144 228 R .939(xpansion on the current line.)-.15 F +(See)5.939 E F3(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E +(ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-) +-3.439 F(tion of history e)144 240 Q(xpansion.)-.15 E F2(magic\255space) +108 252 Q F0 1.627(Perform history e)144 264 R 1.627 +(xpansion on the current line and insert a space.)-.15 F(See)6.626 E F3 +(HIST)4.126 E(OR)-.162 E 3.876(YE)-.315 G(XP)-3.876 E(ANSION)-.666 E F0 +(belo)144 276 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E +(xpansion.)-.15 E F2(alias\255expand\255line)108 288 Q F0 .394 +(Perform alias e)144 300 R .394(xpansion on the current line.)-.15 F +(See)5.395 E F3(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H +.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 312 Q F2 +(history\255and\255alias\255expand\255line)108 324 Q F0 +(Perform history and alias e)144 336 Q(xpansion on the current line.) +-.15 E F2(insert\255last\255ar)108 348 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 360 S(ynon)-2.5 E(ym for) +-.15 E F2(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F2 +(operate\255and\255get\255next \(C\255o\))108 372 Q F0 .948 +(Accept the current line for e)144 384 R -.15(xe)-.15 G .948 +(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.247 -.15 +(ve t)-.25 H 3.447(ot).15 G .947(he current line from the)-3.447 F +(history for editing.)144 396 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G +(ument is ignored.).18 E F2 +(edit\255and\255execute\255command \(C\255xC\255e\))108 408 Q F0(In)144 +420 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 (ditor on the current command line, and e)-3.526 F -.15(xe)-.15 G 1.026 -(cute the result as shell commands.).15 F F1(Bash)6.026 E F0 -(attempts to in)144 408 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL) --.54 E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0 -(and)2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E -2.5(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 -424.8 Q(or Changing T)-.25 E(ext)-.92 E(delete\255char \(C\255d\))108 -436.8 Q F0 .357(Delete the character at point.)144 448.8 R .358 -(If point is at the be)5.358 F .358 -(ginning of the line, there are no characters in the)-.15 F -(line, and the last character typed w)144 460.8 Q(as not bound to)-.1 E -F1(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E F2(EOF)2.5 E F3(.) -A F1(backward\255delete\255char \(Rubout\))108 472.8 Q F0 .553 -(Delete the character behind the cursor)144 484.8 R 5.553(.W)-.55 G .553 +(cute the result as shell commands.).15 F F2(Bash)6.026 E F0 +(attempts to in)144 432 Q -.2(vo)-.4 G -.1(ke).2 G F3($VISU)2.6 E(AL) +-.54 E/F4 9/Times-Roman@0 SF(,)A F3($EDIT)2.25 E(OR)-.162 E F4(,)A F0 +(and)2.25 E F1(emacs)2.5 E F0(as the editor)2.5 E 2.5(,i)-.4 G 2.5(nt) +-2.5 G(hat order)-2.5 E(.)-.55 E F2(Commands f)87 448.8 Q(or Changing T) +-.25 E(ext)-.92 E(delete\255char \(C\255d\))108 460.8 Q F0 .358 +(Delete the character at point.)144 472.8 R .358(If point is at the be) +5.358 F .358(ginning of the line, there are no characters in the)-.15 F +(line, and the last character typed w)144 484.8 Q(as not bound to)-.1 E +F2(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E F3(EOF)2.5 E F4(.) +A F2(backward\255delete\255char \(Rubout\))108 496.8 Q F0 .552 +(Delete the character behind the cursor)144 508.8 R 5.553(.W)-.55 G .553 (hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553(umeric ar)-3.053 F -.552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552(he deleted te).15 F -.552(xt on)-.15 F(the kill ring.)144 496.8 Q F1 -.25(fo)108 508.8 S -(rward\255backward\255delete\255char).25 E F0 .473 -(Delete the character under the cursor)144 520.8 R 2.973(,u)-.4 G .474 -(nless the cursor is at the end of the line, in which case the)-2.973 F -(character behind the cursor is deleted.)144 532.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 544.8 Q F0 .779(Add the ne)144 -556.8 R .779(xt character typed to the line v)-.15 F 3.279 +.553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553(he deleted te).15 F +.553(xt on)-.15 F(the kill ring.)144 520.8 Q F2 -.25(fo)108 532.8 S +(rward\255backward\255delete\255char).25 E F0 .474 +(Delete the character under the cursor)144 544.8 R 2.974(,u)-.4 G .474 +(nless the cursor is at the end of the line, in which case the)-2.974 F +(character behind the cursor is deleted.)144 556.8 Q F2 +(quoted\255insert \(C\255q, C\255v\))108 568.8 Q F0 .778(Add the ne)144 +580.8 R .779(xt character typed to the line v)-.15 F 3.279 (erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 -G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278 -(,f)C(or)-3.278 E -.15(ex)144 568.8 S(ample.).15 E F1 -(tab\255insert \(C\255v T)108 580.8 Q(AB\))-.9 E F0 -(Insert a tab character)144 592.8 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 604.8 Q F0 -(Insert the character typed.)144 616.8 Q F1 -(transpose\255chars \(C\255t\))108 628.8 Q F0 .321 -(Drag the character before point forw)144 640.8 R .321(ard o)-.1 F -.15 -(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322 -(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182 +G .779(nsert characters lik)-3.279 F(e)-.1 E F2(C\255q)3.279 E F0 3.279 +(,f)C(or)-3.279 E -.15(ex)144 592.8 S(ample.).15 E F2 +(tab\255insert \(C\255v T)108 604.8 Q(AB\))-.9 E F0 +(Insert a tab character)144 616.8 Q(.)-.55 E F2 +(self\255insert \(a, b, A, 1, !, ...\))108 628.8 Q F0 +(Insert the character typed.)144 640.8 Q F2 +(transpose\255chars \(C\255t\))108 652.8 Q F0 .322 +(Drag the character before point forw)144 664.8 R .321(ard o)-.1 F -.15 +(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .321 +(ving point forw)-.15 F .321(ard as well.)-.1 F 1.182 (If point is at the end of the line, then this transposes the tw)144 -652.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E --.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 664.8 Q(guments ha)-.18 E -.3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 -(transpose\255w)108 676.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 -688.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo) --.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w) --2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F -(is at the end of the line, this transposes the last tw)144 700.8 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E(GNU Bash-4.2)72 768 Q(2010 July 21) -148.175 E(41)198.165 E 0 Cg EP +676.8 R 3.683(oc)-.1 G 1.183(haracters before point.)-3.683 F(Ne)6.183 E +-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 688.8 Q(guments ha)-.18 E +.3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F2 +(transpose\255w)108 700.8 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144 +712.8 R .024(ord before point past the w)-.1 F .023(ord after point, mo) +-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.523(rt).15 G .023(hat w) +-2.523 F .023(ord as well.)-.1 F .023(If point)5.023 F +(is at the end of the line, this transposes the last tw)144 724.8 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E(GNU Bash-4.2)72 768 Q +(2010 September 6)137.625 E(41)187.615 E 0 Cg EP %%Page: 42 42 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E/F1 10/Times-Bold@0 SF(upcase\255w)108 84 Q(ord \(M\255u\))-.1 E -F0 1.699(Uppercase the current \(or follo)144 96 R 1.698(wing\) w)-.25 F -4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.998 --.15(ve a)-.25 H -.18(rg).15 G 1.698(ument, uppercase the pre).18 F +F0 1.698(Uppercase the current \(or follo)144 96 R 1.698(wing\) w)-.25 F +4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.999 +-.15(ve a)-.25 H -.18(rg).15 G 1.699(ument, uppercase the pre).18 F (vious)-.25 E -.1(wo)144 108 S(rd, b).1 E(ut do not mo)-.2 E .3 -.15 (ve p)-.15 H(oint.).15 E F1(do)108 120 Q(wncase\255w)-.1 E -(ord \(M\255l\))-.1 E F0(Lo)144 132 Q 1.647 -(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 -(ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15 -(ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre) +(ord \(M\255l\))-.1 E F0(Lo)144 132 Q 1.648 +(wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148 +(ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15 +(ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre) -.25 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 156 Q -(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 168 +(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 168 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga) --.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974 +-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.975 (ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 180 S(rd, b).1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 192 -S(rwrite\255mode).1 E F0 -.8(To)144 204 S .437(ggle o).8 F -.15(ve)-.15 -G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437 -(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438 -(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4 -(Wi)144 216 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 --.15(ve n)-.25 H .781(umeric ar).15 F .781 -(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F -(fects)-.25 E(only)144 228 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) -4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 -F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10 -/Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895 -(starts in insert)4.395 F 3.969(mode. In)144 240 R -.15(ove)3.969 G -1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E -F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F -.957(pushing the te)144 252 R .957(xt to the right.)-.15 F .958 -(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0 -.958(replace the character)3.458 F(before point with a space.)144 264 Q -(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 -280.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 292.8 Q F0 -(Kill the te)144 304.8 Q(xt from point to the end of the line.)-.15 E F1 +S(rwrite\255mode).1 E F0 -.8(To)144 204 S .438(ggle o).8 F -.15(ve)-.15 +G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e).4 F .438 +(xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15 F .437 +(gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4 +(Wi)144 216 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15 +(ve n)-.25 H .781(umeric ar).15 F .781(gument, switches to insert mode.) +-.18 F .781(This command af)5.781 F(fects)-.25 E(only)144 228 Q F1 +(emacs)4.395 E F0(mode;)4.395 E F1(vi)4.395 E F0 1.894(mode does o)4.395 +F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G +1.894(ach call to)-6.894 F/F2 10/Times-Italic@0 SF -.37(re)4.394 G +(adline\(\)).37 E F0 1.894(starts in insert)4.394 F 3.968(mode. In)144 +240 R -.15(ove)3.968 G 1.468(rwrite mode, characters bound to).15 F F1 +(self\255insert)3.969 E F0 1.469(replace the te)3.969 F 1.469 +(xt at point rather than)-.15 F .958(pushing the te)144 252 R .958 +(xt to the right.)-.15 F .957(Characters bound to)5.958 F F1 +(backward\255delete\255char)3.457 E F0 .957(replace the character)3.457 +F(before point with a space.)144 264 Q(By def)5 E +(ault, this command is unbound.)-.1 E F1(Killing and Y)87 280.8 Q +(anking)-.85 E(kill\255line \(C\255k\))108 292.8 Q F0(Kill the te)144 +304.8 Q(xt from point to the end of the line.)-.15 E F1 (backward\255kill\255line \(C\255x Rubout\))108 316.8 Q F0(Kill backw) 144 328.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 (unix\255line\255discard \(C\255u\))108 340.8 Q F0(Kill backw)144 352.8 @@ -4982,18 +4994,18 @@ Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) -2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 364.8 Q F0 (Kill all characters on the current line, no matter where point is.)144 -376.8 Q F1(kill\255w)108 388.8 Q(ord \(M\255d\))-.1 E F0 .729 -(Kill from point to the end of the current w)144 400.8 R .728 -(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728 +376.8 Q F1(kill\255w)108 388.8 Q(ord \(M\255d\))-.1 E F0 .728 +(Kill from point to the end of the current w)144 400.8 R .729 +(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F .729 (xt w)-.15 F(ord.)-.1 E -.8(Wo)144 412.8 S (rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G (rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 424.8 Q (ord \(M\255Rubout\))-.1 E F0(Kill the w)144 436.8 Q(ord behind point.) -.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 (backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 448.8 Q -(ord \(M\255d\))-.1 E F0 .728 -(Kill from point to the end of the current w)144 460.8 R .729 -(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F .729 +(ord \(M\255d\))-.1 E F0 .729 +(Kill from point to the end of the current w)144 460.8 R .728 +(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728 (xt w)-.15 F(ord.)-.1 E -.8(Wo)144 472.8 S (rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E (orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) @@ -5001,14 +5013,14 @@ Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E 3.025(ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 (rd boundaries are the same as those used by).8 F F1(shell\255back-) 5.525 E(ward\255w)144 508.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 520.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 532.8 R .364 -(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1 -F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 -(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144 -544.8 Q F1(unix\255\214lename\255rubout)108 556.8 Q F0 .167(Kill the w) +(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 532.8 R .365 +(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1 +F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15 +(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144 +544.8 Q F1(unix\255\214lename\255rubout)108 556.8 Q F0 .166(Kill the w) 144 568.8 R .166 (ord behind point, using white space and the slash character as the w) --.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 580.8 Q +-.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 580.8 Q (xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) -2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 592.8 Q F0 (Delete all spaces and tabs around point.)144 604.8 Q F1(kill\255r)108 @@ -5016,17 +5028,16 @@ F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 -.15 E(gion.)-.15 E F1(copy\255r)108 640.8 Q(egion\255as\255kill)-.18 E F0(Cop)144 652.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E (gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1 -(copy\255backward\255w)108 664.8 Q(ord)-.1 E F0(Cop)144 676.8 Q 4.8(yt) --.1 G 2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E -(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301 -(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 -688.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 700.8 Q(orward\255w)-.25 E -(ord)-.1 E F0(Cop)144 712.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008 -(ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 -E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 -(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G -(ward\255w)144 724.8 Q(ord)-.1 E F0(.)A(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(42)198.165 E 0 Cg EP +(copy\255backward\255w)108 664.8 Q(ord)-.1 E F0(Cop)144 676.8 Q 4.801 +(yt)-.1 G 2.301(he w)-4.801 F 2.301(ord before point to the kill b)-.1 F +(uf)-.2 E(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.3 +(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 688.8 +Q(ord)-.1 E F0(.)A F1(copy\255f)108 700.8 Q(orward\255w)-.25 E(ord)-.1 E +F0(Cop)144 712.8 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo) +-.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008 +(.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1 +F F1 -.25(fo)4.508 G -.37(r-).25 G(ward\255w)144 724.8 Q(ord)-.1 E F0(.) +A(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(42)187.615 E 0 Cg EP %%Page: 43 43 %%BeginPageSetup BP @@ -5039,26 +5050,26 @@ E F1(yank\255pop \(M\255y\))108 108 Q F0 (op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 136.8 Q (guments)-.1 E(digit\255ar)108 148.8 Q -(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .641 +(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .642 (Add this digit to the ar)144 160.8 R .641 (gument already accumulating, or start a ne)-.18 F 3.141(wa)-.25 G -.18 -(rg)-3.141 G 3.142(ument. M\255\255).18 F .642(starts a ne)3.142 F(g-) +(rg)-3.141 G 3.141(ument. M\255\255).18 F .641(starts a ne)3.141 F(g-) -.15 E(ati)144 172.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 -(uni)108 184.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779 +(uni)108 184.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778 (This is another w)144 196.8 R .779(ay to specify an ar)-.1 F 3.279 -(gument. If)-.18 F .779(this command is follo)3.279 F .778 +(gument. If)-.18 F .779(this command is follo)3.279 F .779 (wed by one or more digits,)-.25 F 1.376 (optionally with a leading minus sign, those digits de\214ne the ar)144 208.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 220.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) 3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17 (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other) --.2 F(-)-.2 E .898(wise ignored.)144 232.8 R .898 -(As a special case, if this command is immediately follo)5.898 F .898 +-.2 F(-)-.2 E .899(wise ignored.)144 232.8 R .898 +(As a special case, if this command is immediately follo)5.899 F .898 (wed by a character that is)-.25 F .243 (neither a digit or minus sign, the ar)144 244.8 R .243 (gument count for the ne)-.18 F .243(xt command is multiplied by four) --.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 256.8 Q .378 +-.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 256.8 Q .378 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378 (cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F .378(gument count)-.18 F(four)144 268.8 Q 2.5(,as)-.4 G(econd time mak) @@ -5066,12 +5077,12 @@ F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 136.8 Q (Completing)87 285.6 Q(complete \(T)108 297.6 Q(AB\))-.9 E F0 1.137 (Attempt to perform completion on the te)144 309.6 R 1.137 (xt before point.)-.15 F F1(Bash)6.137 E F0 1.137 -(attempts completion treating the)3.637 F(te)144 321.6 Q .532(xt as a v) --.15 F .532(ariable \(if the te)-.25 F .532(xt be)-.15 F .533(gins with) --.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .533(xt be)-.15 F -.533(gins with)-.15 F F1(~)3.033 E F0 .533(\), hostname \(if the)B(te) -144 333.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 -(\), or command \(including aliases and functions\) in turn.)B .701 +(attempts completion treating the)3.637 F(te)144 321.6 Q .533(xt as a v) +-.15 F .533(ariable \(if the te)-.25 F .533(xt be)-.15 F .533(gins with) +-.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .532(xt be)-.15 F +.532(gins with)-.15 F F1(~)3.032 E F0 .532(\), hostname \(if the)B(te) +144 333.6 Q .701(xt be)-.15 F .701(gins with)-.15 F F1(@)3.201 E F0 .701 +(\), or command \(including aliases and functions\) in turn.)B .702 (If none of these pro-)5.701 F (duces a match, \214lename completion is attempted.)144 345.6 Q F1 (possible\255completions \(M\255?\))108 357.6 Q F0 @@ -5079,28 +5090,27 @@ F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 136.8 Q -.15 E F1(insert\255completions \(M\255*\))108 381.6 Q F0 .783 (Insert all completions of the te)144 393.6 R .783 (xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H -.783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144 -405.6 Q F0(.)A F1(menu\255complete)108 417.6 Q F0 .929(Similar to)144 -429.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 +.783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144 +405.6 Q F0(.)A F1(menu\255complete)108 417.6 Q F0 .928(Similar to)144 +429.6 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628 F .929(ord to be completed with a single match from the list of)-.1 F -1.193(possible completions.)144 441.6 R 1.193(Repeated e)6.193 F -.15 -(xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194 -(steps through the list of possible)3.694 F .829 +1.194(possible completions.)144 441.6 R 1.194(Repeated e)6.194 F -.15 +(xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193 +(steps through the list of possible)3.694 F .828 (completions, inserting each match in turn.)144 453.6 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 (\(subject to the setting of)144 465.6 R F1(bell\255style)3.227 E F0 3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F .727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 -E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73 +E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.227 E F0 1.73 (positions forw)144 477.6 R 1.73(ard in the list of matches; a ne)-.1 F -.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 (ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 E(through the list.)144 489.6 Q(This command is intended to be bound to) 5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E -(ault.)-.1 E F1(menu\255complete-)108 501.6 Q(w)10 I(k)-7.22 -10 M(c) --5.56 -10 M(rd)2.78 10 M F0 .82(Identical to)144 513.6 R F1 -(menu\255complete)3.32 E F0 3.32(,b)C .82(ut mo)-3.52 F -.15(ve)-.15 G -3.32(sb).15 G(ackw)-3.32 E .82 +(ault.)-.1 E F1(menu\255complete\255backward)108 501.6 Q F0 .82 +(Identical to)144 513.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 +(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 (ard through the list of possible completions, as if)-.1 F F1 (menu\255complete)144 525.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 (nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) @@ -5108,7 +5118,7 @@ E(through the list.)144 489.6 Q(This command is intended to be bound to) F1(delete\255char\255or\255list)108 537.6 Q F0 .234 (Deletes the character under the cursor if not at the be)144 549.6 R .234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) -2.734 E F0(\).)A .425(If at the end of the line, beha)144 561.6 R -.15 +2.735 E F0(\).)A .425(If at the end of the line, beha)144 561.6 R -.15 (ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1 (possible\255completions)2.925 E F0 5.425(.T)C .425 (his command is unbound)-5.425 F(by def)144 573.6 Q(ault.)-.1 E F1 @@ -5128,7 +5138,7 @@ F0(List the possible completions of the te)144 621.6 Q F1(possible\255v)108 705.6 Q(ariable\255completions \(C\255x $\))-.1 E F0(List the possible completions of the te)144 717.6 Q (xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(43)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(43)187.615 E 0 Cg EP %%Page: 44 44 %%BeginPageSetup BP @@ -5140,10 +5150,10 @@ BP (possible\255hostname\255completions \(C\255x @\))108 108 Q F0 (List the possible completions of the te)144 120 Q (xt before point, treating it as a hostname.)-.15 E F1 -(complete\255command \(M\255!\))108 132 Q F0 .581 +(complete\255command \(M\255!\))108 132 Q F0 .58 (Attempt completion on the te)144 144 R .581 -(xt before point, treating it as a command name.)-.15 F .58 -(Command comple-)5.58 F .715(tion attempts to match the te)144 156 R +(xt before point, treating it as a command name.)-.15 F .581 +(Command comple-)5.581 F .715(tion attempts to match the te)144 156 R .715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F .715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F (\214nally e)144 168 Q -.15(xe)-.15 G @@ -5151,14 +5161,14 @@ BP (possible\255command\255completions \(C\255x !\))108 180 Q F0 (List the possible completions of the te)144 192 Q (xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 204 Q(AB\))-.9 E F0 .425 +(dynamic\255complete\255history \(M\255T)108 204 Q(AB\))-.9 E F0 .424 (Attempt completion on the te)144 216 R .425 -(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424 +(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .425 (ainst lines from the history list)-.05 F (for possible completion matches.)144 228 Q F1(dab)108 240 Q(br)-.1 E --.15(ev)-.18 G(\255expand).15 E F0 .61 +-.15(ev)-.18 G(\255expand).15 E F0 .611 (Attempt menu completion on the te)144 252 R .611 -(xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611 +(xt before point, comparing the te)-.15 F .61(xt ag)-.15 F .61 (ainst lines from the his-)-.05 F (tory list for possible completion matches.)144 264 Q F1 (complete\255into\255braces \(M\255{\))108 276 Q F0 .4(Perform \214lena\ @@ -5174,21 +5184,21 @@ E(start\255kbd\255macr)108 328.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G (board macro and store the de\214nition.).15 E F1 (call\255last\255kbd\255macr)108 376.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 388.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) --.1 G .999(board macro de\214ned, by making the characters in the macro\ - appear as if).15 F(typed at the k)144 400.8 Q -.15(ey)-.1 G(board.).15 -E F1(Miscellaneous)87 417.6 Q -.18(re)108 429.6 S<ad72>.18 E -(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 +E F0(Re-e)144 388.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1 +G .999(board macro de\214ned, by making the characters in the macro app\ +ear as if).15 F(typed at the k)144 400.8 Q -.15(ey)-.1 G(board.).15 E F1 +(Miscellaneous)87 417.6 Q -.18(re)108 429.6 S<ad72>.18 E +(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776 (Read in the contents of the)144 441.6 R/F2 10/Times-Italic@0 SF(inputr) -4.277 E(c)-.37 E F0 1.776(\214le, and incorporate an)4.276 F 4.276(yb) --.15 G 1.776(indings or v)-4.276 F 1.776(ariable assignments)-.25 F -(found there.)144 453.6 Q F1(abort \(C\255g\))108 465.6 Q F0 3.248 +4.276 E(c)-.37 E F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb) +-.15 G 1.777(indings or v)-4.277 F 1.777(ariable assignments)-.25 F +(found there.)144 453.6 Q F1(abort \(C\255g\))108 465.6 Q F0 3.249 (Abort the current editing command and ring the terminal')144 477.6 R -5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 +5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 (bell\255style)144 489.6 Q F0(\).)A F1(do\255upper)108 501.6 Q (case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.) -C(..\))-2.5 E F0 1.756(If the meta\214ed character)144 513.6 R F2(x) -4.256 E F0 1.755(is lo)4.256 F 1.755 +C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 513.6 R F2(x) +4.255 E F0 1.755(is lo)4.255 F 1.756 (wercase, run the command that is bound to the corresponding)-.25 F (uppercase character)144 525.6 Q(.)-.55 E F1(pr)108 537.6 Q (e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 549.6 Q @@ -5207,68 +5217,69 @@ F0 1.095(command enough times to)3.595 F (Set the mark to the point.)144 657.6 Q(If a numeric ar)5 E (gument is supplied, the mark is set to that position.)-.18 E F1 (exchange\255point\255and\255mark \(C\255x C\255x\))108 669.6 Q F0(Sw) -144 681.6 Q .283(ap the point with the mark.)-.1 F .283 +144 681.6 Q .282(ap the point with the mark.)-.1 F .283 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G -2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa) +2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) 144 693.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 -(character\255sear)108 705.6 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 -717.6 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G +(character\255sear)108 705.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 +717.6 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G 3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 -(xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05 -(ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre) +(xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05 +(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre) 144 729.6 Q(vious occurrences.)-.25 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(44)198.165 E 0 Cg EP +(2010 September 6)137.625 E(44)187.615 E 0 Cg EP %%Page: 45 45 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E/F1 10/Times-Bold@0 SF(character\255sear)108 84 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 96 S 1.044 -(haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G +(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 96 S 1.043 +(haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 -(vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E +(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G (count searches for subsequent occurrences.)144 108 Q F1 -(skip\255csi\255sequence \(\))108 120 Q F0 1.826 +(skip\255csi\255sequence)108 120 Q F0 1.827 (Read enough characters to consume a multi-k)144 132 R 2.126 -.15(ey s) --.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G -4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 144 R .791 -(Such sequences be)5.791 F .791 +-.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey)-.1 G +4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 144 R .791 +(Such sequences be)5.79 F .791 (gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -.331(If this sequence is bound to "\\[", k)144 156 R -.15(ey)-.1 G 2.831 -(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n) --.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-) +.332(If this sequence is bound to "\\[", k)144 156 R -.15(ey)-.1 G 2.831 +(sp).15 G .331(roducing such sequences will ha)-2.831 F .631 -.15(ve n) +-.2 H 2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F(xplic-) -.15 E .026(itly bound to a readline command, instead of inserting stra\ y characters into the editing b)144 168 R(uf)-.2 E(fer)-.25 E 5.026(.T) -.55 G(his)-5.026 E(is unbound by def)144 180 Q(ault, b)-.1 E (ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 -192 Q F0 -.4(Wi)144 204 S .48(thout a numeric ar).4 F .48(gument, the v) --.18 F .481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 --.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 216 Q .098 -(ginning of the current line.)-.15 F .098(If a numeric ar)5.098 F .097 -(gument is supplied, this command acts as a toggle:)-.18 F(if)5.097 E -.321(the characters at the be)144 228 R .321 +192 Q F0 -.4(Wi)144 204 S .481(thout a numeric ar).4 F .481 +(gument, the v)-.18 F .481(alue of the readline)-.25 F F1 +(comment\255begin)2.981 E F0 -.25(va)2.981 G .48 +(riable is inserted at the).25 F(be)144 216 Q .097 +(ginning of the current line.)-.15 F .098(If a numeric ar)5.097 F .098 +(gument is supplied, this command acts as a toggle:)-.18 F(if)5.098 E +.322(the characters at the be)144 228 R .321 (ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 -(comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is) --.25 F .832(inserted, otherwise the characters in)144 240 R F1 -(comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831 -(ginning of the line.)-.15 F 1.468 +(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is) +-.25 F .831(inserted, otherwise the characters in)144 240 R F1 +(comment\255begin)3.331 E F0 .832(are deleted from the be)3.331 F .832 +(ginning of the line.)-.15 F 1.469 (In either case, the line is accepted as if a ne)144 252 R 1.468 -(wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F -1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 264 Q F0 .84 -(causes this command to mak)3.34 F 3.339(et)-.1 G .839 -(he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F +(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F +1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 264 Q F0 .839 +(causes this command to mak)3.339 F 3.339(et)-.1 G .839 +(he current line a shell comment.)-3.339 F .84(If a numeric ar)5.84 F (gu-)-.18 E(ment causes the comment character to be remo)144 276 Q -.15 (ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G (cuted by the shell.).15 E F1(glob\255complete\255w)108 288 Q -(ord \(M\255g\))-.1 E F0 .791(The w)144 300 R .791 -(ord before point is treated as a pattern for pathname e)-.1 F .792 +(ord \(M\255g\))-.1 E F0 .792(The w)144 300 R .791 +(ord before point is treated as a pattern for pathname e)-.1 F .791 (xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 312 R(pattern is used to generate a list of matching \214le names for possi\ ble completions.)2.5 E F1(glob\255expand\255w)108 324 Q -(ord \(C\255x *\))-.1 E F0 .372(The w)144 336 R .372 -(ord before point is treated as a pattern for pathname e)-.1 F .371 +(ord \(C\255x *\))-.1 E F0 .371(The w)144 336 R .372 +(ord before point is treated as a pattern for pathname e)-.1 F .372 (xpansion, and the list of matching \214le)-.15 F .516 (names is inserted, replacing the w)144 348 R 3.016(ord. If)-.1 F 3.016 (an)3.016 G .516(umeric ar)-3.016 F .516 @@ -5280,56 +5291,56 @@ ble completions.)2.5 E F1(glob\255expand\255w)108 324 Q .872(the line is redra)144 396 R 3.372(wn. If)-.15 F 3.372(an)3.372 G .872(umeric ar)-3.372 F .872 (gument is supplied, an asterisk is appended before pathname)-.18 F -.15 -(ex)144 408 S(pansion.).15 E F1(dump\255functions)108 420 Q F0 .627 -(Print all of the functions and their k)144 432 R .927 -.15(ey b)-.1 H -.626(indings to the readline output stream.).15 F .626(If a numeric ar) -5.626 F(gu-)-.18 E +(ex)144 408 S(pansion.).15 E F1(dump\255functions)108 420 Q F0 .626 +(Print all of the functions and their k)144 432 R .926 -.15(ey b)-.1 H +.627(indings to the readline output stream.).15 F .627(If a numeric ar) +5.627 F(gu-)-.18 E (ment is supplied, the output is formatted in such a w)144 444 Q (ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr) 2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 456 Q(ariables)-.1 E F0 -1.799(Print all of the settable readline v)144 468 R 1.799 -(ariables and their v)-.25 F 1.8(alues to the readline output stream.) --.25 F 1.8(If a)6.8 F .305(numeric ar)144 480 R .304 +1.8(Print all of the settable readline v)144 468 R 1.799 +(ariables and their v)-.25 F 1.799(alues to the readline output stream.) +-.25 F 1.799(If a)6.799 F .304(numeric ar)144 480 R .304 (gument is supplied, the output is formatted in such a w)-.18 F .304 (ay that it can be made part of an)-.1 F F2(inputr)144 492 Q(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 504 Q(os)-.18 E F0 .592 -(Print all of the readline k)144 516 R .892 -.15(ey s)-.1 H .592 -(equences bound to macros and the strings the).15 F 3.093(yo)-.15 G -3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 528 Q +(\214le.)2.5 E F1(dump\255macr)108 504 Q(os)-.18 E F0 .593 +(Print all of the readline k)144 516 R .893 -.15(ey s)-.1 H .592 +(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G +3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 528 Q .528(gument is supplied, the output is formatted in such a w)-.18 F .528 -(ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0 +(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0 (\214le.)144 540 Q F1(display\255shell\255v)108 552 Q (ersion \(C\255x C\255v\))-.1 E F0(Display v)144 564 Q (ersion information about the current instance of)-.15 E F1(bash)2.5 E -F0(.)A F1(Pr)87 580.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 +F0(.)A F1(Pr)87 580.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108 592.8 R .147(ord completion is attempted for an ar)-.1 F .147 (gument to a command for which a completion speci\214cation \(a)-.18 F -F2(compspec)108 604.8 Q F0 3.829(\)h)C 1.329 -(as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu) +F2(compspec)108 604.8 Q F0 3.828(\)h)C 1.329 +(as been de\214ned using the)-3.828 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) +F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.329(w\), the) -.25 F(programmable completion f)108 616.8 Q(acilities are in)-.1 E -.2 -(vo)-.4 G -.1(ke).2 G(d.).1 E .497 -(First, the command name is identi\214ed.)108 633.6 R .497 -(If the command w)5.497 F .498 -(ord is the empty string \(completion attempted at)-.1 F .234(the be)108 +(vo)-.4 G -.1(ke).2 G(d.).1 E .498 +(First, the command name is identi\214ed.)108 633.6 R .498 +(If the command w)5.498 F .497 +(ord is the empty string \(completion attempted at)-.1 F .233(the be)108 645.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 (ompspec de\214ned with the)-2.733 F F1<ad45>2.733 E F0 .233(option to) -2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .233(If a comp-) -5.233 F .481(spec has been de\214ned for that command, the compspec is \ -used to generate the list of possible completions)108 657.6 R .823 -(for the w)108 669.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F -.822(ord is a full pathname, a compspec for the full pathname is search\ -ed for)-.1 F 2.866(\214rst. If)108 681.6 R .367(no compspec is found fo\ +2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .234(If a comp-) +5.234 F .481(spec has been de\214ned for that command, the compspec is \ +used to generate the list of possible completions)108 657.6 R .822 +(for the w)108 669.6 R 3.322(ord. If)-.1 F .822(the command w)3.322 F +.823(ord is a full pathname, a compspec for the full pathname is search\ +ed for)-.1 F 2.867(\214rst. If)108 681.6 R .366(no compspec is found fo\ r the full pathname, an attempt is made to \214nd a compspec for the po\ -rtion)2.866 F(follo)108 693.6 Q .422(wing the \214nal slash.)-.25 F .422 -(If those searches to not result in a compspec, an)5.422 F 2.921(yc)-.15 -G .421(ompspec de\214ned with the)-2.921 F F1<ad44>2.921 E F0(option to) +rtion)2.867 F(follo)108 693.6 Q .298(wing the \214nal slash.)-.25 F .298 +(If those searches do not result in a compspec, an)5.298 F 2.799(yc)-.15 +G .299(ompspec de\214ned with the)-2.799 F F1<ad44>2.799 E F0(option to) 108 705.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E .817(Once a compspec has been found, it is used to generate the list of\ matching w)108 722.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 -(ompspec is not)-3.317 F(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E -(45)198.165 E 0 Cg EP +(ompspec is not)-3.317 F(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 +E(45)187.615 E 0 Cg EP %%Page: 46 46 %%BeginPageSetup BP @@ -5337,147 +5348,146 @@ BP /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E(found, the def)108 84 Q(ault)-.1 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F1 -(Completing)2.5 E F0(is performed.)2.5 E .464 +(Completing)2.5 E F0(is performed.)2.5 E .463 (First, the actions speci\214ed by the compspec are used.)108 100.8 R -.463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F -.463(ord being)-.1 F .595(completed are returned.)108 112.8 R .595 -(When the)5.595 F F1<ad66>3.095 E F0(or)3.095 E F1<ad64>3.095 E F0 .596 +.464(Only matches which are pre\214x)5.464 F .464(ed by the w)-.15 F +.464(ord being)-.1 F .596(completed are returned.)108 112.8 R .596 +(When the)5.596 F F1<ad66>3.096 E F0(or)3.095 E F1<ad64>3.095 E F0 .595 (option is used for \214lename or directory name completion, the)3.095 F (shell v)108 124.8 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E F0(is used to \214lter the matches.)2.25 E(An)108 141.6 Q 4.084(yc)-.15 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 (xpansion pattern to the)-.15 F F1<ad47>4.084 E F0 1.584 (option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 153.6 S -.554(rds generated by the pattern need not match the w).1 F .555 -(ord being completed.)-.1 F(The)5.555 E F2(GLOBIGNORE)3.055 E F0 .555 -(shell v)2.805 F(ari-)-.25 E +.555(rds generated by the pattern need not match the w).1 F .554 +(ord being completed.)-.1 F(The)5.554 E F2(GLOBIGNORE)3.054 E F0 .554 +(shell v)2.804 F(ari-)-.25 E (able is not used to \214lter the matches, b)108 165.6 Q(ut the)-.2 E F2 (FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 182.4 Q -.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 -F F1<ad57>2.821 E F0 .32(option is considered.)2.821 F .32 -(The string is \214rst split using the)5.32 F .412(characters in the)108 -194.4 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412 +.32(xt, the string speci\214ed as the ar)-.15 F .32(gument to the)-.18 F +F1<ad57>2.82 E F0 .321(option is considered.)2.821 F .321 +(The string is \214rst split using the)5.321 F .413(characters in the) +108 194.4 R F2(IFS)2.913 E F0 .412(special v)2.663 F .412 (ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F -.413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092 -(using brace e)108 206.4 R .092(xpansion, tilde e)-.15 F .092 -(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .091 -(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108 +.412(Each w)5.412 F .412(ord is then e)-.1 F(xpanded)-.15 E .091 +(using brace e)108 206.4 R .091(xpansion, tilde e)-.15 F .092 +(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .092 +(xpansion, command substitution, and arith-)-.15 F 1.397(metic e)108 218.4 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H (nder).15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 1.396(The results are split using the rules described)5.896 F(abo)108 -230.4 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21 -(rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209 -(xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209 +230.4 Q .509 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.709 G .209 +(rd Splitting).75 F F0 5.209(.T)C .209(he results of the e)-5.209 F .209 +(xpansion are pre\214x-matched ag)-.15 F .21(ainst the w)-.05 F .21 (ord being com-)-.1 F(pleted, and the matching w)108 242.4 Q -(ords become the possible completions.)-.1 E 1.237 -(After these matches ha)108 259.2 R 1.537 -.15(ve b)-.2 H 1.237 -(een generated, an).15 F 3.737(ys)-.15 G 1.238 -(hell function or command speci\214ed with the)-3.737 F F1<ad46>3.738 E -F0(and)3.738 E F1<ad43>3.738 E F0 3.376(options is in)108 271.2 R -.2 +(ords become the possible completions.)-.1 E 1.238 +(After these matches ha)108 259.2 R 1.538 -.15(ve b)-.2 H 1.238 +(een generated, an).15 F 3.738(ys)-.15 G 1.237 +(hell function or command speci\214ed with the)-3.738 F F1<ad46>3.737 E +F0(and)3.737 E F1<ad43>3.737 E F0 3.375(options is in)108 271.2 R -.2 (vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375 (the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375 -(d, the).1 F F2(COMP_LINE)5.875 E F3(,)A F2(COMP_POINT)5.625 E F3(,)A F2 -(COMP_KEY)108 283.2 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25 -(va)2.407 G .157(riables are assigned v).25 F .157 -(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .158 -(Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108 -295.2 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G +(d, the).1 F F2(COMP_LINE)5.876 E F3(,)A F2(COMP_POINT)5.626 E F3(,)A F2 +(COMP_KEY)108 283.2 Q F3(,)A F0(and)2.408 E F2(COMP_TYPE)2.658 E F0 -.25 +(va)2.408 G .157(riables are assigned v).25 F .157 +(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .157 +(Shell V)2.657 F(ariables)-.92 E F0 5.157(.I)C(f)-5.157 E 3.485(as)108 +295.2 S .986(hell function is being in)-3.485 F -.2(vo)-.4 G -.1(ke).2 G .986(d, the).1 F F2(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F2 (COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 -(riables are also set.).25 F(When)5.985 E .608 +(riables are also set.).25 F(When)5.986 E .609 (the function or command is in)108 307.2 R -.2(vo)-.4 G -.1(ke).2 G .608 (d, the \214rst ar).1 F .608(gument is the name of the command whose ar) --.18 F .609(guments are)-.18 F .073(being completed, the second ar)108 +-.18 F .608(guments are)-.18 F .073(being completed, the second ar)108 319.2 R .073(gument is the w)-.18 F .073 (ord being completed, and the third ar)-.1 F .073(gument is the w)-.18 F -.072(ord pre-)-.1 F .607(ceding the w)108 331.2 R .607 -(ord being completed on the current command line.)-.1 F .608 -(No \214ltering of the generated completions)5.607 F(ag)108 343.2 Q .094 +.073(ord pre-)-.1 F .608(ceding the w)108 331.2 R .607 +(ord being completed on the current command line.)-.1 F .607 +(No \214ltering of the generated completions)5.607 F(ag)108 343.2 Q .093 (ainst the w)-.05 F .093(ord being completed is performed; the function\ or command has complete freedom in generat-)-.1 F(ing the matches.)108 -355.2 Q(An)108 372 Q 2.937(yf)-.15 G .437(unction speci\214ed with) --2.937 F F1<ad46>2.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G +355.2 Q(An)108 372 Q 2.938(yf)-.15 G .437(unction speci\214ed with) +-2.938 F F1<ad46>2.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G 2.937<648c>.1 G 2.937(rst. The)-2.937 F .437(function may use an)2.937 F -2.937(yo)-.15 G 2.937(ft)-2.937 G .437(he shell f)-2.937 F .438 -(acilities, including)-.1 F(the)108 384 Q F1(compgen)2.957 E F0 -.2(bu) -2.957 G .457(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og) -.65 G .456(enerate the matches.)-2.956 F .456 +2.937(yo)-.15 G 2.937(ft)-2.937 G .437(he shell f)-2.937 F .437 +(acilities, including)-.1 F(the)108 384 Q F1(compgen)2.956 E F0 -.2(bu) +2.956 G .456(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og) +.65 G .456(enerate the matches.)-2.956 F .457 (It must put the possible completions in the)5.456 F F2(COMPREPL)108 396 -Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E(Ne)108 412.8 Q .08(xt, an) --.15 F 2.58(yc)-.15 G .08(ommand speci\214ed with the)-2.58 F F1<ad43> -2.58 E F0 .081(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 -G 2.581(na)-2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081 -(ironment equi).4 F -.25(va)-.25 G .081(lent to command sub-).25 F 2.859 +Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E(Ne)108 412.8 Q .081 +(xt, an)-.15 F 2.581(yc)-.15 G .081(ommand speci\214ed with the)-2.581 F +F1<ad43>2.581 E F0 .081(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G +2.581(di).1 G 2.58(na)-2.581 G 2.58(ne)-2.58 G -.4(nv)-2.58 G .08 +(ironment equi).4 F -.25(va)-.25 G .08(lent to command sub-).25 F 2.858 (stitution. It)108 424.8 R .359(should print a list of completions, one\ - per line, to the standard output.)2.859 F .358(Backslash may be used) + per line, to the standard output.)2.858 F .359(Backslash may be used) 5.359 F(to escape a ne)108 436.8 Q(wline, if necessary)-.25 E(.)-.65 E -.376(After all of the possible completions are generated, an)108 453.6 R -2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F1<ad58>2.877 -E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 465.6 R -.682(\214lter is a pattern as used for pathname e)3.182 F .681 -(xpansion; a)-.15 F F1(&)3.181 E F0 .681 -(in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522 -(the w)108 477.6 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G -(iteral)-3.022 E F1(&)3.022 E F0 .523 +.377(After all of the possible completions are generated, an)108 453.6 R +2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F1<ad58>2.876 +E F0 .376(option is applied to the)2.876 F 3.181(list. The)108 465.6 R +.681(\214lter is a pattern as used for pathname e)3.181 F .681 +(xpansion; a)-.15 F F1(&)3.181 E F0 .682 +(in the pattern is replaced with the te)3.182 F .682(xt of)-.15 F .523 +(the w)108 477.6 R .523(ord being completed.)-.1 F 3.023(Al)5.523 G +(iteral)-3.023 E F1(&)3.023 E F0 .522 (may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 489.6 R -(An)5.85 E 3.35(yc)-.15 G .849 -(ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G -3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading) --3.349 E F1(!)3.349 E F0(ne)108 501.6 Q -.05(ga)-.15 G +-.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 489.6 +R(An)5.849 E 3.349(yc)-.15 G .849 +(ompletion that matches the pattern will be remo)-3.349 F -.15(ve)-.15 G +3.35(df).15 G .85(rom the list.)-3.35 F 3.35(Al)5.85 G(eading)-3.35 E F1 +(!)3.35 E F0(ne)108 501.6 Q -.05(ga)-.15 G (tes the pattern; in this case an).05 E 2.5(yc)-.15 G (ompletion not matching the pattern will be remo)-2.5 E -.15(ve)-.15 G -(d.).15 E(Finally)108 518.4 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H -.586(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F F1 +(d.).15 E(Finally)108 518.4 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H +.587(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F F1 <ad50>3.087 E F0(and)3.087 E F1<ad53>3.087 E F0 .587 (options are added to each member of the com-)3.087 F(pletion list, and\ the result is returned to the readline completion code as the list of \ -possible completions.)108 530.4 Q .247(If the pre)108 547.2 R .247 +possible completions.)108 530.4 Q .246(If the pre)108 547.2 R .247 (viously-applied actions do not generate an)-.25 F 2.747(ym)-.15 G .247 (atches, and the)-2.747 F F1 .247(\255o dir)2.747 F(names)-.15 E F0 .247 -(option w)2.747 F .246(as supplied to)-.1 F F1(complete)108 559.2 Q F0 +(option w)2.747 F .247(as supplied to)-.1 F F1(complete)108 559.2 Q F0 (when the compspec w)2.5 E -(as de\214ned, directory name completion is attempted.)-.1 E .461 -(If the)108 576 R F1 .462(\255o plusdirs)2.961 F F0 .462(option w)2.962 +(as de\214ned, directory name completion is attempted.)-.1 E .462 +(If the)108 576 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w)2.962 F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462 (when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1 F(pletion is attempted and an)108 588 Q 2.5(ym)-.15 G -(atches are added to the results of the other actions.)-2.5 E .56 -(By def)108 604.8 R .56(ault, if a compspec is found, whate)-.1 F -.15 -(ve)-.25 G 3.06(ri).15 G 3.06(tg)-3.06 G .559 -(enerates is returned to the completion code as the full set)-3.06 F -.631(of possible completions.)108 616.8 R .631(The def)5.631 F(ault)-.1 -E F1(bash)3.131 E F0 .631 -(completions are not attempted, and the readline def)3.131 F .632 -(ault of \214le-)-.1 F .559(name completion is disabled.)108 628.8 R -.559(If the)5.559 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) -3.059 F .559(as supplied to)-.1 F F1(complete)3.058 E F0 .558 -(when the compspec)3.058 F -.1(wa)108 640.8 S 3.171(sd).1 G .671 -(e\214ned, the)-3.171 F F1(bash)3.171 E F0(def)3.171 E .671 +(atches are added to the results of the other actions.)-2.5 E .559 +(By def)108 604.8 R .559(ault, if a compspec is found, whate)-.1 F -.15 +(ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56 +(enerates is returned to the completion code as the full set)-3.059 F +.632(of possible completions.)108 616.8 R .632(The def)5.632 F(ault)-.1 +E F1(bash)3.132 E F0 .631 +(completions are not attempted, and the readline def)3.131 F .631 +(ault of \214le-)-.1 F .558(name completion is disabled.)108 628.8 R +.558(If the)5.558 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) +3.059 F .559(as supplied to)-.1 F F1(complete)3.059 E F0 .559 +(when the compspec)3.059 F -.1(wa)108 640.8 S 3.172(sd).1 G .672 +(e\214ned, the)-3.172 F F1(bash)3.172 E F0(def)3.172 E .671 (ault completions are attempted if the compspec generates no matches.) --.1 F .672(If the)5.672 F F1<ad6f>3.172 E(default)108 652.8 Q F0 1.207 -(option w)3.707 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0 +-.1 F .671(If the)5.671 F F1<ad6f>3.171 E(default)108 652.8 Q F0 1.207 +(option w)3.706 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0 1.207(when the compspec w)3.707 F 1.207(as de\214ned, readline')-.1 F -3.707(sd)-.55 G(ef)-3.707 E 1.206(ault completion)-.1 F +3.707(sd)-.55 G(ef)-3.707 E 1.207(ault completion)-.1 F (will be performed if the compspec \(and, if attempted, the def)108 664.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) 2.5 E .245(When a compspec indicates that directory name completion is \ -desired, the programmable completion func-)108 681.6 R .633(tions force\ +desired, the programmable completion func-)108 681.6 R .632(tions force\ readline to append a slash to completed names which are symbolic links\ - to directories, subject)108 693.6 R 2.761(to the v)108 705.6 R 2.761 -(alue of the)-.25 F F1(mark\255dir)5.261 E(ectories)-.18 E F0 2.761 -(readline v)5.261 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.762 -(rdless of the setting of the).05 F F1(mark-sym-)5.262 E(link)108 717.6 + to directories, subject)108 693.6 R 2.762(to the v)108 705.6 R 2.762 +(alue of the)-.25 F F1(mark\255dir)5.262 E(ectories)-.18 E F0 2.761 +(readline v)5.262 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.761 +(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 717.6 Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(46)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(46)187.615 E 0 Cg EP %%Page: 47 47 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .191 -(There is some support for dynamically modifying completions.)108 84 R -.19(This is most useful when used in combina-)5.191 F 1.33 +-.35 E .19(There is some support for dynamically modifying completions.) +108 84 R .191(This is most useful when used in combina-)5.191 F 1.33 (tion with a def)108 96 R 1.33(ault completion speci\214ed with)-.1 F/F1 10/Times-Bold@0 SF 1.33(complete -D)3.83 F F0 6.33(.I)C(t')-6.33 E 3.83 (sp)-.55 G 1.33(ossible for shell functions e)-3.83 F -.15(xe)-.15 G @@ -5485,15 +5495,15 @@ BP should be retried by returning an e)108 108 R .93(xit status of 124.) -.15 F .93(If a)5.93 F .1(shell function returns 124, and changes the c\ ompspec associated with the command on which completion is)108 120 R -.666(being attempted \(supplied as the \214rst ar)108 132 R .665 -(gument when the function is e)-.18 F -.15(xe)-.15 G .665 -(cuted\), programmable completion).15 F .083(restarts from the be)108 +.665(being attempted \(supplied as the \214rst ar)108 132 R .666 +(gument when the function is e)-.18 F -.15(xe)-.15 G .666 +(cuted\), programmable completion).15 F .084(restarts from the be)108 144 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 -G .084(ompspec for that command.)-2.584 F .084(This allo)5.084 F .084 +G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F .083 (ws a set of)-.25 F(completions to be b)108 156 Q(uilt dynamically as c\ ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 -(Fo)108 172.8 S 2.637(ri).15 G .137 -(nstance, assuming that there is a library of compspecs, each k)-2.637 F +(Fo)108 172.8 S 2.636(ri).15 G .137 +(nstance, assuming that there is a library of compspecs, each k)-2.636 F .137(ept in a \214le corresponding to the name of)-.1 F (the command, the follo)108 184.8 Q(wing def)-.25 E (ault completion function w)-.1 E(ould load completions dynamically:)-.1 @@ -5501,137 +5511,137 @@ E/F2 10/Courier@0 SF(_completion_loader\(\))108 201.6 Q({)108 213.6 Q 6 (.")144 225.6 S (/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 237.6 Q(complete -D -F _completion_loader)108 249.6 Q/F3 10.95 -/Times-Bold@0 SF(HIST)72 278.4 Q(OR)-.197 E(Y)-.383 E F0 .371(When the) -108 290.4 R F1 .371(\255o history)2.871 F F0 .371(option to the)2.871 F +/Times-Bold@0 SF(HIST)72 278.4 Q(OR)-.197 E(Y)-.383 E F0 .372(When the) +108 290.4 R F1 .372(\255o history)2.872 F F0 .372(option to the)2.872 F F1(set)2.872 E F0 -.2(bu)2.872 G .372(iltin is enabled, the shell pro).2 -F .372(vides access to the)-.15 F/F4 10/Times-Italic@0 SF .372 -(command history)2.872 F F0(,)A .305(the list of commands pre)108 302.4 -R .305(viously typed.)-.25 F .305(The v)5.305 F .304(alue of the)-.25 F -/F5 9/Times-Bold@0 SF(HISTSIZE)2.804 E F0 -.25(va)2.554 G .304 -(riable is used as the number of com-).25 F .429(mands to sa)108 314.4 R -.729 -.15(ve i)-.2 H 2.929(nah).15 G .429(istory list.)-2.929 F .429 -(The te)5.429 F .429(xt of the last)-.15 F F5(HISTSIZE)2.93 E F0 .43 -(commands \(def)2.68 F .43(ault 500\) is sa)-.1 F -.15(ve)-.2 G 2.93 -(d. The).15 F(shell)2.93 E .287 +F .371(vides access to the)-.15 F/F4 10/Times-Italic@0 SF .371 +(command history)2.871 F F0(,)A .304(the list of commands pre)108 302.4 +R .304(viously typed.)-.25 F .304(The v)5.304 F .304(alue of the)-.25 F +/F5 9/Times-Bold@0 SF(HISTSIZE)2.804 E F0 -.25(va)2.554 G .305 +(riable is used as the number of com-).25 F .43(mands to sa)108 314.4 R +.73 -.15(ve i)-.2 H 2.93(nah).15 G .43(istory list.)-2.93 F .43(The te) +5.43 F .429(xt of the last)-.15 F F5(HISTSIZE)2.929 E F0 .429 +(commands \(def)2.679 F .429(ault 500\) is sa)-.1 F -.15(ve)-.2 G 2.929 +(d. The).15 F(shell)2.929 E .287 (stores each command in the history list prior to parameter and v)108 326.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E (ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 338.4 -S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565 +S 4.066(ta).2 G 1.565(fter history e)-4.066 F 1.565 (xpansion is performed, subject to the v)-.15 F 1.565 (alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0 -(and)3.816 E F5(HISTCONTR)108 350.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) +(and)3.815 E F5(HISTCONTR)108 350.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) A F0 .082 (On startup, the history is initialized from the \214le named by the v) -108 367.2 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1 -E F4(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108 +108 367.2 R(ariable)-.25 E F5(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1 +E F4(~/.bash_history)2.583 E F0(\).)A .315(The \214le named by the v)108 379.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 (is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G .315(ontain no more than the number of)-2.815 F .532 (lines speci\214ed by the v)108 391.2 R .532(alue of)-.25 F F5 (HISTFILESIZE)3.032 E F6(.)A F0 .532 (When the history \214le is read, lines be)5.032 F .532 -(ginning with the his-)-.15 F 1.158(tory comment character follo)108 -403.2 R 1.159(wed immediately by a digit are interpreted as timestamps \ -for the preceding)-.25 F .053(history line.)108 415.2 R .053 -(These timestamps are optionally displayed depending on the v)5.053 F -.052(alue of the)-.25 F F5(HISTTIMEFORMA)2.552 E(T)-.855 E F0 -.25(va) -108 427.2 S 4.386(riable. When).25 F 1.886(an interacti)4.386 F 2.187 +(ginning with the his-)-.15 F 1.159(tory comment character follo)108 +403.2 R 1.158(wed immediately by a digit are interpreted as timestamps \ +for the preceding)-.25 F .052(history line.)108 415.2 R .053 +(These timestamps are optionally displayed depending on the v)5.052 F +.053(alue of the)-.25 F F5(HISTTIMEFORMA)2.553 E(T)-.855 E F0 -.25(va) +108 427.2 S 4.387(riable. When).25 F 1.887(an interacti)4.387 F 2.187 -.15(ve s)-.25 H 1.887(hell e).15 F 1.887(xits, the last)-.15 F F5 ($HISTSIZE)4.387 E F0 1.887(lines are copied from the history list to) 4.137 F F5($HISTFILE)108 439.2 Q F6(.)A F0 .056(If the)4.556 F F1 (histappend)2.556 E F0 .056 (shell option is enabled \(see the description of)2.556 F F1(shopt)2.556 E F0(under)2.556 E F5 .056(SHELL B)2.556 F(UIL)-.09 E(TIN)-.828 E -(COMMANDS)108 451.2 Q F0(belo)2.671 E .422(w\), the lines are appended \ +(COMMANDS)108 451.2 Q F0(belo)2.672 E .422(w\), the lines are appended \ to the history \214le, otherwise the history \214le is o)-.25 F -.15(ve) --.15 G 2.922(rwritten. If).15 F F5(HISTFILE)108 463.2 Q F0 .435(is unse\ -t, or if the history \214le is unwritable, the history is not sa)2.685 F --.15(ve)-.2 G 2.934(d. If).15 F(the)2.934 E F5(HISTTIMEFORMA)2.934 E(T) --.855 E F0 -.25(va)108 475.2 S .916 +-.15 G 2.921(rwritten. If).15 F F5(HISTFILE)108 463.2 Q F0 .435(is unse\ +t, or if the history \214le is unwritable, the history is not sa)2.684 F +-.15(ve)-.2 G 2.935(d. If).15 F(the)2.935 E F5(HISTTIMEFORMA)2.935 E(T) +-.855 E F0 -.25(va)108 475.2 S .917 (riable is set, time stamps are written to the history \214le, mark).25 -F .917(ed with the history comment character)-.1 F 3.417(,s)-.4 G(o) --3.417 E(the)108 487.2 Q 3.083(ym)-.15 G .583(ay be preserv)-3.083 F -.583(ed across shell sessions.)-.15 F .582 +F .916(ed with the history comment character)-.1 F 3.416(,s)-.4 G(o) +-3.416 E(the)108 487.2 Q 3.082(ym)-.15 G .582(ay be preserv)-3.082 F +.582(ed across shell sessions.)-.15 F .583 (This uses the history comment character to distinguish time-)5.583 F -.986(stamps from other history lines.)108 499.2 R .986(After sa)5.986 F -.986(ving the history)-.2 F 3.486(,t)-.65 G .987 +.987(stamps from other history lines.)108 499.2 R .987(After sa)5.987 F +.987(ving the history)-.2 F 3.486(,t)-.65 G .986 (he history \214le is truncated to contain no more)-3.486 F(than)108 511.2 Q F5(HISTFILESIZE)2.5 E F0 2.5(lines. If)2.25 F F5(HISTFILESIZE) -2.5 E F0(is not set, no truncation is performed.)2.25 E 1.294(The b)108 -528 R 1.294(uiltin command)-.2 F F1(fc)3.794 E F0(\(see)3.794 E F5 1.293 -(SHELL B)3.794 F(UIL)-.09 E 1.293(TIN COMMANDS)-.828 F F0(belo)3.543 E -1.293(w\) may be used to list or edit and re-)-.25 F -.15(exe)108 540 S -.673(cute a portion of the history list.).15 F(The)5.673 E F1(history) +2.5 E F0(is not set, no truncation is performed.)2.25 E 1.293(The b)108 +528 R 1.293(uiltin command)-.2 F F1(fc)3.793 E F0(\(see)3.793 E F5 1.293 +(SHELL B)3.793 F(UIL)-.09 E 1.293(TIN COMMANDS)-.828 F F0(belo)3.543 E +1.294(w\) may be used to list or edit and re-)-.25 F -.15(exe)108 540 S +.674(cute a portion of the history list.).15 F(The)5.673 E F1(history) 3.173 E F0 -.2(bu)3.173 G .673 -(iltin may be used to display or modify the history list).2 F .28 +(iltin may be used to display or modify the history list).2 F .279 (and manipulate the history \214le.)108 552 R .279 (When using command-line editing, search commands are a)5.279 F -.25(va) --.2 G .279(ilable in each).25 F(editing mode that pro)108 564 Q -(vide access to the history list.)-.15 E 1.485(The shell allo)108 580.8 -R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 +-.2 G .28(ilable in each).25 F(editing mode that pro)108 564 Q +(vide access to the history list.)-.15 E 1.486(The shell allo)108 580.8 +R 1.486(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 (hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) --3.986 G 1.486(he history list.)-3.986 F(The)6.486 E F5(HISTCONTR)3.986 -E(OL)-.27 E F0(and)3.736 E F5(HISTIGNORE)108 592.8 Q F0 -.25(va)2.708 G -.458(riables may be set to cause the shell to sa).25 F .757 -.15(ve o) --.2 H .457(nly a subset of the commands entered.).15 F(The)5.457 E F1 +-3.986 G 1.486(he history list.)-3.986 F(The)6.485 E F5(HISTCONTR)3.985 +E(OL)-.27 E F0(and)3.735 E F5(HISTIGNORE)108 592.8 Q F0 -.25(va)2.707 G +.457(riables may be set to cause the shell to sa).25 F .758 -.15(ve o) +-.2 H .458(nly a subset of the commands entered.).15 F(The)5.458 E F1 (cmdhist)108 604.8 Q F0 .75 (shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05 -.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077 (the same history entry)108 616.8 R 3.577(,a)-.65 G 1.077 (dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G -1.077(yntactic correctness.)-3.577 F(The)6.077 E F1(lithist)3.576 E F0 -.373(shell option causes the shell to sa)108 628.8 R .674 -.15(ve t)-.2 -H .374(he command with embedded ne).15 F .374 -(wlines instead of semicolons.)-.25 F .374(See the)5.374 F .319 -(description of the)108 640.8 R F1(shopt)2.819 E F0 -.2(bu)2.819 G .318 +1.077(yntactic correctness.)-3.577 F(The)6.077 E F1(lithist)3.577 E F0 +.374(shell option causes the shell to sa)108 628.8 R .674 -.15(ve t)-.2 +H .374(he command with embedded ne).15 F .373 +(wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318 +(description of the)108 640.8 R F1(shopt)2.818 E F0 -.2(bu)2.818 G .318 (iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F -(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .318 +(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319 (for information on setting and)2.568 F(unsetting shell options.)108 652.8 Q F3(HIST)72 669.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E -(ANSION)-.81 E F0 .61(The shell supports a history e)108 681.6 R .611 -(xpansion feature that is similar to the history e)-.15 F .611 -(xpansion in)-.15 F F1(csh.)3.111 E F0 .611(This section)5.611 F .871 +(ANSION)-.81 E F0 .611(The shell supports a history e)108 681.6 R .611 +(xpansion feature that is similar to the history e)-.15 F .61 +(xpansion in)-.15 F F1(csh.)3.11 E F0 .61(This section)5.61 F .87 (describes what syntax features are a)108 693.6 R -.25(va)-.2 G 3.371 -(ilable. This).25 F .871(feature is enabled by def)3.371 F .87 -(ault for interacti)-.1 F 1.17 -.15(ve s)-.25 H .87(hells, and).15 F -2.013(can be disabled using the)108 705.6 R F1(+H)4.514 E F0 2.014 +(ilable. This).25 F .871(feature is enabled by def)3.371 F .871 +(ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F +2.014(can be disabled using the)108 705.6 R F1(+H)4.514 E F0 2.014 (option to the)4.514 F F1(set)4.514 E F0 -.2(bu)4.514 G 2.014 -(iltin command \(see).2 F F5 2.014(SHELL B)4.514 F(UIL)-.09 E 2.014 +(iltin command \(see).2 F F5 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 (TIN COMMANDS)-.828 F F0(belo)108 717.6 Q 2.5(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H(hells do not perform history e).15 E -(xpansion by def)-.15 E(ault.)-.1 E(GNU Bash-4.2)72 768 Q(2010 July 21) -148.175 E(47)198.165 E 0 Cg EP +(xpansion by def)-.15 E(ault.)-.1 E(GNU Bash-4.2)72 768 Q +(2010 September 6)137.625 E(47)187.615 E 0 Cg EP %%Page: 48 48 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 1.306(History e)108 84 R 1.306(xpansions introduce w)-.15 F 1.306 +-.35 E 1.305(History e)108 84 R 1.305(xpansions introduce w)-.15 F 1.306 (ords from the history list into the input stream, making it easy to re\ -peat)-.1 F .209(commands, insert the ar)108 96 R .209(guments to a pre) --.18 F .21 +peat)-.1 F .21(commands, insert the ar)108 96 R .21(guments to a pre) +-.18 F .209 (vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(commands quickly)108 108 Q(.)-.65 E 1.164(History e)108 +F(vious)-.25 E(commands quickly)108 108 Q(.)-.65 E 1.163(History e)108 124.8 R 1.163(xpansion is performed immediately after a complete line i\ s read, before the shell breaks it into)-.15 F -.1(wo)108 136.8 S 3.2 (rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2 (arts. The)-3.2 F .7 (\214rst is to determine which line from the history list to use during) -3.2 F 4.368(substitution. The)108 148.8 R 1.868(second is to select por\ -tions of that line for inclusion into the current one.)4.368 F 1.867 -(The line)6.867 F .662(selected from the history is the)108 160.8 R/F1 -10/Times-Italic@0 SF -.15(ev)3.162 G(ent).15 E F0 3.162(,a)C .663 -(nd the portions of that line that are acted upon are)-3.162 F F1(wor) -3.163 E(ds)-.37 E F0 5.663(.V)C(arious)-6.773 E F1(modi\214er)108 172.8 -Q(s)-.1 E F0 .227(are a)2.727 F -.25(va)-.2 G .227 -(ilable to manipulate the selected w).25 F 2.727(ords. The)-.1 F .226 -(line is brok)2.726 F .226(en into w)-.1 F .226(ords in the same f)-.1 F -(ashion)-.1 E .351(as when reading input, so that se)108 184.8 R -.15 -(ve)-.25 G(ral).15 E F1(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .352 -(-separated w)B .352(ords surrounded by quotes are considered)-.1 F .625 -(one w)108 196.8 R 3.125(ord. History)-.1 F -.15(ex)3.125 G .624 -(pansions are introduced by the appearance of the history e).15 F .624 -(xpansion character)-.15 F 3.124(,w)-.4 G(hich)-3.124 E(is)108 208.8 Q +3.2 F 4.367(substitution. The)108 148.8 R 1.868(second is to select por\ +tions of that line for inclusion into the current one.)4.367 F 1.868 +(The line)6.868 F .663(selected from the history is the)108 160.8 R/F1 +10/Times-Italic@0 SF -.15(ev)3.163 G(ent).15 E F0 3.163(,a)C .663 +(nd the portions of that line that are acted upon are)-3.163 F F1(wor) +3.162 E(ds)-.37 E F0 5.662(.V)C(arious)-6.772 E F1(modi\214er)108 172.8 +Q(s)-.1 E F0 .226(are a)2.726 F -.25(va)-.2 G .226 +(ilable to manipulate the selected w).25 F 2.726(ords. The)-.1 F .227 +(line is brok)2.726 F .227(en into w)-.1 F .227(ords in the same f)-.1 F +(ashion)-.1 E .352(as when reading input, so that se)108 184.8 R -.15 +(ve)-.25 G(ral).15 E F1(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .351 +(-separated w)B .351(ords surrounded by quotes are considered)-.1 F .624 +(one w)108 196.8 R 3.124(ord. History)-.1 F -.15(ex)3.124 G .624 +(pansions are introduced by the appearance of the history e).15 F .625 +(xpansion character)-.15 F 3.125(,w)-.4 G(hich)-3.125 E(is)108 208.8 Q /F2 10/Times-Bold@0 SF(!)3.333 E F0(by def)3.333 E 2.5(ault. Only)-.1 F (backslash \()2.5 E F2(\\).833 E F0 2.5(\)a).833 G (nd single quotes can quote the history e)-2.5 E(xpansion character)-.15 @@ -5639,210 +5649,213 @@ E(.)-.55 E(Se)108 225.6 Q -.15(ve)-.25 G .03 (ral characters inhibit history e).15 F .03 (xpansion if found immediately follo)-.15 F .03(wing the history e)-.25 F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 237.6 T -3.163(ni).25 G 3.163(fi)-3.163 G 3.162(ti)-3.163 G 3.162(su)-3.162 G +3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G .662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and) -.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2 -(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.162 E +(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.163 E F0(will also inhibit e)108 249.6 Q(xpansion.)-.15 E(Se)108 266.4 Q -.15 -(ve)-.25 G .109(ral shell options settable with the).15 F F2(shopt)2.609 -E F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11 -(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 278.4 R F2 +(ve)-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E +F0 -.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109 +(vior of history e)-.2 F(xpansion.)-.15 E 1.142(If the)108 278.4 R F2 (histv)3.643 E(erify)-.1 E F0 1.143 (shell option is enabled \(see the description of the)3.643 F F2(shopt) 3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F2 --.18(re)3.643 G(adline).18 E F0(is)3.642 E .461(being used, history sub\ +-.18(re)3.643 G(adline).18 E F0(is)3.643 E .461(being used, history sub\ stitutions are not immediately passed to the shell parser)108 290.4 R -5.461(.I)-.55 G .461(nstead, the e)-5.461 F .461(xpanded line)-.15 F -1.516(is reloaded into the)108 302.4 R F2 -.18(re)4.016 G(adline).18 E -F0 1.516(editing b)4.016 F(uf)-.2 E 1.516 -(fer for further modi\214cation.)-.25 F(If)6.516 E F2 -.18(re)4.015 G -(adline).18 E F0 1.515(is being used, and the)4.015 F F2(histr)108 314.4 -Q(eedit)-.18 E F0 1.202(shell option is enabled, a f)3.702 F 1.202 +5.46(.I)-.55 G .46(nstead, the e)-5.46 F .46(xpanded line)-.15 F 1.515 +(is reloaded into the)108 302.4 R F2 -.18(re)4.015 G(adline).18 E F0 +1.515(editing b)4.015 F(uf)-.2 E 1.516(fer for further modi\214cation.) +-.25 F(If)6.516 E F2 -.18(re)4.016 G(adline).18 E F0 1.516 +(is being used, and the)4.016 F F2(histr)108 314.4 Q(eedit)-.18 E F0 +1.202(shell option is enabled, a f)3.702 F 1.202 (ailed history substitution will be reloaded into the)-.1 F F2 -.18(re) 3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 326.4 S -.25(ff).2 G -1.161(er for correction.).25 F(The)6.161 E F2<ad70>3.661 E F0 1.161 -(option to the)3.661 F F2(history)3.661 E F0 -.2(bu)3.661 G 1.16 +1.16(er for correction.).25 F(The)6.16 E F2<ad70>3.66 E F0 1.16 +(option to the)3.66 F F2(history)3.66 E F0 -.2(bu)3.661 G 1.161 (iltin command may be used to see what a history).2 F -.15(ex)108 338.4 -S .055(pansion will do before using it.).15 F(The)5.055 E F2<ad73>2.555 -E F0 .055(option to the)2.555 F F2(history)2.556 E F0 -.2(bu)2.556 G -.056(iltin may be used to add commands to the).2 F +S .056(pansion will do before using it.).15 F(The)5.056 E F2<ad73>2.556 +E F0 .056(option to the)2.556 F F2(history)2.555 E F0 -.2(bu)2.555 G +.055(iltin may be used to add commands to the).2 F (end of the history list without actually e)108 350.4 Q -.15(xe)-.15 G (cuting them, so that the).15 E 2.5(ya)-.15 G(re a)-2.5 E -.25(va)-.2 G (ilable for subsequent recall.).25 E 2.2(The shell allo)108 367.2 R 2.2 (ws control of the v)-.25 F 2.2(arious characters used by the history e) --.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.146(description of)108 -379.2 R F2(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) -.15 E F2 1.146(Shell V)3.646 F(ariables)-.92 E F0 3.646(\). The)B 1.147 +-.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.147(description of)108 +379.2 R F2(histchars)3.647 E F0(abo)3.647 E 1.447 -.15(ve u)-.15 H(nder) +.15 E F2 1.147(Shell V)3.647 F(ariables)-.92 E F0 3.646(\). The)B 1.146 (shell uses the history comment character to)3.646 F (mark history timestamps when writing the history \214le.)108 391.2 Q F2 -(Ev)87 408 Q(ent Designators)-.1 E F0(An e)108 420 Q -.15(ve)-.25 G(nt \ -designator is a reference to a command line entry in the history list.) -.15 E F2(!)108 436.8 Q F0 1.608(Start a history substitution, e)32.67 F -1.608(xcept when follo)-.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 -4.107(,n)C -.25(ew)-4.107 G 1.607(line, carriage return, = or \().25 F -(\(when the)144 448.8 Q F2(extglob)2.5 E F0 -(shell option is enabled using the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G -(iltin\).).2 E F2(!)108 460.8 Q F1(n)A F0(Refer to command line)27.67 E -F1(n)2.5 E F0(.).24 E F2<21ad>108 472.8 Q F1(n)A F0 -(Refer to the current command line minus)21.97 E F1(n)2.5 E F0(.).24 E -F2(!!)108 484.8 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 496.8 Q F1(string) -A F0(Refer to the most recent command starting with)9.33 E F1(string)2.5 -E F0(.).22 E F2(!?)108 508.8 Q F1(string)A F2([?])A F0 1.022 -(Refer to the most recent command containing)144 520.8 R F1(string)3.522 -E F0 6.022(.T).22 G 1.022(he trailing)-6.022 F F2(?)3.522 E F0 1.022 -(may be omitted if)3.522 F F1(string)3.862 E F0(is)3.742 E(follo)144 -532.8 Q(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0 -SF(^)108 549.8 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0 -2.63(Quick substitution.)144 556.8 R 2.629 -(Repeat the last command, replacing)7.629 F F1(string1)5.469 E F0(with) -5.129 E F1(string2)5.129 E F0 7.629(.E).02 G(qui)-7.629 E -.25(va)-.25 G -2.629(lent to).25 F -.74(``)144 568.8 S(!!:s/).74 E F1(string1)A F0(/)A -F1(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 -(belo)2.5 E(w\).)-.25 E F2(!#)108 580.8 Q F0 +(Ev)87 408 Q(ent Designators)-.1 E F0 .204(An e)108 420 R -.15(ve)-.25 G +.204(nt designator is a reference to a command line entry in the histor\ +y list.).15 F .205(Unless the reference is abso-)5.204 F(lute, e)108 432 +Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5(ot).15 G +(he current position in the history list.)-2.5 E F2(!)108 448.8 Q F0 +1.608(Start a history substitution, e)32.67 F 1.608(xcept when follo) +-.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107(,n)C -.25(ew) +-4.107 G 1.607(line, carriage return, = or \().25 F(\(when the)144 460.8 +Q F2(extglob)2.5 E F0(shell option is enabled using the)2.5 E F2(shopt) +2.5 E F0 -.2(bu)2.5 G(iltin\).).2 E F2(!)108 472.8 Q F1(n)A F0 +(Refer to command line)27.67 E F1(n)2.5 E F0(.).24 E F2<21ad>108 484.8 Q +F1(n)A F0(Refer to the current command minus)21.97 E F1(n)2.5 E F0(.).24 +E F2(!!)108 496.8 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E +(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 508.8 Q F1(string) +A F0 .865(Refer to the most recent command preceding the current positi\ +on in the history list starting with)9.33 F F1(string)144 520.8 Q F0(.) +.22 E F2(!?)108 532.8 Q F1(string)A F2([?])A F0 1.304(Refer to the most\ + recent command preceding the current postition in the history list con\ +taining)144 544.8 R F1(string)144 556.8 Q F0 5(.T).22 G(he trailing)-5 E +F2(?)2.5 E F0(may be omitted if)2.5 E F1(string)2.84 E F0(is follo)2.72 +E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0 SF(^) +108 573.8 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0 .783 +(Quick substitution.)144 580.8 R .783(Repeat the pre)5.783 F .784 +(vious command, replacing)-.25 F F1(string1)3.624 E F0(with)3.284 E F1 +(string2)3.284 E F0 5.784(.E).02 G(qui)-5.784 E -.25(va)-.25 G .784 +(lent to).25 F -.74(``)144 592.8 S(!!:s/).74 E F1(string1)A F0(/)A F1 +(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 +(belo)2.5 E(w\).)-.25 E F2(!#)108 604.8 Q F0 (The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F2 -.75 -(Wo)87 597.6 S(rd Designators).75 E F0 -.8(Wo)108 609.6 S 1.313 +(Wo)87 621.6 S(rd Designators).75 E F0 -.8(Wo)108 633.6 S 1.314 (rd designators are used to select desired w).8 F 1.314(ords from the e) --.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.314 -(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F -.53(from the w)108 621.6 R .529(ord designator)-.1 F 5.529(.I)-.55 G +-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.313 +(separates the e)3.813 F -.15(ve)-.25 G 1.313(nt speci\214cation).15 F +.529(from the w)108 645.6 R .529(ord designator)-.1 F 5.529(.I)-.55 G 3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 (ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2 ($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r) --3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 -(are numbered from the be)108 633.6 R 1.3 -(ginning of the line, with the \214rst w)-.15 F 1.301 -(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8 -F(inserted into the current line separated by single spaces.)108 645.6 Q -F2 2.5(0\()108 662.4 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 674.4 Q +-3.029 E F2(%)3.029 E F0 5.53(.W)C(ords)-6.33 E 1.301 +(are numbered from the be)108 657.6 R 1.301 +(ginning of the line, with the \214rst w)-.15 F 1.3 +(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.3 G 1.3(rds are).8 F +(inserted into the current line separated by single spaces.)108 669.6 Q +F2 2.5(0\()108 686.4 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 698.4 Q 2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E -F1(n)108.36 686.4 Q F0(The)30.64 E F1(n)2.5 E F0(th w)A(ord.)-.1 E F2(^) -108 698.4 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 -E(ord 1.)-.1 E F2($)108 710.4 Q F0(The last ar)31 E(gument.)-.18 E -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(48)198.165 E 0 Cg EP +F1(n)108.36 710.4 Q F0(The)30.64 E F1(n)2.5 E F0(th w)A(ord.)-.1 E +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(48)187.615 E 0 Cg EP %%Page: 49 49 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(%)108 84 Q F0(The w)26 E +-.35 E/F1 10/Times-Bold@0 SF(^)108 84 Q F0(The \214rst ar)32.67 E 2.5 +(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 96 Q F0 +(The last ar)31 E(gument.)-.18 E F1(%)108 108 Q F0(The w)26 E (ord matched by the most recent `?)-.1 E/F2 10/Times-Italic@0 SF(string) -A F0(?' search.)A F2(x)108.77 96 Q F1<ad>A F2(y)A F0 2.5(Ar)20.65 G +A F0(?' search.)A F2(x)108.77 120 Q F1<ad>A F2(y)A F0 2.5(Ar)20.65 G (ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 E -(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 108 Q F0 .316 -(All of the w)31 F .316(ords b)-.1 F .316(ut the zeroth.)-.2 F .315 +(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 132 Q F0 .315 +(All of the w)31 F .315(ords b)-.1 F .315(ut the zeroth.)-.2 F .315 (This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815 -('. It)B .315(is not an error to use)2.815 F F1(*)2.815 E F0 .315 -(if there is)2.815 F(just one w)144 120 Q(ord in the e)-.1 E -.15(ve) +('. It)B .315(is not an error to use)2.815 F F1(*)2.816 E F0 .316 +(if there is)2.816 F(just one w)144 144 Q(ord in the e)-.1 E -.15(ve) -.25 G(nt; the empty string is returned in that case.).15 E F1(x*)108 -132 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad>108 144 +156 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad>108 168 Q F0(Abbre)25.3 E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 E F1 (x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w)108 -160.8 Q(ord designator is supplied without an e)-.1 E -.15(ve)-.25 G +184.8 Q(ord designator is supplied without an e)-.1 E -.15(ve)-.25 G (nt speci\214cation, the pre).15 E(vious command is used as the e)-.25 E --.15(ve)-.25 G(nt.).15 E F1(Modi\214ers)87 177.6 Q F0 .183 -(After the optional w)108 189.6 R .183(ord designator)-.1 F 2.683(,t)-.4 -G .184(here may appear a sequence of one or more of the follo)-2.683 F -.184(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 201.6 Q F1(h) -108 218.4 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H +-.15(ve)-.25 G(nt.).15 E F1(Modi\214ers)87 201.6 Q F0 .184 +(After the optional w)108 213.6 R .184(ord designator)-.1 F 2.684(,t)-.4 +G .183(here may appear a sequence of one or more of the follo)-2.684 F +.183(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 225.6 Q F1(h) +108 242.4 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H (railing \214le name component, lea).15 E(ving only the head.)-.2 E F1 -(t)108 230.4 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H +(t)108 254.4 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H (ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r) -108 242.4 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E +108 266.4 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E (\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E -(ving the basename.)-.2 E F1(e)108 254.4 Q F0(Remo)31.56 E .3 -.15(ve a) --.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 266.4 +(ving the basename.)-.2 E F1(e)108 278.4 Q F0(Remo)31.56 E .3 -.15(ve a) +-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 290.4 Q F0(Print the ne)30.44 E 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2 -E -.15(xe)-.15 G(cute it.).15 E F1(q)108 278.4 Q F0 +E -.15(xe)-.15 G(cute it.).15 E F1(q)108 302.4 Q F0 (Quote the substituted w)30.44 E(ords, escaping further substitutions.) --.1 E F1(x)108 290.4 Q F0(Quote the substituted w)31 E(ords as with)-.1 +-.1 E F1(x)108 314.4 Q F0(Quote the substituted w)31 E(ords as with)-.1 E F1(q)2.5 E F0 2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks) -2.5 E F0(and ne)2.5 E(wlines.)-.25 E F1(s/)108 302.4 Q F2(old)A F1(/)A -F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 314.4 Q F2(ne)3.082 E(w)-.15 E -F0 .221(for the \214rst occurrence of)3.032 F F2(old)2.951 E F0 .221 +2.5 E F0(and ne)2.5 E(wlines.)-.25 E F1(s/)108 326.4 Q F2(old)A F1(/)A +F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 338.4 Q F2(ne)3.081 E(w)-.15 E +F0 .221(for the \214rst occurrence of)3.031 F F2(old)2.951 E F0 .221 (in the e)3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721 -(yd)-.15 G .221(elimiter can be used in place)-2.721 F .616(of /.)144 -326.4 R .617 +(yd)-.15 G .221(elimiter can be used in place)-2.721 F .617(of /.)144 +350.4 R .617 (The \214nal delimiter is optional if it is the last character of the e) -5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617 -F .666(be quoted in)144 338.4 R F2(old)3.396 E F0(and)3.936 E F2(ne) +5.617 F -.15(ve)-.25 G .617(nt line.).15 F .616(The delimiter may)5.616 +F .666(be quoted in)144 362.4 R F2(old)3.396 E F0(and)3.936 E F2(ne) 3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 (If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166 (ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E -F0 5.666(.A).77 G .274(single backslash will quote the &.)144 350.4 R -(If)5.274 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 -F F2(old)3.005 E F0 .275(substituted, or)3.545 F 2.775(,i)-.4 G 2.775 -(fn)-2.775 G 2.775(op)-2.775 G(re)-2.775 E(vi-)-.25 E -(ous history substitutions took place, the last)144 362.4 Q F2(string) +F0 5.666(.A).77 G .275(single backslash will quote the &.)144 374.4 R +(If)5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 +F F2(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774 +(fn)-2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E +(ous history substitutions took place, the last)144 386.4 Q F2(string) 2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1 -(&)108 374.4 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1 -(g)108 386.4 Q F0 .398(Cause changes to be applied o)31 F -.15(ve)-.15 G -2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398(nt line.) -.15 F .397(This is used in conjunction with `)5.398 F F1(:s)A F0 2.897 -('\()C(e.g.,)-2.897 E(`)144 398.4 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) --.15 E F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218 -(used with `)3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219 -(elimiter can be used in place of /, and the \214nal)-3.718 F .09 -(delimiter is optional if it is the last character of the e)144 410.4 R --.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089 -(may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 422.4 Q F0 -(.)A F1(G)108 434.4 Q F0(Apply the follo)28.22 E(wing `)-.25 E F1(s)A F0 -2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 -G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 451.2 Q(UIL)-.11 E -(TIN COMMANDS)-1.007 E F0 .062(Unless otherwise noted, each b)108 463.2 +(&)108 398.4 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1 +(g)108 410.4 Q F0 .397(Cause changes to be applied o)31 F -.15(ve)-.15 G +2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.) +.15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898 +('\()C(e.g.,)-2.898 E(`)144 422.4 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) +-.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719('. If)B 1.219 +(used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.218 +(elimiter can be used in place of /, and the \214nal)-3.718 F .089 +(delimiter is optional if it is the last character of the e)144 434.4 R +-.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09 +(may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 446.4 Q F0(.)A +F1(G)108 458.4 Q F0(Apply the follo)28.22 E(wing `)-.25 E F1(s)A F0 2.5 +('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G +(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 475.2 Q(UIL)-.11 E +(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 487.2 R .062(uiltin command documented in this section as accepting options p\ -receded by)-.2 F F1<ad>108 475.2 Q F0(accepts)2.534 E F1<adad>2.534 E F0 -.034(to signify the end of the options.)2.534 F(The)5.034 E F1(:)2.534 E +receded by)-.2 F F1<ad>108 499.2 Q F0(accepts)2.533 E F1<adad>2.533 E F0 +.034(to signify the end of the options.)2.533 F(The)5.034 E F1(:)2.534 E F0(,)A F1(true)2.534 E F0(,)A F1(false)2.534 E F0 2.534(,a)C(nd)-2.534 E -F1(test)2.534 E F0 -.2(bu)2.534 G .033(iltins do not accept options and) -.2 F .077(do not treat)108 487.2 R F1<adad>2.577 E F0(specially)2.577 E +F1(test)2.534 E F0 -.2(bu)2.534 G .034(iltins do not accept options and) +.2 F .078(do not treat)108 511.2 R F1<adad>2.577 E F0(specially)2.577 E 5.077(.T)-.65 G(he)-5.077 E F1(exit)2.577 E F0(,)A F1(logout)2.577 E F0 (,)A F1(br)2.577 E(eak)-.18 E F0(,)A F1(continue)2.577 E F0(,)A F1(let) 2.577 E F0 2.577(,a)C(nd)-2.577 E F1(shift)2.577 E F0 -.2(bu)2.577 G -.077(iltins accept and process ar).2 F(gu-)-.18 E .32(ments be)108 499.2 -R .32(ginning with)-.15 F F1<ad>2.82 E F0 .32(without requiring)2.82 F -F1<adad>2.82 E F0 5.319(.O)C .319(ther b)-5.319 F .319 -(uiltins that accept ar)-.2 F .319(guments b)-.18 F .319 -(ut are not speci\214ed as)-.2 F 1.143(accepting options interpret ar) -108 511.2 R 1.143(guments be)-.18 F 1.143(ginning with)-.15 F F1<ad> +.077(iltins accept and process ar).2 F(gu-)-.18 E .319(ments be)108 +523.2 R .319(ginning with)-.15 F F1<ad>2.819 E F0 .319 +(without requiring)2.819 F F1<adad>2.819 E F0 5.319(.O)C .319(ther b) +-5.319 F .319(uiltins that accept ar)-.2 F .32(guments b)-.18 F .32 +(ut are not speci\214ed as)-.2 F 1.144(accepting options interpret ar) +108 535.2 R 1.144(guments be)-.18 F 1.144(ginning with)-.15 F F1<ad> 3.643 E F0 1.143(as in)3.643 F -.25(va)-.4 G 1.143 -(lid options and require).25 F F1<adad>3.644 E F0 1.144(to pre)3.644 F --.15(ve)-.25 G 1.144(nt this).15 F(interpretation.)108 523.2 Q F1(:)108 -541.2 Q F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .452(No ef)144 553.2 R -.452(fect; the command does nothing be)-.25 F .452(yond e)-.15 F -(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an) -3.221 F 2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. A)144 -565.2 R(zero e)2.5 E(xit code is returned.)-.15 E F1(.)110.5 582 Q F2 +(lid options and require).25 F F1<adad>3.643 E F0 1.143(to pre)3.643 F +-.15(ve)-.25 G 1.143(nt this).15 F(interpretation.)108 547.2 Q F1(:)108 +565.2 Q F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .451(No ef)144 577.2 R +.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F +(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an) +3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. A)144 +589.2 R(zero e)2.5 E(xit code is returned.)-.15 E F1(.)110.5 606 Q F2 (\214lename)6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 -594 Q(ce)-.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0 -(])A 1.02(Read and e)144 606 R -.15(xe)-.15 G 1.02(cute commands from) +618 Q(ce)-.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0 +(])A 1.02(Read and e)144 630 R -.15(xe)-.15 G 1.02(cute commands from) .15 F F2(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 (vironment and return the e)-.4 F(xit)-.15 E 1.68 -(status of the last command e)144 618 R -.15(xe)-.15 G 1.68(cuted from) +(status of the last command e)144 642 R -.15(xe)-.15 G 1.68(cuted from) .15 F F2(\214lename)4.18 E F0 6.68(.I).18 G(f)-6.68 E F2(\214lename)6.09 -E F0 1.68(does not contain a slash, \214le)4.36 F .608(names in)144 630 +E F0 1.68(does not contain a slash, \214le)4.36 F .608(names in)144 654 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 .608 (are used to \214nd the directory containing)2.858 F F2(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4 -.666(PA) -3.108 G(TH)-.189 E F0 .833(need not be e)144 642 R -.15(xe)-.15 G 3.333 -(cutable. When).15 F F1(bash)3.333 E F0 .832(is not in)3.333 F F2 .832 -(posix mode)3.332 F F0 3.332(,t)C .832 -(he current directory is searched if no)-3.332 F .981 -(\214le is found in)144 654 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 +3.108 G(TH)-.189 E F0 .832(need not be e)144 666 R -.15(xe)-.15 G 3.332 +(cutable. When).15 F F1(bash)3.332 E F0 .832(is not in)3.332 F F2 .832 +(posix mode)3.332 F F0 3.332(,t)C .833 +(he current directory is searched if no)-3.332 F .982 +(\214le is found in)144 678 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 /Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18 E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981 -(iltin command is turned of).2 F .982(f, the)-.25 F F4 -.666(PA)144 666 -S(TH)-.189 E F0 .112(is not searched.)2.363 F .112(If an)5.112 F(y)-.15 +(iltin command is turned of).2 F .981(f, the)-.25 F F4 -.666(PA)144 690 +S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F 2.612 (yb)-.15 G .112(ecome the positional parameters when)-2.612 F F2 -(\214lename)144 678 Q F0 .341(is e)2.841 F -.15(xe)-.15 G 2.841 -(cuted. Otherwise).15 F .341(the positional parameters are unchanged.) -2.841 F .342(The return status is the)5.342 F .716 -(status of the last command e)144 690 R .716 +(\214lename)144 702 Q F0 .342(is e)2.842 F -.15(xe)-.15 G 2.842 +(cuted. Otherwise).15 F .342(the positional parameters are unchanged.) +2.842 F .341(The return status is the)5.341 F .716 +(status of the last command e)144 714 R .716 (xited within the script \(0 if no commands are e)-.15 F -.15(xe)-.15 G -.716(cuted\), and f).15 F .715(alse if)-.1 F F2(\214lename)145.91 702 Q +.716(cuted\), and f).15 F .716(alse if)-.1 F F2(\214lename)145.91 726 Q F0(is not found or cannot be read.)2.68 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(49)198.165 E 0 Cg EP +(2010 September 6)137.625 E(49)187.615 E 0 Cg EP %%Page: 50 50 %%BeginPageSetup BP @@ -5850,9 +5863,9 @@ BP /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E/F1 10/Times-Bold@0 SF(alias)108 84 Q F0([)2.5 E F1<ad70>A 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(Alias)144 96 Q F0 2.724(with no ar)5.224 F 2.724 +(..])-2.5 E F1(Alias)144 96 Q F0 2.725(with no ar)5.225 F 2.724 (guments or with the)-.18 F F1<ad70>5.224 E F0 2.724 -(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E +(option prints the list of aliases in the form)5.224 F F1(alias)5.224 E F2(name)144 108 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F .58(When ar)5.58 F .58 (guments are supplied, an alias is de\214ned for each)-.18 F F2(name) @@ -5862,23 +5875,23 @@ F2(name)144 108 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F (ord to be check)-.1 F .395(ed for alias sub-)-.1 F .054 (stitution when the alias is e)144 132 R 2.554(xpanded. F)-.15 F .054 (or each)-.15 F F2(name)2.554 E F0 .054(in the ar)2.554 F .054 -(gument list for which no)-.18 F F2(value)2.554 E F0 .053(is sup-)2.553 -F 1.313(plied, the name and v)144 144 R 1.314 +(gument list for which no)-.18 F F2(value)2.554 E F0 .054(is sup-)2.554 +F 1.314(plied, the name and v)144 144 R 1.314 (alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314 -(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F --.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E +(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F +-.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E (which no alias has been de\214ned.)144 156 Q F1(bg)108 172.8 Q F0([)2.5 -E F2(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144 184.8 R -F2(jobspec)3.245 E F0 .745 -(in the background, as if it had been started with)3.245 F F1(&)3.244 E -F0 5.744(.I)C(f)-5.744 E F2(job-)4.984 E(spec)144 196.8 Q F0 .671 -(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the) --3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 -(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 +E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 184.8 R +F2(jobspec)3.244 E F0 .745 +(in the background, as if it had been started with)3.244 F F1(&)3.245 E +F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 196.8 Q F0 .672 +(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) +-3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 +(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 (when job control is disabled or)144 208.8 R 2.919(,w)-.4 G .419 -(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G -(peci\214ed)-2.918 E F2(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G -(ot)-2.918 E(found or w)144 220.8 Q(as started without job control.)-.1 +(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G +(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G +(ot)-2.919 E(found or w)144 220.8 Q(as started without job control.)-.1 E F1(bind)108 237.6 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1(\255lpsvPSV)-2.5 E F0(])A F1(bind)108 249.6 Q F0([)2.5 E F1 <ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1<ad71>-2.5 E F2 @@ -5890,29 +5903,29 @@ G(ymap)-.2 E F0(])A F1<ad78>2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 (shell\255command)A F1(bind)108 285.6 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke) 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 (function\255name)A F1(bind)108 297.6 Q F2 -.37(re)2.5 G -(adline\255command).37 E F0 .238(Display current)144 309.6 R F1 -.18(re) -2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239 -(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239 -(equence to a).15 F F1 -.18(re)2.739 G(adline).18 E F0 .239(function or) -2.739 F .476(macro, or set a)144 321.6 R F1 -.18(re)2.976 G(adline).18 E -F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F -.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F2 -(.inputr)144 333.6 Q(c)-.37 E F0 2.983(,b).31 G .484 -(ut each binding or command must be passed as a separate ar)-3.183 F -.484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 +(adline\255command).37 E F0 .239(Display current)144 309.6 R F1 -.18(re) +2.739 G(adline).18 E F0 -.1(ke)2.739 G 2.739(ya)-.05 G .239 +(nd function bindings, bind a k)-2.739 F .539 -.15(ey s)-.1 H .238 +(equence to a).15 F F1 -.18(re)2.738 G(adline).18 E F0 .238(function or) +2.738 F .475(macro, or set a)144 321.6 R F1 -.18(re)2.975 G(adline).18 E +F0 -.25(va)2.975 G 2.975(riable. Each).25 F .476(non-option ar)2.976 F +.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2 +(.inputr)144 333.6 Q(c)-.37 E F0 2.984(,b).31 G .484 +(ut each binding or command must be passed as a separate ar)-3.184 F +.483(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 (re\255read\255init\255\214le'. Options,)144 345.6 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad6d>144 -357.6 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 369.6 Q F2 -.1(ke)5.159 G -(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658(map to be af) -.15 F 2.658(fected by the subsequent bindings.)-.25 F(Acceptable)7.658 E -F2 -.1(ke)180 381.6 S(ymap)-.2 E F0 3.192(names are)5.882 F F2 3.192 -(emacs, emacs\255standar)5.692 F 3.193 +357.6 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 369.6 Q F2 -.1(ke)5.158 G +(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af) +.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E +F2 -.1(ke)180 381.6 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193 +(emacs, emacs\255standar)5.693 F 3.192 (d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E -(vi\255command)180 393.6 Q F0 4.43(,a)C(nd)-4.43 E F2(vi\255insert)4.429 -E F0(.).68 E F2(vi)6.929 E F0 1.929(is equi)4.429 F -.25(va)-.25 G 1.929 -(lent to).25 F F2(vi\255command)4.429 E F0(;)A F2(emacs)4.429 E F0 1.929 -(is equi)4.429 F -.25(va)-.25 G 1.929(lent to).25 F F2(emacs\255standar) -180 405.6 Q(d)-.37 E F0(.)A F1<ad6c>144 417.6 Q F0 +(vi\255command)180 393.6 Q F0 4.429(,a)C(nd)-4.429 E F2(vi\255insert) +4.429 E F0(.).68 E F2(vi)6.929 E F0 1.929(is equi)4.429 F -.25(va)-.25 G +1.929(lent to).25 F F2(vi\255command)4.429 E F0(;)A F2(emacs)4.429 E F0 +1.929(is equi)4.429 F -.25(va)-.25 G 1.93(lent to).25 F F2 +(emacs\255standar)180 405.6 Q(d)-.37 E F0(.)A F1<ad6c>144 417.6 Q F0 (List the names of all)27.52 E F1 -.18(re)2.5 G(adline).18 E F0 (functions.)2.5 E F1<ad70>144 429.6 Q F0(Display)24.74 E F1 -.18(re)2.5 G(adline).18 E F0(function names and bindings in such a w)2.5 E @@ -5943,30 +5956,30 @@ F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 597.6 Q .3 -.15(ve a)-.15 H .3 (shell\255command)A F0(Cause)180 621.6 Q F2(shell\255command)4.325 E F0 1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) -.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F -(When)6.825 E F2(shell\255com-)4.325 E(mand)180 633.6 Q F0 1.764(is e) -4.264 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 +(When)6.825 E F2(shell\255com-)4.325 E(mand)180 633.6 Q F0 1.765(is e) +4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 /Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 (riable to the contents of the).25 F F1 -.18(re)180 645.6 S(adline).18 E -F0 1.353(line b)3.853 F(uf)-.2 E 1.353(fer and the)-.25 F F3 +F0 1.353(line b)3.852 F(uf)-.2 E 1.353(fer and the)-.25 F F3 (READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 -(riable to the current location of the).25 F 2.011(insertion point.)180 -657.6 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011 +(riable to the current location of the).25 F 2.012(insertion point.)180 +657.6 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011 (cuted command changes the v).15 F 2.011(alue of)-.25 F F3 -(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 669.6 Q/F4 9 +(READLINE_LINE)4.511 E F0(or)4.261 E F3(READLINE_POINT)180 669.6 Q/F4 9 /Times-Roman@0 SF(,)A F0(those ne)2.25 E 2.5(wv)-.25 G (alues will be re\215ected in the editing state.)-2.75 E(The return v) 144 686.4 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 (ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 -E F1(br)108 703.2 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055 -(Exit from within a)144 715.2 R F1 -.25(fo)2.555 G(r).25 E F0(,)A F1 -(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 +E F1(br)108 703.2 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 +(Exit from within a)144 715.2 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1 +(while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 (select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055 (is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G -(ls.).15 E F2(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF<b3>2.554 -E F0(1.)2.554 E(If)144 727.2 Q F2(n)3.074 E F0 .215(is greater than the\ - number of enclosing loops, all enclosing loops are e)2.954 F 2.715 -(xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(GNU Bash-4.2)72 768 -Q(2010 July 21)148.175 E(50)198.165 E 0 Cg EP +(ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF<b3>2.555 +E F0(1.)2.555 E(If)144 727.2 Q F2(n)3.075 E F0 .215(is greater than the\ + number of enclosing loops, all enclosing loops are e)2.955 F 2.714 +(xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(GNU Bash-4.2)72 768 +Q(2010 September 6)137.625 E(50)187.615 E 0 Cg EP %%Page: 51 51 %%BeginPageSetup BP @@ -5975,108 +5988,108 @@ BP -.35 E(is 0 unless)144 84 Q/F1 10/Times-Italic@0 SF(n)2.5 E F0 (is not greater than or equal to 1.)2.5 E/F2 10/Times-Bold@0 SF -.2(bu) 108 100.8 S(iltin).2 E F1(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E F1 -(ar)A(guments)-.37 E F0(])A(Ex)144 112.8 Q .793 -(ecute the speci\214ed shell b)-.15 F .793(uiltin, passing it)-.2 F F1 +(ar)A(guments)-.37 E F0(])A(Ex)144 112.8 Q .792 +(ecute the speci\214ed shell b)-.15 F .792(uiltin, passing it)-.2 F F1 (ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293 -F .792(xit status.)-.15 F .792(This is useful)5.792 F .615 +F .793(xit status.)-.15 F .793(This is useful)5.793 F .616 (when de\214ning a function whose name is the same as a shell b)144 -124.8 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 +124.8 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 136.8 R .57(uiltin within the function.)-.2 F(The)5.57 E F2(cd)3.07 E F0 -.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E 5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 148.8 Q(alse if)-.1 E F1(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E (uiltin command.)-.2 E F2(caller)108 165.6 Q F0([)2.5 E F1 -.2(ex)C(pr) -.2 E F0(])A .253(Returns the conte)144 177.6 R .254(xt of an)-.15 F +.2 E F0(])A .254(Returns the conte)144 177.6 R .254(xt of an)-.15 F 2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254 (ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G -.254(cuted with the).15 F F2(.)2.754 E F0(or)2.754 E F2(sour)144 189.6 Q -(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F1 -.2 -(ex)2.825 G(pr).2 E F0(,)A F2(caller)2.825 E F0 .324 +.254(cuted with the).15 F F2(.)2.753 E F0(or)2.753 E F2(sour)144 189.6 Q +(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F1 -.2 +(ex)2.824 G(pr).2 E F0(,)A F2(caller)2.824 E F0 .324 (displays the line number and source \214lename of the current)2.824 F -.253(subroutine call.)144 201.6 R .253(If a non-ne)5.253 F -.05(ga)-.15 -G(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 -F F1 -.2(ex)2.753 G(pr).2 E F0(,)A F2(caller)2.753 E F0 .254 -(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\ +.254(subroutine call.)144 201.6 R .254(If a non-ne)5.254 F -.05(ga)-.15 +G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 +F F1 -.2(ex)2.753 G(pr).2 E F0(,)A F2(caller)2.753 E F0 .253 +(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\ tine name, and source \214le corresponding to that position in the curr\ -ent e)144 213.6 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) -144 225.6 Q(xtra information may be used, for e)-.15 E .001 -(xample, to print a stack trace.)-.15 F .001(The current frame is frame) -5.001 F 3.02(0. The)144 237.6 R .52(return v)3.02 F .52 -(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519 -(cuting a subroutine call or).15 F F1 -.2(ex)3.019 G(pr).2 E F0 .519 -(does not corre-)3.019 F(spond to a v)144 249.6 Q +ent e)144 213.6 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 +(This e)144 225.6 R .001(xtra information may be used, for e)-.15 F .001 +(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E +3.019(0. The)144 237.6 R .519(return v)3.019 F .519 +(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52 +(cuting a subroutine call or).15 F F1 -.2(ex)3.02 G(pr).2 E F0 .52 +(does not corre-)3.02 F(spond to a v)144 249.6 Q (alid position in the call stack.)-.25 E F2(cd)108 266.4 Q F0([)2.5 E F2 <ad4c>A F0(|[)A F2<ad50>A F0([)2.5 E F2<ad65>A F0(]]] [)A F1(dir)A F0(]) A .21(Change the current directory to)144 278.4 R F1(dir)2.71 E F0 5.21 (.T)C .21(he v)-5.21 F(ariable)-.25 E/F3 9/Times-Bold@0 SF(HOME)2.71 E F0 .21(is the def)2.46 F(ault)-.1 E F1(dir)2.71 E F0 5.21(.T).73 G .21 (he v)-5.21 F(ariable)-.25 E F3(CDP)2.71 E -.855(AT)-.666 G(H).855 E F0 -.777(de\214nes the search path for the directory containing)144 290.4 R -F1(dir)3.276 E F0 5.776(.A).73 G(lternati)-5.776 E 1.076 -.15(ve d)-.25 -H .776(irectory names in).15 F F3(CDP)3.276 E -.855(AT)-.666 G(H).855 E +.776(de\214nes the search path for the directory containing)144 290.4 R +F1(dir)3.276 E F0 5.777(.A).73 G(lternati)-5.777 E 1.077 -.15(ve d)-.25 +H .777(irectory names in).15 F F3(CDP)3.277 E -.855(AT)-.666 G(H).855 E F0 .764(are separated by a colon \(:\).)144 302.4 R 3.264(An)5.764 G .764(ull directory name in)-3.264 F F3(CDP)3.264 E -.855(AT)-.666 G(H) .855 E F0 .764(is the same as the current direc-)3.014 F(tory)144 314.4 -Q 2.974(,i)-.65 G .474(.e., `)-2.974 F(`)-.74 E F2(.)A F0 -.74('')C -5.474(.I).74 G(f)-5.474 E F1(dir)3.324 E F0(be)3.704 E .474 +Q 2.973(,i)-.65 G .473(.e., `)-2.973 F(`)-.74 E F2(.)A F0 -.74('')C +5.473(.I).74 G(f)-5.473 E F1(dir)3.323 E F0(be)3.703 E .474 (gins with a slash \(/\), then)-.15 F F3(CDP)2.974 E -.855(AT)-.666 G(H) -.855 E F0 .473(is not used. The)2.724 F F2<ad50>2.973 E F0 .473 -(option says to use)2.973 F .579(the ph)144 326.4 R .579 +.855 E F0 .474(is not used. The)2.724 F F2<ad50>2.974 E F0 .474 +(option says to use)2.974 F .58(the ph)144 326.4 R .58 (ysical directory structure instead of follo)-.05 F .579 -(wing symbolic links \(see also the)-.25 F F2<ad50>3.08 E F0 .58 -(option to the)3.08 F F2(set)144 338.4 Q F0 -.2(bu)2.717 G .217 -(iltin command\); the).2 F F2<ad4c>2.717 E F0 .217 -(option forces symbolic links to be follo)2.717 F 2.716(wed. If)-.25 F -(the)2.716 E F2<ad65>2.716 E F0 .216(option is sup-)2.716 F 1.086 -(plied with)144 350.4 R F2<ad50>3.586 E F0 3.586(,a)C 1.086 -(nd the current w)-3.586 F 1.087 +(wing symbolic links \(see also the)-.25 F F2<ad50>3.079 E F0 .579 +(option to the)3.079 F F2(set)144 338.4 Q F0 -.2(bu)2.716 G .216 +(iltin command\); the).2 F F2<ad4c>2.716 E F0 .216 +(option forces symbolic links to be follo)2.716 F 2.717(wed. If)-.25 F +(the)2.717 E F2<ad65>2.717 E F0 .217(option is sup-)2.717 F 1.087 +(plied with)144 350.4 R F2<ad50>3.587 E F0 3.587(,a)C 1.087 +(nd the current w)-3.587 F 1.086 (orking directory cannot be successfully determined after a suc-)-.1 F .44(cessful directory change,)144 362.4 R F2(cd)2.94 E F0 .44 (will return an unsuccessful status.)2.94 F .44(An ar)5.44 F .44 (gument of)-.18 F F2<ad>2.94 E F0 .44(is equi)2.94 F -.25(va)-.25 G .44 -(lent to).25 F F3($OLDPWD)144 374.4 Q/F4 9/Times-Roman@0 SF(.)A F0 1.044 -(If a non-empty directory name from)5.544 F F3(CDP)3.544 E -.855(AT) --.666 G(H).855 E F0 1.045(is used, or if)3.295 F F2<ad>3.545 E F0 1.045 -(is the \214rst ar)3.545 F(gument,)-.18 E .021(and the directory change\ - is successful, the absolute pathname of the ne)144 386.4 R 2.521(ww) --.25 G .021(orking directory is writ-)-2.621 F .165 +(lent to).25 F F3($OLDPWD)144 374.4 Q/F4 9/Times-Roman@0 SF(.)A F0 1.045 +(If a non-empty directory name from)5.545 F F3(CDP)3.545 E -.855(AT) +-.666 G(H).855 E F0 1.044(is used, or if)3.295 F F2<ad>3.544 E F0 1.044 +(is the \214rst ar)3.544 F(gument,)-.18 E .021(and the directory change\ + is successful, the absolute pathname of the ne)144 386.4 R 2.522(ww) +-.25 G .022(orking directory is writ-)-2.622 F .165 (ten to the standard output.)144 398.4 R .165(The return v)5.165 F .165 (alue is true if the directory w)-.25 F .165(as successfully changed; f) -.1 F(alse)-.1 E(otherwise.)144 410.4 Q F2(command)108 427.2 Q F0([)2.5 E F2(\255pVv)A F0(])A F1(command)2.5 E F0([)2.5 E F1(ar)A(g)-.37 E F0 -(...])2.5 E(Run)144 439.2 Q F1(command)2.957 E F0(with)3.527 E F1(ar) +(...])2.5 E(Run)144 439.2 Q F1(command)2.956 E F0(with)3.527 E F1(ar) 3.087 E(gs)-.37 E F0 .257 (suppressing the normal shell function lookup. Only b)3.027 F .257 -(uiltin commands or)-.2 F .501(commands found in the)144 451.2 R F3 --.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G 3.002 +(uiltin commands or)-.2 F .502(commands found in the)144 451.2 R F3 +-.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G 3.002 (cuted. If).15 F(the)3.002 E F2<ad70>3.002 E F0 .502(option is gi)3.002 -F -.15(ve)-.25 G .502(n, the search for).15 F F1(command)3.202 E F0(is) -3.772 E .4(performed using a def)144 463.2 R .4(ault v)-.1 F .4 -(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399 +F -.15(ve)-.25 G .501(n, the search for).15 F F1(command)3.201 E F0(is) +3.771 E .399(performed using a def)144 463.2 R .399(ault v)-.1 F .399 +(alue for)-.25 F F3 -.666(PA)2.899 G(TH)-.189 E F0 .4 (that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.399 E .174(either the)144 475.2 R F2<ad56>2.674 E F0(or)2.674 E F2 -<ad76>2.674 E F0 .175(option is supplied, a description of)2.674 F F1 -(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F2<ad76>2.675 E -F0 .175(option causes)2.675 F 3.11(as)144 487.2 S .61(ingle w)-3.11 F -.61(ord indicating the command or \214le name used to in)-.1 F -.2(vo) --.4 G -.1(ke).2 G F1(command)3.41 E F0 .61(to be displayed; the)3.88 F -F2<ad56>144 499.2 Q F0 .249(option produces a more v)2.749 F .249 -(erbose description.)-.15 F .249(If the)5.249 F F2<ad56>2.749 E F0(or) -2.749 E F2<ad76>2.75 E F0 .25(option is supplied, the e)2.75 F .25 -(xit status)-.15 F 1.005(is 0 if)144 511.2 R F1(command)3.705 E F0 -.1 -(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 +5.4 E .175(either the)144 475.2 R F2<ad56>2.675 E F0(or)2.675 E F2<ad76> +2.675 E F0 .175(option is supplied, a description of)2.675 F F1(command) +2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F2<ad76>2.674 E F0 .174 +(option causes)2.674 F 3.11(as)144 487.2 S .61(ingle w)-3.11 F .61 +(ord indicating the command or \214le name used to in)-.1 F -.2(vo)-.4 G +-.1(ke).2 G F1(command)3.41 E F0 .61(to be displayed; the)3.88 F F2 +<ad56>144 499.2 Q F0 .25(option produces a more v)2.75 F .25 +(erbose description.)-.15 F .249(If the)5.25 F F2<ad56>2.749 E F0(or) +2.749 E F2<ad76>2.749 E F0 .249(option is supplied, the e)2.749 F .249 +(xit status)-.15 F 1.004(is 0 if)144 511.2 R F1(command)3.704 E F0 -.1 +(wa)4.274 G 3.504(sf).1 G 1.005(ound, and 1 if not.)-3.504 F 1.005 (If neither option is supplied and an error occurred or)6.005 F F1 -(command)144.2 523.2 Q F0 1.598(cannot be found, the e)4.868 F 1.599 -(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599 -(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 535.2 S +(command)144.2 523.2 Q F0 1.599(cannot be found, the e)4.869 F 1.599 +(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598 +(xit status of the)-.15 F F2(command)4.098 E F0 -.2(bu)144 535.2 S (iltin is the e).2 E(xit status of)-.15 E F1(command)2.5 E F0(.).77 E F2 (compgen)108 552 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d) --.37 E F0(])A .013(Generate possible completion matches for)144 564 R F1 +-.37 E F0(])A .012(Generate possible completion matches for)144 564 R F1 (wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513 E -F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 -(accepted by the)144 576 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981 +F0 .013(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982 +(accepted by the)144 576 R F2(complete)3.482 E F0 -.2(bu)3.481 G .981 (iltin with the e).2 F .981(xception of)-.15 F F2<ad70>3.481 E F0(and) -3.481 E F2<ad72>3.481 E F0 3.481(,a)C .982(nd write the matches to the) +3.481 E F2<ad72>3.481 E F0 3.481(,a)C .981(nd write the matches to the) -3.481 F 1.415(standard output.)144 588 R 1.415(When using the)6.415 F F2<ad46>3.915 E F0(or)3.915 E F2<ad43>3.915 E F0 1.415(options, the v) 3.915 F 1.415(arious shell v)-.25 F 1.415(ariables set by the pro-)-.25 @@ -6090,16 +6103,16 @@ F(those completions matching)144 648 Q F1(wor)2.5 E(d)-.37 E F0 (will be displayed.)2.5 E(The return v)144 672 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 688.8 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C -F2<ad6f>-3.728 E F1(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E +(complete)108 688.8 Q F0([)3.729 E F2(\255abcdefgjksuv)A F0 3.729(][)C +F2<ad6f>-3.729 E F1(comp-option)3.729 E F0 3.729(][)C F2(\255DE)-3.729 E F0 3.728(][)C F2<ad41>-3.728 E F1(action)3.728 E F0 3.728(][)C F2<ad47> --3.728 E F1(globpat)3.728 E F0 3.729(][)C F2<ad57>-3.729 E F1(wor)3.729 -E(dlist)-.37 E F0 3.729(][)C F2<ad46>-3.729 E F1(func-)3.729 E(tion)108 +-3.728 E F1(globpat)3.728 E F0 3.728(][)C F2<ad57>-3.728 E F1(wor)3.728 +E(dlist)-.37 E F0 3.728(][)C F2<ad46>-3.728 E F1(func-)3.728 E(tion)108 700.8 Q F0 2.5(][)C F2<ad43>-2.5 E F1(command)2.5 E F0(])A([)144 712.8 Q F2<ad58>A F1(\214lterpat)2.5 E F0 2.5(][)C F2<ad50>-2.5 E F1(pr)2.5 E (e\214x)-.37 E F0 2.5(][)C F2<ad53>-2.5 E F1(suf)2.5 E<8c78>-.18 E F0(]) A F1(name)2.5 E F0([)2.5 E F1(name ...)A F0(])A(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(51)198.165 E 0 Cg EP +(2010 September 6)137.625 E(51)187.615 E 0 Cg EP %%Page: 52 52 %%BeginPageSetup BP @@ -6107,52 +6120,52 @@ BP /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E/F1 10/Times-Bold@0 SF(complete \255pr)108 84 Q F0([)2.5 E F1 (\255DE)A F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E F0(...])2.5 E -.633(Specify ho)144 96 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633 -(uments to each).18 F F2(name)3.133 E F0 .633(should be completed.)3.133 -F .634(If the)5.634 F F1<ad70>3.134 E F0 .634 -(option is supplied, or if no)3.134 F .14(options are supplied, e)144 +.634(Specify ho)144 96 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 +(uments to each).18 F F2(name)3.134 E F0 .634(should be completed.)3.134 +F .633(If the)5.634 F F1<ad70>3.133 E F0 .633 +(option is supplied, or if no)3.133 F .139(options are supplied, e)144 108 R .139(xisting completion speci\214cations are printed in a w)-.15 F -.139(ay that allo)-.1 F .139(ws them to be)-.25 F .31(reused as input.) -144 120 R(The)5.31 E F1<ad72>2.81 E F0 .31(option remo)2.81 F -.15(ve) --.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F2 -(name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E -F2(name)2.81 E F0(s)A 1.347 +.14(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.)144 +120 R(The)5.31 E F1<ad72>2.81 E F0 .31(option remo)2.81 F -.15(ve)-.15 G +2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F2(name) +2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2 +(name)2.81 E F0(s)A 1.346 (are supplied, all completion speci\214cations.)144 132 R(The)6.347 E F1 -<ad44>3.847 E F0 1.346(option indicates that the remaining options)3.847 +<ad44>3.847 E F0 1.347(option indicates that the remaining options)3.847 F .5(and actions should apply to the `)144 144 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 156 S .955(ommand for which no completion has pre)-3.455 F .955(viously been de\214ned.)-.25 F(The)5.955 E F1<ad45>3.455 E F0 .955 -(option indicates that)3.455 F .064 +(option indicates that)3.455 F .065 (the remaining options and actions should apply to `)144 168 R(`empty') --.74 E 2.565('c)-.74 G .065(ommand completion; that is, comple-)-2.565 F -(tion attempted on a blank line.)144 180 Q 1.438 +-.74 E 2.564('c)-.74 G .064(ommand completion; that is, comple-)-2.564 F +(tion attempted on a blank line.)144 180 Q 1.437 (The process of applying these completion speci\214cations when w)144 -204 R 1.437(ord completion is attempted is)-.1 F(described abo)144 216 Q +204 R 1.438(ord completion is attempted is)-.1 F(described abo)144 216 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(.)A .555(Other options, if speci\214ed, ha)144 240 R .855 -.15(ve t) +F0(.)A .556(Other options, if speci\214ed, ha)144 240 R .856 -.15(ve t) -.2 H .555(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F -.555(guments to the)-.18 F F1<ad47>3.056 E F0(,)A F1<ad57>3.056 E F0 -3.056(,a)C(nd)-3.056 E F1<ad58>3.056 E F0 .723 -(options \(and, if necessary)144 252 R 3.223(,t)-.65 G(he)-3.223 E F1 -<ad50>3.223 E F0(and)3.223 E F1<ad53>3.223 E F0 .722 -(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E +.555(guments to the)-.18 F F1<ad47>3.055 E F0(,)A F1<ad57>3.055 E F0 +3.055(,a)C(nd)-3.055 E F1<ad58>3.055 E F0 .722 +(options \(and, if necessary)144 252 R 3.222(,t)-.65 G(he)-3.222 E F1 +<ad50>3.222 E F0(and)3.222 E F1<ad53>3.222 E F0 .723 +(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E (sion before the)144 264 Q F1(complete)2.5 E F0 -.2(bu)2.5 G (iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1<ad6f>144 276 Q F2 -(comp-option)2.5 E F0(The)184 288 Q F2(comp-option)2.79 E F0 .291 +(comp-option)2.5 E F0(The)184 288 Q F2(comp-option)2.791 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 300 Q F2 (comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 312 Q F0 .281(Perform the rest of the def)224 324 R(ault)-.1 E F1(bash)2.781 E F0 .281(completions if the compspec generates no)2.781 F(matches.)224 336 Q -F1(default)184 348 Q F0 2.875(Use readline')10 F 5.375(sd)-.55 G(ef) --5.375 E 2.876(ault \214lename completion if the compspec generates no) +F1(default)184 348 Q F0 2.876(Use readline')10 F 5.376(sd)-.55 G(ef) +-5.376 E 2.875(ault \214lename completion if the compspec generates no) -.1 F(matches.)224 360 Q F1(dir)184 372 Q(names)-.15 E F0(Perform direc\ tory name completion if the compspec generates no matches.)224 384 Q F1 (\214lenames)184 396 Q F0 -.7(Te)224 408 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 420 R 2.634 +mpspec generates \214lenames, so it can perform an).7 F 2.637<798c>-.15 +G(le-)-2.637 E .134(name\255speci\214c processing \(lik)224 420 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 432 R .45 (Intended to be used with shell)5.45 F(functions.)224 444 Q F1(nospace) @@ -6161,7 +6174,7 @@ G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 420 R 2.634 .22(ords completed at the end)-.1 F(of the line.)224 468 Q F1(plusdirs) 184 480 Q F0 1.985(After an)5.54 F 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 492 R 3.084(ym)-.15 G .584 +.584(completion is attempted and an)224 492 R 3.084(ym)-.15 G .584 (atches are added to the results of the other)-3.084 F(actions.)224 504 Q F1<ad41>144 516 Q F2(action)2.5 E F0(The)184 528 Q F2(action)2.5 E F0 (may be one of the follo)2.5 E @@ -6180,8 +6193,8 @@ Q F0(Names of disabled shell b)224 660 Q(uiltins.)-.2 E F1(enabled)184 684 Q F0(Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184 696 Q F0(File names.)27.22 E(May also be speci\214ed as)5 E F1<ad66>2.5 -E F0(.)A(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(52)198.165 E 0 Cg -EP +E F0(.)A(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(52)187.615 E 0 +Cg EP %%Page: 53 53 %%BeginPageSetup BP @@ -6211,77 +6224,77 @@ F1(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 252 Q F0 (May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 288 S (riable).1 E F0(Names of all shell v)5.1 E 2.5(ariables. May)-.25 F (also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad43>144 300 Q/F3 -10/Times-Italic@0 SF(command)2.5 E(command)184 312 Q F0 1.056(is e)3.556 -F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 +10/Times-Italic@0 SF(command)2.5 E(command)184 312 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 324 Q F1<ad46>144 336 Q F3(function)2.5 E F0 1.18 -(The shell function)184 348 R F3(function)3.68 E F0 1.181(is e)3.681 F --.15(xe)-.15 G 1.181(cuted in the current shell en).15 F 3.681 -(vironment. When)-.4 F 1.181(it \214n-)3.681 F .932 +184 324 Q F1<ad46>144 336 Q F3(function)2.5 E F0 1.181 +(The shell function)184 348 R F3(function)3.681 E F0 1.181(is e)3.681 F +-.15(xe)-.15 G 1.181(cuted in the current shell en).15 F 3.68 +(vironment. When)-.4 F 1.18(it \214n-)3.68 F .932 (ishes, the possible completions are retrie)184 360 R -.15(ve)-.25 G 3.432(df).15 G .932(rom the v)-3.432 F .932(alue of the)-.25 F F2 -(COMPREPL)3.431 E(Y)-.828 E F0(array)3.181 E -.25(va)184 372 S(riable.) -.25 E F1<ad47>144 384 Q F3(globpat)2.5 E F0 1.007(The pathname e)184 396 -R 1.007(xpansion pattern)-.15 F F3(globpat)3.507 E F0 1.007(is e)3.507 F -1.008(xpanded to generate the possible comple-)-.15 F(tions.)184 408 Q +(COMPREPL)3.432 E(Y)-.828 E F0(array)3.182 E -.25(va)184 372 S(riable.) +.25 E F1<ad47>144 384 Q F3(globpat)2.5 E F0 1.008(The pathname e)184 396 +R 1.008(xpansion pattern)-.15 F F3(globpat)3.507 E F0 1.007(is e)3.507 F +1.007(xpanded to generate the possible comple-)-.15 F(tions.)184 408 Q F1<ad50>144 420 Q F3(pr)2.5 E(e\214x)-.37 E(pr)184 432 Q(e\214x)-.37 E -F0 .535(is added at the be)3.035 F .534 +F0 .534(is added at the be)3.034 F .534 (ginning of each possible completion after all other options ha)-.15 F -.15(ve)-.2 G(been applied.)184 444 Q F1<ad53>144 456 Q F3(suf)2.5 E 2.81(\214x suf)-.18 F<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 468 Q F3(wor)2.5 E -(dlist)-.37 E F0(The)184 480 Q F3(wor)3.639 E(dlist)-.37 E F0 1.14 -(is split using the characters in the)3.639 F F2(IFS)3.64 E F0 1.14 -(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F 2.008 -(each resultant w)184 492 R 2.008(ord is e)-.1 F 4.508(xpanded. The)-.15 -F 2.007(possible completions are the members of the)4.508 F +(dlist)-.37 E F0(The)184 480 Q F3(wor)3.64 E(dlist)-.37 E F0 1.14 +(is split using the characters in the)3.64 F F2(IFS)3.64 E F0 1.139 +(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F 2.007 +(each resultant w)184 492 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 +F 2.008(possible completions are the members of the)4.507 F (resultant list which match the w)184 504 Q(ord being completed.)-.1 E -F1<ad58>144 516 Q F3(\214lterpat)2.5 E(\214lterpat)184 528 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 +F1<ad58>144 516 Q F3(\214lterpat)2.5 E(\214lterpat)184 528 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 540 R 1.596 (guments, and each completion)-.18 F(matching)184 552 Q F3(\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 F3(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705 +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 F3(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 (tes the pattern;).05 F(in this case, an)184 564 Q 2.5(yc)-.15 G (ompletion not matching)-2.5 E F3(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .467(The return v)144 580.8 R .467 +-.15(ve)-.15 G(d.).15 E .466(The return v)144 580.8 R .466 (alue is true unless an in)-.25 F -.25(va)-.4 G .466 -(lid option is supplied, an option other than).25 F F1<ad70>2.966 E F0 -(or)2.966 E F1<ad72>2.966 E F0 .466(is sup-)2.966 F 1.361 -(plied without a)144 592.8 R F3(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 F3(name)144 604.8 Q F0 +(lid option is supplied, an option other than).25 F F1<ad70>2.967 E F0 +(or)2.967 E F1<ad72>2.967 E F0 .467(is sup-)2.967 F 1.362 +(plied without a)144 592.8 R F3(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 F3(name)144 604.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 621.6 Q F0([)2.5 E F1<ad6f>A F3(option)2.5 E F0 2.5(][)C F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F3(option)2.5 E F0 2.5(][)C F3 (name)-2.5 E F0(])A .447(Modify completion options for each)144 633.6 R F3(name)2.947 E F0 .447(according to the)2.947 F F3(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 645.6 R F3(name)3.225 E F0 3.225(sa)C .725 -(re supplied.)-3.225 F .725(If no)5.725 F F3(option)3.225 E F0 3.225(sa) -C .725(re gi)-3.225 F -.15(ve)-.25 G .726 +.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 +(completion if no)144 645.6 R F3(name)3.226 E F0 3.226(sa)C .726 +(re supplied.)-3.226 F .725(If no)5.725 F F3(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 657.6 Q F3(name) -3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) +3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) 5.724 F .724(alues of)-.25 F F3(option)3.224 E F0 .724(are those v)3.224 -F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 669.6 Q F0 -.2(bu) -2.797 G .297(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 669.6 Q F0 -.2(bu) +2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) -5.297 E F1<ad44>2.797 E F0 .297 (option indicates that the remaining options should apply to)2.797 F -1.228(the `)144 681.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ +1.227(the `)144 681.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ mmand completion; that is, completion attempted on a command for which \ -no)-3.728 F 2.177(completion has pre)144 693.6 R 2.177 -(viously been de\214ned.)-.25 F(The)7.177 E F1<ad45>4.677 E F0 2.178 -(option indicates that the remaining options)4.678 F(should apply to `) +no)-3.727 F 2.178(completion has pre)144 693.6 R 2.178 +(viously been de\214ned.)-.25 F(The)7.178 E F1<ad45>4.678 E F0 2.177 +(option indicates that the remaining options)4.677 F(should apply to `) 144 705.6 Q(`empty')-.74 E 2.5('c)-.74 G (ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.388(The return v)144 729.6 R 1.388(alue is true unless an in)-.25 F --.25(va)-.4 G 1.387 +E 1.387(The return v)144 729.6 R 1.387(alue is true unless an in)-.25 F +-.25(va)-.4 G 1.388 (lid option is supplied, an attempt is made to modify the).25 F -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(53)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(53)187.615 E 0 Cg EP %%Page: 54 54 %%BeginPageSetup BP @@ -6290,136 +6303,135 @@ BP -.35 E(options for a)144 84 Q/F1 10/Times-Italic@0 SF(name)2.5 E F0 (for which no completion speci\214cation e)2.5 E (xists, or an output error occurs.)-.15 E/F2 10/Times-Bold@0 SF -(continue)108 100.8 Q F0([)2.5 E F1(n)A F0(])A 1.753(Resume the ne)144 -112.8 R 1.753(xt iteration of the enclosing)-.15 F F2 -.25(fo)4.254 G(r) +(continue)108 100.8 Q F0([)2.5 E F1(n)A F0(])A 1.754(Resume the ne)144 +112.8 R 1.754(xt iteration of the enclosing)-.15 F F2 -.25(fo)4.254 G(r) .25 E F0(,)A F2(while)4.254 E F0(,)A F2(until)4.254 E F0 4.254(,o)C(r) --4.254 E F2(select)4.254 E F0 4.254(loop. If)4.254 F F1(n)4.614 E F0 -1.754(is speci\214ed,)4.494 F 1.209(resume at the)144 124.8 R F1(n)3.709 +-4.254 E F2(select)4.254 E F0 4.253(loop. If)4.254 F F1(n)4.613 E F0 +1.753(is speci\214ed,)4.493 F 1.208(resume at the)144 124.8 R F1(n)3.709 E F0 1.209(th enclosing loop.)B F1(n)6.569 E F0 1.209(must be)3.949 F/F3 10/Symbol SF<b3>3.709 E F0 3.709(1. If)3.709 F F1(n)4.069 E F0 1.209 -(is greater than the number of enclosing)3.949 F .513 +(is greater than the number of enclosing)3.949 F .514 (loops, the last enclosing loop \(the `)144 136.8 R(`top-le)-.74 E -.15 -(ve)-.25 G(l').15 E 3.013('l)-.74 G .513(oop\) is resumed.)-3.013 F .514 -(The return v)5.514 F .514(alue is 0 unless)-.25 F F1(n)3.014 E F0(is) -3.014 E(not greater than or equal to 1.)144 148.8 Q F2(declar)108 165.6 +(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 +(The return v)5.513 F .513(alue is 0 unless)-.25 F F1(n)3.013 E F0(is) +3.013 E(not greater than or equal to 1.)144 148.8 Q F2(declar)108 165.6 Q(e)-.18 E F0([)2.5 E F2(\255aAfFgilrtux)A F0 2.5(][)C F2<ad70>-2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C(..])-2.5 E F2 (typeset)108 177.6 Q F0([)2.5 E F2(\255aAfFgilrtux)A F0 2.5(][)C F2 <ad70>-2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C -(..])-2.5 E 1.265(Declare v)144 189.6 R 1.265(ariables and/or gi)-.25 F -1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no) +(..])-2.5 E 1.264(Declare v)144 189.6 R 1.264(ariables and/or gi)-.25 F +1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) 3.765 E F1(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.764(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F --.25(va)144 201.6 S 3.482(riables. The).25 F F2<ad70>3.482 E F0 .982 -(option will display the attrib)3.482 F .982(utes and v)-.2 F .983 -(alues of each)-.25 F F1(name)3.483 E F0 5.983(.W).18 G(hen)-5.983 E F2 -<ad70>3.483 E F0 .983(is used)3.483 F(with)144 213.6 Q F1(name)3.58 E F0 -(ar)3.58 E 1.079(guments, additional options are ignored.)-.18 F(When) -6.079 E F2<ad70>3.579 E F0 1.079(is supplied without)3.579 F F1(name) -3.579 E F0(ar)3.579 E(gu-)-.18 E .15(ments, it will display the attrib) -144 225.6 R .15(utes and v)-.2 F .151(alues of all v)-.25 F .151 -(ariables ha)-.25 F .151(ving the attrib)-.2 F .151 -(utes speci\214ed by the)-.2 F .047(additional options.)144 237.6 R .047 -(If no other options are supplied with)5.047 F F2<ad70>2.547 E F0(,)A F2 -(declar)2.547 E(e)-.18 E F0 .046(will display the attrib)2.546 F .046 -(utes and)-.2 F -.25(va)144 249.6 S 1.362(lues of all shell v).25 F -3.862(ariables. The)-.25 F F2<ad66>3.862 E F0 1.363 -(option will restrict the display to shell functions.)3.862 F(The)6.363 -E F2<ad46>3.863 E F0 2.422(option inhibits the display of function de\ -\214nitions; only the function name and attrib)144 261.6 R 2.422 -(utes are)-.2 F 2.663(printed. If)144 273.6 R(the)2.663 E F2(extdeb) -2.663 E(ug)-.2 E F0 .164(shell option is enabled using)2.663 F F2(shopt) -2.664 E F0 2.664(,t)C .164(he source \214le name and line number)-2.664 +G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F +-.25(va)144 201.6 S 3.483(riables. The).25 F F2<ad70>3.483 E F0 .983 +(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 +(alues of each)-.25 F F1(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F2 +<ad70>3.482 E F0 .982(is used)3.482 F(with)144 213.6 Q F1(name)3.579 E +F0(ar)3.579 E 1.079(guments, additional options are ignored.)-.18 F +(When)6.079 E F2<ad70>3.579 E F0 1.079(is supplied without)3.579 F F1 +(name)3.58 E F0(ar)3.58 E(gu-)-.18 E .151 +(ments, it will display the attrib)144 225.6 R .151(utes and v)-.2 F +.151(alues of all v)-.25 F .15(ariables ha)-.25 F .15(ving the attrib) +-.2 F .15(utes speci\214ed by the)-.2 F .046(additional options.)144 +237.6 R .046(If no other options are supplied with)5.046 F F2<ad70>2.547 +E F0(,)A F2(declar)2.547 E(e)-.18 E F0 .047(will display the attrib) +2.547 F .047(utes and)-.2 F -.25(va)144 249.6 S 1.363 +(lues of all shell v).25 F 3.863(ariables. The)-.25 F F2<ad66>3.863 E F0 +1.362(option will restrict the display to shell functions.)3.863 F(The) +6.362 E F2<ad46>3.862 E F0 2.422(option inhibits the display of functio\ +n de\214nitions; only the function name and attrib)144 261.6 R 2.423 +(utes are)-.2 F 2.664(printed. If)144 273.6 R(the)2.664 E F2(extdeb) +2.664 E(ug)-.2 E F0 .164(shell option is enabled using)2.664 F F2(shopt) +2.664 E F0 2.664(,t)C .163(he source \214le name and line number)-2.664 F 1.288(where the function is de\214ned are displayed as well.)144 285.6 R(The)6.288 E F2<ad46>3.788 E F0 1.288(option implies)3.788 F F2<ad66> -3.788 E F0 6.288(.T)C(he)-6.288 E F2<ad67>3.788 E F0(option)3.788 E .49 -(forces v)144 297.6 R .49 +3.788 E F0 6.288(.T)C(he)-6.288 E F2<ad67>3.789 E F0(option)3.789 E .491 +(forces v)144 297.6 R .491 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G 2.991(nw).15 G(hen)-2.991 E F2(declar)2.991 E(e)-.18 E F0 -.491(is e)2.991 F -.15(xe)-.15 G .491(cuted in a).15 F .125 -(shell function.)144 309.6 R .125(It is ignored in all other cases.) -5.125 F .125(The follo)5.125 F .124 -(wing options can be used to restrict output)-.25 F(to v)144 321.6 Q -(ariables with the speci\214ed attrib)-.25 E(ute or to gi)-.2 E .3 -.15 -(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F2<ad61>144 333.6 Q F0 -(Each)25.3 E F1(name)2.5 E F0(is an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 -G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15 -(ve)-.15 G(\).).15 E F2<ad41>144 345.6 Q F0(Each)23.08 E F1(name)2.5 E -F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v).15 E(ariable \(see) --.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2<ad66>144 -357.6 Q F0(Use function names only)26.97 E(.)-.65 E F2<ad69>144 369.6 Q -F0 .557(The v)27.52 F .558(ariable is treated as an inte)-.25 F .558 -(ger; arithmetic e)-.15 F -.25(va)-.25 G .558(luation \(see).25 F/F4 9 -/Times-Bold@0 SF .558(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION) -180 381.6 Q F0(abo)2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G -(erformed when the v)-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E -F2<ad6c>144 393.6 Q F0 .91(When the v)27.52 F .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 405.6 R(upper)2.5 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F2<ad72>144 417.6 Q F0(Mak)25.86 E(e)-.1 E F1 -(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E 7.546(.T)-.65 G 2.546 -(hese names cannot then be assigned v)-7.546 F 2.547 -(alues by subsequent)-.25 F(assignment statements or unset.)180 429.6 Q -F2<ad74>144 441.6 Q F0(Gi)26.97 E .73 -.15(ve e)-.25 H(ach).15 E F1 -(name)2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E -2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2(DEB)2.929 -E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0 +(ve)-.25 G 2.99(nw).15 G(hen)-2.99 E F2(declar)2.99 E(e)-.18 E F0 .49 +(is e)2.99 F -.15(xe)-.15 G .49(cuted in a).15 F .124(shell function.) +144 309.6 R .124(It is ignored in all other cases.)5.124 F .125 +(The follo)5.125 F .125(wing options can be used to restrict output)-.25 +F(to v)144 321.6 Q(ariables with the speci\214ed attrib)-.25 E +(ute or to gi)-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 +E F2<ad61>144 333.6 Q F0(Each)25.3 E F1(name)2.5 E F0(is an inde)2.5 E +-.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2 +(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2<ad41>144 345.6 Q +F0(Each)23.08 E F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 +H(rray v).15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15 +(ve)-.15 G(\).).15 E F2<ad66>144 357.6 Q F0(Use function names only) +26.97 E(.)-.65 E F2<ad69>144 369.6 Q F0 .558(The v)27.52 F .558 +(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 +(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 381.6 Q F0(abo) +2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) +-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F2<ad6c>144 393.6 Q +F0 .909(When the v)27.52 F .909(ariable is assigned a v)-.25 F .909 +(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 +G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 405.6 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad72>144 417.6 +Q F0(Mak)25.86 E(e)-.1 E F1(name)5.047 E F0 5.047(sr)C(eadonly)-5.047 E +7.547(.T)-.65 G 2.546(hese names cannot then be assigned v)-7.547 F +2.546(alues by subsequent)-.25 F(assignment statements or unset.)180 +429.6 Q F2<ad74>144 441.6 Q F0(Gi)26.97 E .729 -.15(ve e)-.25 H(ach).15 +E F1(name)2.929 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib) +2.929 E 2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2 +(DEB)2.929 E(UG)-.1 E F0(and)2.93 E F2(RETURN)2.93 E F0 (traps from the calling shell.)180 453.6 Q(The trace attrib)5 E (ute has no special meaning for v)-.2 E(ariables.)-.25 E F2<ad75>144 -465.6 Q F0 .909(When the v)24.74 F .909(ariable is assigned a v)-.25 F +465.6 Q F0 .91(When the v)24.74 F .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 477.6 R +-.15(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 477.6 R (lo)2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad78> 144 489.6 Q F0(Mark)25.3 E F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E -(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .121 -(Using `+' instead of `\255' turns of)144 506.4 R 2.621(ft)-.25 G .121 -(he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12 -(xceptions that)-.15 F F2(+a)2.62 E F0 .12(may not be used)2.62 F .644 -(to destro)144 518.4 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) --3.144 F .644(ariable and)-.25 F F2(+r)3.145 E F0 .645(will not remo) -3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145 -(ute. When)-.2 F .645(used in a func-)3.145 F .531(tion, mak)144 530.4 R -.531(es each)-.1 F F1(name)3.031 E F0 .531(local, as with the)3.031 F F2 -(local)3.031 E F0 .531(command, unless the)3.031 F F2 .53 -(\255gP option is supplied, If a)3.03 F -.1(va)144 542.4 S 1.557 -(riable name is f).1 F(ollo)-.25 E 1.557(wed by =)-.1 F F1(value)A F2 -4.057(,t)C 1.557(he v)-4.057 F 1.558(alue of the v)-.1 F 1.558 -(ariable is set to)-.1 F F1(value)4.058 E F2 6.558(.T)C 1.558(he r) --6.558 F(etur)-.18 E(n)-.15 E -.1(va)144 554.4 S 1.168 +(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .12 +(Using `+' instead of `\255' turns of)144 506.4 R 2.62(ft)-.25 G .12 +(he attrib)-2.62 F .121(ute instead, with the e)-.2 F .121 +(xceptions that)-.15 F F2(+a)2.621 E F0 .121(may not be used)2.621 F +.645(to destro)144 518.4 R 3.145(ya)-.1 G 3.145(na)-3.145 G .645(rray v) +-3.145 F .645(ariable and)-.25 F F2(+r)3.145 E F0 .645(will not remo) +3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.144 +(ute. When)-.2 F .644(used in a func-)3.144 F .53(tion, mak)144 530.4 R +.53(es each)-.1 F F1(name)3.03 E F0 .53(local, as with the)3.03 F F2 +(local)3.031 E F0 .531(command, unless the)3.031 F F2 .531 +(\255gP option is supplied, If a)3.031 F -.1(va)144 542.4 S 1.558 +(riable name is f).1 F(ollo)-.25 E 1.558(wed by =)-.1 F F1(value)A F2 +4.058(,t)C 1.558(he v)-4.058 F 1.557(alue of the v)-.1 F 1.557 +(ariable is set to)-.1 F F1(value)4.057 E F2 6.557(.T)C 1.557(he r) +-6.557 F(etur)-.18 E(n)-.15 E -.1(va)144 554.4 S 1.168 (lue is 0 unless an in).1 F -.1(va)-.4 G 1.168(lid option is encounter) .1 F 1.168(ed, an attempt is made to de\214ne a function)-.18 F(using) -144 566.4 Q/F5 10/Courier@0 SF .311(\255f foo=bar)2.811 F F2 2.812(,a)C +144 566.4 Q/F5 10/Courier@0 SF .312(\255f foo=bar)2.812 F F2 2.812(,a)C 2.812(na)-2.812 G .312(ttempt is made to assign a v)-2.812 F .312 -(alue to a r)-.1 F .312(eadonly v)-.18 F .312(ariable, an attempt)-.1 F -.616(is made to assign a v)144 578.4 R .615(alue to an array v)-.1 F -.615(ariable without using the compound assignment syn-)-.1 F .259 -(tax \(see Arrays)144 590.4 R F0(abo)2.759 E -.15(ve)-.15 G .259 -(\), one of the).15 F F1(names)2.759 E F0 .259(is not a v)2.759 F .26 -(alid shell v)-.25 F .26(ariable name, an attempt is made to)-.25 F .704 -(turn of)144 602.4 R 3.204(fr)-.25 G .704 -(eadonly status for a readonly v)-3.204 F .704 -(ariable, an attempt is made to turn of)-.25 F 3.204(fa)-.25 G .703 +(alue to a r)-.1 F .312(eadonly v)-.18 F .311(ariable, an attempt)-.1 F +.615(is made to assign a v)144 578.4 R .615(alue to an array v)-.1 F +.616(ariable without using the compound assignment syn-)-.1 F .26 +(tax \(see Arrays)144 590.4 R F0(abo)2.76 E -.15(ve)-.15 G .26 +(\), one of the).15 F F1(names)2.76 E F0 .259(is not a v)2.76 F .259 +(alid shell v)-.25 F .259(ariable name, an attempt is made to)-.25 F +.703(turn of)144 602.4 R 3.203(fr)-.25 G .704 +(eadonly status for a readonly v)-3.203 F .704 +(ariable, an attempt is made to turn of)-.25 F 3.204(fa)-.25 G .704 (rray status for an)-3.204 F(array v)144 614.4 Q (ariable, or an attempt is made to display a non-e)-.25 E (xistent function with)-.15 E F2<ad66>2.5 E F0(.)A F2(dirs [+)108 631.2 Q F1(n)A F2 2.5(][)C<ad>-2.5 E F1(n)A F2 2.5(][)C(\255clpv])-2.5 E F0 --.4(Wi)144 643.2 S .328 +-.4(Wi)144 643.2 S .329 (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 +.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 (single line with directory names separated by spaces.)144 655.2 R 1.238 (Directories are added to the list with the)6.238 F F2(pushd)144 667.2 Q F0(command; the)2.5 E F2(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G 2.5(se).15 G(ntries from the list.)-2.5 E F2(+)144 679.2 Q F1(n)A F0 -1.564(Displays the)25.3 F F1(n)4.064 E F0 1.565 -(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F2 -(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +1.565(Displays the)25.3 F F1(n)4.065 E F0 1.565 +(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F2 +(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 691.2 Q F2<ad>144 703.2 Q F1 (n)A F0 1.194(Displays the)25.3 F F1(n)3.694 E F0 1.194 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F F2(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 715.2 Q(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(54)198.165 E 0 Cg EP +(2010 September 6)137.625 E(54)187.615 E 0 Cg EP %%Page: 55 55 %%BeginPageSetup BP @@ -6431,9 +6443,9 @@ BP (ault listing format uses a tilde to denote the home direc-)-.1 F(tory) 180 108 Q(.)-.65 E F1<ad70>144 120 Q F0 (Print the directory stack with one entry per line.)24.74 E F1<ad76>144 -132 Q F0 .273(Print the directory stack with one entry per line, pre\ -\214xing each entry with its inde)25.3 F 2.772(xi)-.15 G 2.772(nt)-2.772 -G(he)-2.772 E(stack.)180 144 Q .257(The return v)144 160.8 R .258 +132 Q F0 .272(Print the directory stack with one entry per line, pre\ +\214xing each entry with its inde)25.3 F 2.773(xi)-.15 G 2.773(nt)-2.773 +G(he)-2.773 E(stack.)180 144 Q .258(The return v)144 160.8 R .258 (alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 (lid option is supplied or).25 F/F2 10/Times-Italic@0 SF(n)2.758 E F0 (inde)2.758 E -.15(xe)-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258 @@ -6443,47 +6455,47 @@ G(he)-2.772 E(stack.)180 144 Q .257(The return v)144 160.8 R .258 (thout options, each).4 F F2(jobspec)4.535 E F0 .295(is remo)3.105 F -.15(ve)-.15 G 2.795(df).15 G .295(rom the table of acti)-2.795 F .595 -.15(ve j)-.25 H 2.795(obs. If).15 F F2(jobspec)4.535 E F0 .295 -(is not present,)3.105 F .422(and neither)144 213.6 R F1<ad61>2.922 E F0 -(nor)2.922 E F1<ad72>2.922 E F0 .422(is supplied, the shell')2.922 F -2.922(sn)-.55 G .422(otion of the)-2.922 F F2(curr)2.923 E .423(ent job) --.37 F F0 .423(is used.)2.923 F .423(If the)5.423 F F1<ad68>2.923 E F0 -.423(option is)2.923 F(gi)144 225.6 Q -.15(ve)-.25 G .141(n, each).15 F -F2(jobspec)4.381 E F0 .141(is not remo)2.951 F -.15(ve)-.15 G 2.641(df) -.15 G .141(rom the table, b)-2.641 F .141(ut is mark)-.2 F .141 -(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)2.641 E F0 .14 -(is not sent to the)2.39 F .004(job if the shell recei)144 237.6 R -.15 -(ve)-.25 G 2.504(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .004 -(If no)4.504 F F2(jobspec)4.244 E F0 .004(is present, and neither the) -2.814 F F1<ad61>2.504 E F0 .005(nor the)2.504 F F1<ad72>2.505 E F0 .005 -(option is)2.505 F 1.229(supplied, the)144 249.6 R F2(curr)3.729 E 1.229 -(ent job)-.37 F F0 1.229(is used.)3.729 F 1.229(If no)6.229 F F2 -(jobspec)5.469 E F0 1.229(is supplied, the)4.039 F F1<ad61>3.729 E F0 -1.228(option means to remo)3.729 F 1.528 -.15(ve o)-.15 H(r).15 E .656 -(mark all jobs; the)144 261.6 R F1<ad72>3.156 E F0 .657 -(option without a)3.156 F F2(jobspec)4.897 E F0(ar)3.467 E .657 -(gument restricts operation to running jobs.)-.18 F(The)5.657 E +(is not present,)3.105 F .423(and neither)144 213.6 R F1<ad61>2.923 E F0 +(nor)2.923 E F1<ad72>2.923 E F0 .423(is supplied, the shell')2.923 F +2.923(sn)-.55 G .423(otion of the)-2.923 F F2(curr)2.922 E .422(ent job) +-.37 F F0 .422(is used.)2.922 F .422(If the)5.422 F F1<ad68>2.922 E F0 +.422(option is)2.922 F(gi)144 225.6 Q -.15(ve)-.25 G .14(n, each).15 F +F2(jobspec)4.38 E F0 .14(is not remo)2.95 F -.15(ve)-.15 G 2.641(df).15 +G .141(rom the table, b)-2.641 F .141(ut is mark)-.2 F .141(ed so that) +-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)2.641 E F0 .141(is not sent to the) +2.391 F .005(job if the shell recei)144 237.6 R -.15(ve)-.25 G 2.504(sa) +.15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .004(If no)4.504 F F2 +(jobspec)4.244 E F0 .004(is present, and neither the)2.814 F F1<ad61> +2.504 E F0 .004(nor the)2.504 F F1<ad72>2.504 E F0 .004(option is)2.504 +F 1.228(supplied, the)144 249.6 R F2(curr)3.728 E 1.228(ent job)-.37 F +F0 1.229(is used.)3.729 F 1.229(If no)6.229 F F2(jobspec)5.469 E F0 +1.229(is supplied, the)4.039 F F1<ad61>3.729 E F0 1.229 +(option means to remo)3.729 F 1.529 -.15(ve o)-.15 H(r).15 E .657 +(mark all jobs; the)144 261.6 R F1<ad72>3.157 E F0 .657 +(option without a)3.157 F F2(jobspec)4.897 E F0(ar)3.467 E .656 +(gument restricts operation to running jobs.)-.18 F(The)5.656 E (return v)144 273.6 Q(alue is 0 unless a)-.25 E F2(jobspec)4.24 E F0 (does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E F1(echo)108 290.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.395(Output the)144 302.4 R F2(ar)2.895 E(g)-.37 E F0 .395 +.394(Output the)144 302.4 R F2(ar)2.894 E(g)-.37 E F0 .394 (s, separated by spaces, follo)B .395(wed by a ne)-.25 F 2.895 -(wline. The)-.25 F .394(return status is al)2.895 F -.1(wa)-.1 G .394 -(ys 0.).1 F(If)5.394 E F1<ad6e>2.894 E F0 .548 +(wline. The)-.25 F .395(return status is al)2.895 F -.1(wa)-.1 G .395 +(ys 0.).1 F(If)5.395 E F1<ad6e>2.895 E F0 .549 (is speci\214ed, the trailing ne)144 314.4 R .548(wline is suppressed.) -.25 F .548(If the)5.548 F F1<ad65>3.048 E F0 .548(option is gi)3.048 F -.15(ve)-.25 G .548(n, interpretation of the fol-).15 F(lo)144 326.4 Q -.053(wing backslash-escaped characters is enabled.)-.25 F(The)5.053 E F1 -<ad45>2.553 E F0 .052(option disables the interpretation of these)2.552 -F 1.502(escape characters, e)144 338.4 R -.15(ve)-.25 G 4.002(no).15 G -4.002(ns)-4.002 G 1.502(ystems where the)-4.002 F 4.002(ya)-.15 G 1.502 -(re interpreted by def)-4.002 F 4.003(ault. The)-.1 F F1(xpg_echo)4.003 -E F0(shell)4.003 E .009 +.052(wing backslash-escaped characters is enabled.)-.25 F(The)5.052 E F1 +<ad45>2.552 E F0 .053(option disables the interpretation of these)2.553 +F 1.503(escape characters, e)144 338.4 R -.15(ve)-.25 G 4.003(no).15 G +4.003(ns)-4.003 G 1.502(ystems where the)-4.003 F 4.002(ya)-.15 G 1.502 +(re interpreted by def)-4.002 F 4.002(ault. The)-.1 F F1(xpg_echo)4.002 +E F0(shell)4.002 E .009 (option may be used to dynamically determine whether or not)144 350.4 R -F1(echo)2.509 E F0 -.15(ex)2.509 G .009(pands these escape characters) -.15 F .659(by def)144 362.4 R(ault.)-.1 E F1(echo)5.659 E F0 .659 -(does not interpret)3.159 F F1<adad>3.159 E F0 .659 -(to mean the end of options.)3.159 F F1(echo)5.66 E F0 .66 -(interprets the follo)3.16 F(wing)-.25 E(escape sequences:)144 374.4 Q +F1(echo)2.509 E F0 -.15(ex)2.51 G .01(pands these escape characters).15 +F .66(by def)144 362.4 R(ault.)-.1 E F1(echo)5.66 E F0 .66 +(does not interpret)3.16 F F1<adad>3.16 E F0 .659 +(to mean the end of options.)3.159 F F1(echo)5.659 E F0 .659 +(interprets the follo)3.159 F(wing)-.25 E(escape sequences:)144 374.4 Q F1(\\a)144 386.4 Q F0(alert \(bell\))28.22 E F1(\\b)144 398.4 Q F0 (backspace)27.66 E F1(\\c)144 410.4 Q F0(suppress further output)28.78 E F1(\\e)144 422.4 Q(\\E)144 434.4 Q F0(an escape character)26.55 E F1 @@ -6497,63 +6509,63 @@ F1(\\t)144 482.4 Q F0(horizontal tab)29.89 E F1(\\v)144 494.4 Q F0 -.15 (the eight-bit character whose v)13.78 E(alue is the he)-.25 E (xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) -.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 542.4 Q F2(HHHH)A F0 -1.507(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R 1.506 -(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.006 E F0(\(one to four he)180 566.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 578.4 Q F2(HHHHHHHH)A F0 .547 +1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.007 E F0(\(one to four he)180 566.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 578.4 Q F2(HHHHHHHH)A F0 .548 (the Unicode \(ISO/IEC 10646\) character whose v)180 590.4 R .547 -(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 E(HHH)180 602.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 602.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G (igits\))-2.5 E F1(enable)108 619.2 Q F0([)2.5 E F1<ad61>A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1<ad66>-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 631.2 R +(][)C F2(name)-2.5 E F0(...])2.5 E .277(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 +(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834 (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 +(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989 (the shell normally searches for b)144 655.2 R .989 -(uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .989 -(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 +(uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .99 +(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F 1.582 (abled; otherwise,)144 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 679.2 R .081(uiltin v) --.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) -2.581 F F0 5.081(.T)C(he)-5.081 E F1<ad66>2.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 691.2 S 1.524 -(iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F +F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.081 +G(TH)-.189 E F0 .08(instead of the shell b)144 679.2 R .08(uiltin v)-.2 +F .08(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test)2.58 F +F0 5.081(.T)C(he)-5.081 E F1<ad66>2.581 E F0 .081 +(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 691.2 S 1.525 +(iltin command).2 F F2(name)4.385 E F0 1.524(from shared object)4.204 F F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 (ystems that support dynamic loading.)-4.024 F(The)144 703.2 Q F1<ad64> -2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F -.367(viously loaded with)-.25 F F1<ad66>2.866 E F0 5.366(.I)C 2.866(fn) --5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 715.2 R F1<ad70> -2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 +2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F +.366(viously loaded with)-.25 F F1<ad66>2.867 E F0 5.367(.I)C 2.867(fn) +-5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi) +-.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 715.2 R F1<ad70> +2.899 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 +F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144 727.2 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098 -(is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F -(If)5.098 E F1<ad61>2.598 E F0(GNU Bash-4.2)72 768 Q(2010 July 21) -148.175 E(55)198.165 E 0 Cg EP +(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F +(If)5.099 E F1<ad61>2.599 E F0(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(55)187.615 E 0 Cg EP %%Page: 56 56 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 1.916(is supplied, the list printed includes all b)144 84 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 96 R/F1 10/Times-Bold@0 SF<ad73>2.879 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.879 F/F2 10 -/Times-Italic@0 SF(special)2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The) -.2 F .378(return v)2.878 F(alue)-.25 E .994(is 0 unless a)144 108 R F2 -(name)3.854 E F0 .994(is not a shell b)3.674 F .994 -(uiltin or there is an error loading a ne)-.2 F 3.495(wb)-.25 G .995 -(uiltin from a shared)-3.695 F(object.)144 120 Q F1 -2.3 -.15(ev a)108 +-.35 E 1.917(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.878 +(enabled. If)144 96 R/F1 10/Times-Bold@0 SF<ad73>2.878 E F0 .379 +(is supplied, the output is restricted to the POSIX)2.878 F/F2 10 +/Times-Italic@0 SF(special)2.879 E F0 -.2(bu)2.879 G 2.879(iltins. The) +.2 F .379(return v)2.879 F(alue)-.25 E .995(is 0 unless a)144 108 R F2 +(name)3.855 E F0 .994(is not a shell b)3.675 F .994 +(uiltin or there is an error loading a ne)-.2 F 3.494(wb)-.25 G .994 +(uiltin from a shared)-3.694 F(object.)144 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 +Q F2(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671 +(re read and concatenated together into a single command.)-3.17 F .671 +(This command is then read)5.671 F .495(and e)144 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) @@ -6561,82 +6573,82 @@ Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671 (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<ad61>-2.5 E F2 (name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) --.37 E F0(]])A(If)144 201.6 Q F2(command)3.006 E F0 .306 -(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 -(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E -(guments)-.37 E F0(become)3.075 E .176(the ar)144 213.6 R .176 +-.37 E F0(]])A(If)144 201.6 Q F2(command)3.005 E F0 .305 +(is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805 +(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E +(guments)-.37 E F0(become)3.076 E .177(the ar)144 213.6 R .177 (guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G (he)-2.676 E F1<ad6c>2.676 E F0 .176 -(option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 225.6 R .5(gument passed to)-.18 -F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 -E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F1<ad63>2.999 E F0 -.499(option causes)2.999 F F2(com-)3.199 E(mand)144 237.6 Q F0 .638 -(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(option is supplied, the shell places a dash at the be)2.676 F .176 +(ginning of)-.15 F .499(the zeroth ar)144 225.6 R .499(gument passed to) +-.18 F F2(command)2.999 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2 +(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.5 E F1<ad63>3 E F0 +.5(option causes)3 F F2(com-)3.2 E(mand)144 237.6 Q F0 .639(to be e) +3.909 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 (vironment. If)-.4 F F1<ad61>3.138 E F0 .638 -(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 249.6 R 1.077(gument to the e)-.18 F -.15 +(is supplied, the shell passes)3.138 F F2(name)3.498 E F0 .638(as the) +3.318 F 1.077(zeroth ar)144 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 .617 -.15(ve s)-.25 H .317(hell e).15 F -.317(xits, unless the shell option)-.15 F F1(execfail)2.817 E F0 .318 +.15 F(non-interacti)144 261.6 Q .618 -.15(ve s)-.25 H .318(hell e).15 F +.318(xits, unless the shell option)-.15 F F1(execfail)2.817 E F0 .317 (is enabled, in which case it returns f)2.817 F(ail-)-.1 E 2.505 (ure. An)144 273.6 R(interacti)2.505 E .305 -.15(ve s)-.25 H .005 (hell returns f).15 F .005(ailure if the \214le cannot be e)-.1 F -.15 (xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 285.6 Q 3.036(yr)-.15 G .536 -(edirections tak)-3.036 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 +(is not speci\214ed,)3.275 F(an)144 285.6 Q 3.037(yr)-.15 G .537 +(edirections tak)-3.037 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 (ect in the current shell, and the return status is 0.).25 F .536 (If there is a redirection)5.536 F(error)144 297.6 Q 2.5(,t)-.4 G (he return status is 1.)-2.5 E F1(exit)108 314.4 Q F0([)2.5 E F2(n)A F0 -6.29(]C)C .096(ause the shell to e)-6.29 F .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) +6.29(]C)C .095(ause the shell to e)-6.29 F .095(xit with a status of) +-.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096 +(is omitted, the e)2.835 F .096(xit status is that of the last command) -.15 F -.15(exe)144 326.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 /Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G (cuted before the shell terminates.).15 E F1(export)108 343.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E -F0(]] ...)A F1(export \255p)108 355.2 Q F0 .256(The supplied)144 367.2 R +F0(]] ...)A F1(export \255p)108 355.2 Q F0 .257(The supplied)144 367.2 R F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15 -(xe)-.15 G(cuted).15 E 2.627(commands. If)144 379.2 R(the)2.627 E F1 -<ad66>2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) +(xe)-.15 G(cuted).15 E 2.626(commands. If)144 379.2 R(the)2.626 E F1 +<ad66>2.626 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) .15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) -5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F1<ad70>144 391.2 Q F0 .659 -(option is supplied, a list of all names that are e)3.159 F .66 -(xported in this shell is printed.)-.15 F(The)5.66 E F1<ad6e>3.16 E F0 -(option)3.16 E 1.587(causes the e)144 403.2 R 1.587 +5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .127 +(n, or if the).15 F F1<ad70>144 391.2 Q F0 .66 +(option is supplied, a list of all names that are e)3.16 F .659 +(xported in this shell is printed.)-.15 F(The)5.659 E F1<ad6e>3.159 E F0 +(option)3.159 E 1.586(causes the e)144 403.2 R 1.586 (xport property to be remo)-.15 F -.15(ve)-.15 G 4.086(df).15 G 1.586 (rom each)-4.086 F F2(name)4.086 E F0 6.586(.I)C 4.086(fav)-6.586 G -1.586(ariable name is follo)-4.336 F 1.586(wed by)-.25 F(=)144 415.2 Q -F2(wor)A(d)-.37 E F0 2.803(,t)C .303(he v)-2.803 F .303(alue of the v) +1.587(ariable name is follo)-4.336 F 1.587(wed by)-.25 F(=)144 415.2 Q +F2(wor)A(d)-.37 E F0 2.804(,t)C .304(he v)-2.804 F .304(alue of the v) -.25 F .304(ariable is set to)-.25 F F2(wor)2.804 E(d)-.37 E F0(.)A F1 -(export)5.304 E F0 .304(returns an e)2.804 F .304 -(xit status of 0 unless an in)-.15 F -.25(va)-.4 G(lid).25 E .294 +(export)5.304 E F0 .304(returns an e)2.804 F .303 +(xit status of 0 unless an in)-.15 F -.25(va)-.4 G(lid).25 E .293 (option is encountered, one of the)144 427.2 R F2(names)2.793 E F0 .293 (is not a v)2.793 F .293(alid shell v)-.25 F .293(ariable name, or)-.25 -F F1<ad66>2.793 E F0 .293(is supplied with a)2.793 F F2(name)144.36 +F F1<ad66>2.793 E F0 .294(is supplied with a)2.793 F F2(name)144.36 439.2 Q F0(that is not a function.)2.68 E F1(fc)108 456 Q F0([)2.5 E F1 <ad65>A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 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 .477(Fix Command.)144 480 R .478 -(In the \214rst form, a range of commands from)5.477 F F2<8c72>4.888 E -(st)-.1 E F0(to)3.658 E F2(last)3.068 E F0 .478 -(is selected from the his-)3.658 F .882(tory list.)144 492 R F2 -.45(Fi) -5.882 G -.1(rs).45 G(t).1 E F0(and)4.062 E F2(last)3.472 E F0 .882 +(cmd)-2.5 E F0(])A .478(Fix Command.)144 480 R .478 +(In the \214rst form, a range of commands from)5.478 F F2<8c72>4.888 E +(st)-.1 E F0(to)3.658 E F2(last)3.068 E F0 .477 +(is selected from the his-)3.658 F .881(tory list.)144 492 R F2 -.45(Fi) +5.881 G -.1(rs).45 G(t).1 E F0(and)4.061 E F2(last)3.471 E F0 .882 (may be speci\214ed as a string \(to locate the last command be)4.062 F -.881(ginning with)-.15 F .797(that string\) or as a number \(an inde)144 +.882(ginning with)-.15 F .797(that string\) or as a number \(an inde)144 504 R 3.297(xi)-.15 G .797(nto the history list, where a ne)-3.297 F --.05(ga)-.15 G(ti).05 E 1.097 -.15(ve n)-.25 H .797(umber is used as an) -.15 F(of)144 516 Q .277(fset from the current command number\).)-.25 F -(If)5.277 E F2(last)2.867 E F0 .276 -(is not speci\214ed it is set to the current command)3.457 F .092 +-.05(ga)-.15 G(ti).05 E 1.097 -.15(ve n)-.25 H .796(umber is used as an) +.15 F(of)144 516 Q .276(fset from the current command number\).)-.25 F +(If)5.276 E F2(last)2.866 E F0 .277 +(is not speci\214ed it is set to the current command)3.456 F .093 (for listing \(so that)144 528 R/F4 10/Courier@0 SF .092 (fc \255l \25510)2.592 F F0 .092(prints the last 10 commands\) and to) 2.592 F F2<8c72>4.502 E(st)-.1 E F0 2.592(otherwise. If)3.272 F F2<8c72> -4.502 E(st)-.1 E F0 .093(is not)3.273 F +4.502 E(st)-.1 E F0 .092(is not)3.272 F (speci\214ed it is set to the pre)144 540 Q (vious command for editing and \25516 for listing.)-.25 E(The)144 564 Q F1<ad6e>2.522 E F0 .022 @@ -6645,127 +6657,127 @@ F1<ad72>2.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 (rses the order of).15 F .438(the commands.)144 576 R .438(If the)5.438 F F1<ad6c>2.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.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) +.334(the editor gi)144 588 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E F2 +(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) .1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F -(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E .63(the v)144 600 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0 --.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F -F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 -(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 612 R .951 -(ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 -(When editing is complete, the edited commands are echoed and)5.951 F --.15(exe)144 624 S(cuted.).15 E .039(In the second form,)144 648 R F2 -(command)2.539 E F0 .039(is re-e)2.539 F -.15(xe)-.15 G .039 -(cuted after each instance of).15 F F2(pat)2.54 E F0 .04(is replaced by) -2.54 F F2 -.37(re)2.54 G(p).37 E F0 5.04(.A)C(useful)-2.5 E .406 -(alias to use with this is)144 660 R F4 .406(r='fc \255s')2.906 F F0 -2.906(,s)C 2.906(ot)-2.906 G .406(hat typing)-2.906 F F4 6.406(rc)2.906 -G(c)-6.406 E F0 .406(runs the last command be)2.906 F .406(ginning with) --.15 F F4(cc)144 672 Q F0(and typing)2.5 E F4(r)2.5 E F0(re-e)2.5 E -.15 -(xe)-.15 G(cutes the last command.).15 E .142 +(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G +(n,).15 E .631(the v)144 600 R .631(alue of the)-.25 F F3(FCEDIT)3.131 E +F0 -.25(va)2.881 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.13 E F0 .63 +(is not set.)2.88 F .63(If nei-)5.63 F .95(ther v)144 612 R .95 +(ariable is set,)-.25 F F2(vi)5.116 E F0 .95(is used.)5.116 F .951 +(When editing is complete, the edited commands are echoed and)5.95 F +-.15(exe)144 624 S(cuted.).15 E .04(In the second form,)144 648 R F2 +(command)2.54 E F0 .04(is re-e)2.54 F -.15(xe)-.15 G .039 +(cuted after each instance of).15 F F2(pat)2.539 E F0 .039 +(is replaced by)2.539 F F2 -.37(re)2.539 G(p).37 E F0 5.039(.A)C(useful) +-2.5 E .406(alias to use with this is)144 660 R F4 .406(r='fc \255s') +2.906 F F0 2.906(,s)C 2.906(ot)-2.906 G .406(hat typing)-2.906 F F4 +6.406(rc)2.906 G(c)-6.406 E F0 .406(runs the last command be)2.906 F +.407(ginning with)-.15 F F4(cc)144 672 Q F0(and typing)2.5 E F4(r)2.5 E +F0(re-e)2.5 E -.15(xe)-.15 G(cutes the last command.).15 E .142 (If the \214rst form is used, the return v)144 696 R .142 (alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .455(specify history lines out of range.)144 708 R +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 708 R .454(If the)5.454 F F1<ad65>2.954 E F0 .454 -(option is supplied, the return v)2.954 F .454(alue is the v)-.25 F .454 -(alue of the)-.25 F .787(last command e)144 720 R -.15(xe)-.15 G .787 -(cuted or f).15 F .788 +(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 720 R -.15(xe)-.15 G .788 +(cuted or f).15 F .787 (ailure if an error occurs with the temporary \214le of commands.)-.1 F -.788(If the)5.788 F(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(56) -198.165 E 0 Cg EP +.787(If the)5.787 F(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(56) +187.615 E 0 Cg EP %%Page: 57 57 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 1.136 +-.35 E 1.135 (second form is used, the return status is that of the command re-e)144 -84 R -.15(xe)-.15 G 1.135(cuted, unless).15 F/F1 10/Times-Italic@0 SF -(cmd)3.835 E F0 1.135(does not)4.405 F(specify a v)144 96 Q +84 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 96 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 112.8 Q F0([)2.5 E F1 -(jobspec)A F0(])A(Resume)144 124.8 Q F1(jobspec)5.653 E F0 1.413 -(in the fore)4.223 F 1.413(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913 +(jobspec)A F0(])A(Resume)144 124.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.414(is not present, the)4.223 F(shell')144 136.8 Q -3.117(sn)-.55 G .617(otion of the)-3.117 F F1(curr)3.117 E .617(ent job) --.37 F F0 .617(is used.)3.117 F .617(The return v)5.617 F .616 +(jobspec)5.653 E F0 1.413(is not present, the)4.223 F(shell')144 136.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 148.8 Q -.362(ground, or f)-.15 F .362 -(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363 +.363(ground, or f)-.15 F .363 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 (hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 160.8 Q -F0 .004(does not specify a v)2.815 F .004(alid job or)-.25 F F1(jobspec) +F0 .004(does not specify a v)2.814 F .004(alid job or)-.25 F F1(jobspec) 4.244 E F0 .004(speci\214es a job that w)2.814 F .004 (as started without job control.)-.1 F F2(getopts)108 177.6 Q F1 (optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)-.37 E F0(])A F2(getopts)144 189.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 201.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 213.6 Q .578 -(gument, which should be separated from it by white space.)-.18 F .579 +(is used by shell procedures to parse positional parameters.)3.294 F F1 +(optstring)6.023 E F0 .793(contains the option)3.513 F .149 +(characters to be recognized; if a character is follo)144 201.6 R .15 +(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45 +-.15(ve a)-.2 H(n).15 E(ar)144 213.6 Q .579 +(gument, which should be separated from it by white space.)-.18 F .578 (The colon and question mark char)5.579 F(-)-.2 E 1.665 (acters may not be used as option characters.)144 225.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 237.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 249.6 Q .085 +4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797 +(option in the shell v)144 237.6 R(ariable)-.25 E F1(name)3.297 E F0 +3.297(,i).18 G(nitializing)-3.297 E F1(name)3.657 E F0 .797 +(if it does not e)3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G +3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 249.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 +4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .846 (or a shell script is in)144 261.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 273.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 +(getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803 +(into the v)144 273.6 R(ariable)-.25 E F3(OPT)3.303 E(ARG)-.81 E F4(.)A +F0 .803(The shell does not reset)5.303 F F3(OPTIND)3.303 E F0 .804 +(automatically; it must be manually)3.054 F .294 (reset between multiple calls to)144 285.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 297.6 -Q 2.044(When the end of options is encountered,)144 321.6 R F2(getopts) -4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 +2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 297.6 +Q 2.043(When the end of options is encountered,)144 321.6 R F2(getopts) +4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 (alue greater than zero.)-.25 F F3(OPTIND)144 333.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 F2(getopts)144 357.6 Q F0 2.392 -(normally parses the positional parameters, b)4.892 F 2.392 -(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 -(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F2(getopts)144 -369.6 Q F0(parses those instead.)2.5 E F2(getopts)144 393.6 Q F0 1.166 -(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165 -(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.263 +(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 357.6 Q F0 2.393 +(normally parses the positional parameters, b)4.893 F 2.392 +(ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892 +(ni).15 G(n)-4.892 E F1(ar)4.892 E(gs)-.37 E F0(,).27 E F2(getopts)144 +369.6 Q F0(parses those instead.)2.5 E F2(getopts)144 393.6 Q F0 1.165 +(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F +1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.166 +(is a colon,)3.886 F F1(silent)4.006 E F0(error)4.346 E 1.264 (reporting is used.)144 405.6 R 1.263 (In normal operation diagnostic messages are printed when in)6.263 F --.25(va)-.4 G 1.263(lid options or).25 F .394(missing option ar)144 -417.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +-.25(va)-.4 G 1.263(lid options or).25 F .393(missing option ar)144 +417.6 R .393(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 429.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 453.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 -465.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 477.6 Q 1.241(If a required ar)144 -501.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 513.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 +F1(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 453.6 R +-.25(va)-.4 G .667(lid option is seen,).25 F F2(getopts)3.167 E F0 .667 +(places ? into)3.167 F F1(name)3.527 E F0 .666 +(and, if not silent, prints an error message)3.347 F .399(and unsets)144 +465.6 R F3(OPT)2.899 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 .4(and no)2.65 F +(diagnostic message is printed.)144 477.6 Q 1.242(If a required ar)144 +501.6 R 1.242(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.741 +(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F F1(name)144 513.6 +Q F0(,).18 E F3(OPT)2.734 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F2 +(getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F2(:).833 E F0(\)).833 E(is placed in)144 525.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 549.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 +3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F (options is encountered or an error occurs.)144 561.6 Q F2(hash)108 578.4 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2<ad70>-2.5 E F1(\214lename) 2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A @@ -6774,41 +6786,42 @@ F0(\)).833 E(is placed in)144 525.6 Q F1(name)2.86 E F0(and)2.68 E F3 3.718 E F0 .858(is determined by searching)3.538 F .956 (the directories in)144 602.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 .099(If the)144 614.4 -R F2<ad70>2.599 E F0 .099 -(option is supplied, no path search is performed, and)2.599 F F1 -(\214lename)4.508 E F0 .098(is used as the full \214le name)2.778 F -1.711(of the command.)144 626.4 R(The)6.711 E F2<ad72>4.211 E F0 1.711 -(option causes the shell to for)4.211 F 1.712 -(get all remembered locations.)-.18 F(The)6.712 E F2<ad64>4.212 E F0 +(viously-remembered pathname is discarded.)-.25 F .098(If the)144 614.4 +R F2<ad70>2.598 E F0 .098 +(option is supplied, no path search is performed, and)2.598 F F1 +(\214lename)4.509 E F0 .099(is used as the full \214le name)2.779 F +1.712(of the command.)144 626.4 R(The)6.712 E F2<ad72>4.212 E F0 1.711 +(option causes the shell to for)4.212 F 1.711 +(get all remembered locations.)-.18 F(The)6.711 E F2<ad64>4.211 E F0 .833(option causes the shell to for)144 638.4 R .833 (get the remembered location of each)-.18 F F1(name)3.333 E F0 5.833(.I) C 3.333(ft)-5.833 G(he)-3.333 E F2<ad74>3.333 E F0 .833(option is sup-) -3.333 F .703(plied, the full pathname to which each)144 650.4 R F1(name) -3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F -F1(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 +3.333 F .704(plied, the full pathname to which each)144 650.4 R F1(name) +3.204 E F0 .703(corresponds is printed.)3.204 F .703(If multiple)5.703 F +F1(name)3.203 E F0(ar)3.203 E(guments)-.18 E .795(are supplied with)144 662.4 R F2<ad74>3.295 E F0 3.295(,t)C(he)-3.295 E F1(name)3.295 E F0 .795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F2 <ad6c>3.295 E F0 .795(option causes)3.295 F .934 (output to be displayed in a format that may be reused as input.)144 -674.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 686.4 Q F2<ad6c>2.822 E F0 .322 -(is supplied, information about remembered commands is printed.)2.822 F -.321(The return status is true)5.321 F(unless a)144 698.4 Q F1(name)2.86 +674.4 R .934(If no ar)5.934 F .934(guments are gi)-.18 F -.15(ve)-.25 G +.934(n, or if).15 F(only)144 686.4 Q F2<ad6c>2.821 E F0 .321 +(is supplied, information about remembered commands is printed.)2.821 F +.322(The return status is true)5.322 F(unless a)144 698.4 Q F1(name)2.86 E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(57)198.165 E 0 Cg EP +.25 E(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(57)187.615 E 0 Cg +EP %%Page: 58 58 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E/F1 10/Times-Bold@0 SF(help)108 84 Q F0([)2.5 E F1(\255dms)A F0 -2.5(][)C/F2 10/Times-Italic@0 SF(pattern)-2.5 E F0(])A .866 +2.5(][)C/F2 10/Times-Italic@0 SF(pattern)-2.5 E F0(])A .867 (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 +F(If)5.867 E F2(pattern)4.617 E F0 .866(is speci\214ed,)3.607 F F1(help) +3.366 E F0(gi)3.366 E -.15(ve)-.25 G 3.366(sd).15 G(etailed)-3.366 E +.306(help on all commands matching)144 108 R F2(pattern)2.806 E F0 2.807 +(;o).24 G .307(therwise help for all the b)-2.807 F .307 (uiltins and shell control struc-)-.2 F(tures is printed.)144 120 Q F1 <ad64>144 132 Q F0(Display a short description of each)24.74 E F2 (pattern)2.5 E F1<ad6d>144 144 Q F0(Display the description of each) @@ -6824,13 +6837,13 @@ F1(history \255p)108 232.8 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 -.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 256.8 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 268.8 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 +.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 +G .38(been modi\214ed.)144 268.8 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 280.8 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 +/Times-Bold@0 SF(HISTTIMEFOR-)2.881 E(MA)144 280.8 Q(T)-.855 E F0 .265 +(is set and not null, it is used as a format string for)2.515 F F2 +(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019 (ciated with each displayed history entry)144 292.8 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 @@ -6842,75 +6855,74 @@ F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 (wing meanings:)-.25 E F1<ad63>144 328.8 Q F0 (Clear the history list by deleting all the entries.)25.86 E F1<ad64>144 340.8 Q F2(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) -180 352.8 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1<ad61>144 364.8 Q F0 .599 -(Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.099('h)-.74 G .598 -(istory lines \(history lines entered since the be)-3.099 F .598 +180 352.8 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1<ad61>144 364.8 Q F0 .598 +(Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.098('h)-.74 G .598 +(istory lines \(history lines entered since the be)-3.098 F .599 (ginning of the current)-.15 F F1(bash)180 376.8 Q F0 (session\) to the history \214le.)2.5 E F1<ad6e>144 388.8 Q F0 .854(Rea\ d the history lines not already read from the history \214le into the c\ -urrent history list.)24.74 F .773 +urrent history list.)24.74 F .772 (These are lines appended to the history \214le since the be)180 400.8 R -.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E +.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E (sion.)180 412.8 Q F1<ad72>144 424.8 Q F0(Read the contents of the hist\ ory \214le and use them as the current history)25.86 E(.)-.65 E F1<ad77> 144 436.8 Q F0(Write the current history to the history \214le, o)23.08 E -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1<ad70>144 448.8 Q F0 .625 +(ontents.)-2.5 E F1<ad70>144 448.8 Q F0 .626 (Perform history substitution on the follo)24.74 F(wing)-.25 E F2(ar) -3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F +3.125 E(gs)-.37 E F0 .625(and display the result on the standard)3.125 F 2.975(output. Does)180 460.8 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 472.8 Q(xpansion.)-.15 E F1<ad73>144 484.8 Q F0 -.362(Store the)26.41 F F2(ar)3.192 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 +.363(Store the)26.41 F 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 496.8 Q -.15 (ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .146(If the)144 513.6 R F3(HISTTIMEFORMA)2.645 E(T) +(are added.)2.77 E .145(If the)144 513.6 R F3(HISTTIMEFORMA)2.645 E(T) -.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .668(entry is written to the history \214le, mark)144 525.6 R .669 -(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669 -(hen the history)-5.669 F .956(\214le is read, lines be)144 537.6 R .956 -(ginning with the history comment character follo)-.15 F .955 -(wed immediately by a digit)-.25 F .415 +.25 F .669(entry is written to the history \214le, mark)144 525.6 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 537.6 R .956 +(ginning with the history comment character follo)-.15 F .956 +(wed immediately by a digit)-.25 F .416 (are interpreted as timestamps for the pre)144 549.6 R .416 -(vious history line.)-.25 F .416(The return v)5.416 F .416 +(vious history line.)-.25 F .416(The return v)5.416 F .415 (alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .499(option is e\ ncountered, an error occurs while reading or writing the history \214le\ -, an in)144 561.6 R -.25(va)-.4 G(lid).25 E F2(of)2.999 E(fset)-.18 E F0 -(is)2.999 E(supplied as an ar)144 573.6 Q(gument to)-.18 E F1<ad64>2.5 E -F0 2.5(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E -(xpansion supplied as an ar)-.15 E(gument to)-.18 E F1<ad70>2.5 E F0 -.1 -(fa)2.5 G(ils.).1 E F1(jobs)108 590.4 Q F0([)2.5 E F1(\255lnprs)A F0 2.5 -(][)C F2(jobspec)A F0(... ])2.5 E F1(jobs \255x)108 602.4 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 614.4 Q .3 -.15(ve j)-.25 H 2.5 -(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1<ad6c>144 626.4 Q F0 +, an in)144 561.6 R -.25(va)-.4 G(lid).25 E F2(of)3 E(fset)-.18 E F0(is) +3 E(supplied as an ar)144 573.6 Q(gument to)-.18 E F1<ad64>2.5 E F0 2.5 +(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E(xpansion supplied as an ar)-.15 +E(gument to)-.18 E F1<ad70>2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(jobs)108 +590.4 Q F0([)2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 +E F1(jobs \255x)108 602.4 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 614.4 Q .3 +-.15(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1<ad6c>144 626.4 Q F0 (List process IDs in addition to the normal information.)27.52 E F1 -<ad6e>144 638.4 Q F0 .193(Display information only about jobs that ha) -24.74 F .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 650.4 Q F1<ad70>144 +<ad6e>144 638.4 Q F0 .194(Display information only about jobs that ha) +24.74 F .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 F +.193(as last noti-)-.1 F(\214ed of their status.)180 650.4 Q F1<ad70>144 662.4 Q F0(List only the process ID of the job')24.74 E 2.5(sp)-.55 G (rocess group leader)-2.5 E(.)-.55 E F1<ad72>144 674.4 Q F0 (Restrict output to running jobs.)25.86 E F1<ad73>144 686.4 Q F0 (Restrict output to stopped jobs.)26.41 E(If)144 703.2 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 715.2 Q -.25 +4.553 E F0 .313(is gi)3.123 F -.15(ve)-.25 G .313 +(n, output is restricted to information about that job).15 F 5.314(.T) +-.4 G .314(he return status is 0 unless)-5.314 F(an in)144 715.2 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(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(58)198.165 E 0 Cg EP +(2010 September 6)137.625 E(58)187.615 E 0 Cg EP %%Page: 59 59 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .394(If the)144 84 R/F1 10/Times-Bold@0 SF<ad78>2.894 E F0 .394 +-.35 E .395(If the)144 84 R/F1 10/Times-Bold@0 SF<ad78>2.895 E F0 .394 (option is supplied,)2.894 F F1(jobs)2.894 E F0 .394(replaces an)2.894 F (y)-.15 E/F2 10/Times-Italic@0 SF(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 +F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .394 (with the corre-)3.164 F(sponding process group ID, and e)144 96 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 @@ -6918,34 +6930,34 @@ F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 <ad6e>2.5 E F2(signum)2.5 E F0(|)2.5 E F1<ad>2.5 E F2(sigspec)A F0 2.5 (][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 (kill \255l)108 124.8 Q 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 136.8 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 148.8 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 160.8 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) +G(it_status).2 E F0(])A .119(Send the signal named by)144 136.8 R F2 +(sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119 +(to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2 +(jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319 +(either a case-insensiti)144 148.8 R .619 -.15(ve s)-.25 H .319 +(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 .318 +(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318 +(pre\214x\) or a signal)2.568 F(number;)144 160.8 Q F2(signum)4.188 E F0 +1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) 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 172.8 Q .522(gument of)-.18 +1.349(is assumed.)3.599 F(An)6.349 E(ar)144 172.8 Q .523(gument of)-.18 F F1<ad6c>3.023 E F0 .523(lists the signal names.)3.023 F .523(If an) 5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when) .18 F F1<ad6c>3.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523 (n, the names).15 F .28(of the signals corresponding to the ar)144 184.8 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 196.8 Q .377(gument to)-.18 F -F1<ad6c>2.877 E F0 .378 -(is a number specifying either a signal number or the e)2.877 F .378 -(xit status of a process termi-)-.15 F .594(nated by a signal.)144 208.8 +F2 -.2(ex)2.78 G(it_status).2 E F0(ar)144 196.8 Q .378(gument to)-.18 F +F1<ad6c>2.878 E F0 .378 +(is a number specifying either a signal number or the e)2.878 F .377 +(xit status of a process termi-)-.15 F .593(nated by a signal.)144 208.8 R F1(kill)5.593 E F0 .593(returns true if at least one signal w)3.093 F -.593(as successfully sent, or f)-.1 F .593(alse if an error)-.1 F +.593(as successfully sent, or f)-.1 F .594(alse if an error)-.1 F (occurs or an in)144 220.8 Q -.25(va)-.4 G(lid option is encountered.) .25 E F1(let)108 237.6 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 249.6 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 +E F0(...])2.5 E(Each)144 249.6 Q F2(ar)3.027 E(g)-.37 E F0 .197 +(is an arithmetic e)2.917 F .197(xpression to be e)-.15 F -.25(va)-.25 G +.196(luated \(see).25 F F3 .196(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855 +(AT)-.54 G(ION).855 E F0(abo)2.446 E -.15(ve)-.15 G 2.696(\). If).15 F (the last)144 261.6 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 278.4 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(name) @@ -6953,19 +6965,19 @@ E F0(...])2.5 E(Each)144 249.6 Q F2(ar)3.026 E(g)-.37 E F0 .196 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 302.4 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 +.06(can be)2.56 F(an)144 302.4 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653 +(he options accepted by)-3.153 F F1(declar)3.153 E(e)-.18 E F0 5.652(.W) +C(hen)-5.652 E F1(local)3.152 E F0 .652 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -314.4 Q F2(name)3.721 E F0 .861(to ha)3.541 F 1.161 -.15(ve a v)-.2 H -.861(isible scope restricted to that function and its children.).15 F --.4(Wi)5.86 G .86(th no operands,).4 F F1(local)144 326.4 Q F0 1.164 -(writes a list of local v)3.664 F 1.165 +314.4 Q F2(name)3.72 E F0 .86(to ha)3.54 F 1.16 -.15(ve a v)-.2 H .861 +(isible scope restricted to that function and its children.).15 F -.4 +(Wi)5.861 G .861(th no operands,).4 F F1(local)144 326.4 Q F0 1.165 +(writes a list of local v)3.665 F 1.165 (ariables to the standard output.)-.25 F 1.165(It is an error to use) -6.165 F F1(local)3.665 E F0 1.165(when not)3.665 F .233 -(within a function.)144 338.4 R .233(The return status is 0 unless)5.233 +6.165 F F1(local)3.664 E F0 1.164(when not)3.664 F .232 +(within a function.)144 338.4 R .233(The return status is 0 unless)5.232 F F1(local)2.733 E F0 .233(is used outside a function, an in)2.733 F --.25(va)-.4 G(lid).25 E F2(name)3.092 E F0(is)2.912 E(supplied, or)144 +-.25(va)-.4 G(lid).25 E F2(name)3.093 E F0(is)2.913 E(supplied, or)144 350.4 Q F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1 (logout)108 367.2 Q F0(Exit a login shell.)9.33 E F1(map\214le)108 384 Q F0([)2.5 E F1<ad6e>A F2(count)2.5 E F0 2.5(][)C F1<ad4f>-2.5 E F2 @@ -6977,14 +6989,14 @@ F0([)2.5 E F1<ad6e>A F2(count)2.5 E F0 2.5(][)C F1<ad4f>-2.5 E F2 -2.5 E F2(origin)2.5 E F0 2.5(][)C F1<ad73>-2.5 E F2(count)2.5 E F0 2.5 (][)C F1<ad74>-2.5 E F0 2.5(][)C F1<ad75>-2.5 E F2(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1<ad63>-2.5 E F2 -(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0(])A .35 +(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0(])A .351 (Read lines from the standard input into the inde)144 408 R -.15(xe)-.15 -G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2(arr)2.851 E(ay) --.15 E F0 2.851(,o).32 G 2.851(rf)-2.851 G .351(rom \214le descriptor) --2.851 F F2(fd)2.851 E F0 1.249(if the)144 420 R F1<ad75>3.749 E F0 -1.249(option is supplied.)3.749 F 1.249(The v)6.249 F(ariable)-.25 E F3 -(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 E F2(arr)3.748 E -(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,)-6.248 F(ha)144 432 +G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2(arr)2.85 E(ay) +-.15 E F0 2.85(,o).32 G 2.85(rf)-2.85 G .35(rom \214le descriptor)-2.85 +F F2(fd)2.85 E F0 1.248(if the)144 420 R F1<ad75>3.748 E F0 1.248 +(option is supplied.)3.748 F 1.249(The v)6.249 F(ariable)-.25 E F3 +(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 E F2(arr)3.749 E +(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,)-6.249 F(ha)144 432 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad6e>144 444 Q F0(Cop)24.74 E 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.) @@ -7000,33 +7012,33 @@ F0(Read lines from \214le descriptor)24.74 E F2(fd)2.5 E F0 2.5 E F0(lines are read.)2.5 E(The)5 E F1<ad63>2.5 E F0 (option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1<ad63>144 516 Q F0(Specify the number of lines read between each call to)25.86 E F2 -(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 532.8 Q F1<ad43>2.967 E F0 .467 +(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 532.8 Q F1<ad43>2.968 E F0 .467 (is speci\214ed without)2.967 F F1<ad63>2.967 E F0 2.967(,t)C .467 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .262(plied the inde)144 544.8 R 2.762(xo)-.15 -G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be ass\ -igned and the line to be assigned to that element)-.15 F .274 -(as additional ar)144 556.8 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E -F0 .274(is e)2.774 F -.25(va)-.25 G .274 -(luated after the line is read b).25 F .275 +(luated, it is sup-).25 F .261(plied the inde)144 544.8 R 2.761(xo)-.15 +G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ +igned and the line to be assigned to that element)-.15 F .275 +(as additional ar)144 556.8 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +F0 .275(is e)2.775 F -.25(va)-.25 G .274 +(luated after the line is read b).25 F .274 (ut before the array element is)-.2 F(assigned.)144 568.8 Q (If not supplied with an e)144 585.6 Q(xplicit origin,)-.15 E F1 (map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F1(map\214le)144 602.4 Q F0 1.906 -(returns successfully unless an in)4.406 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.905(gument is supplied,)-.18 F F2(arr) -4.405 E(ay)-.15 E F0(is)4.405 E(in)144 614.4 Q -.25(va)-.4 G +(before assigning to it.)2.5 E F1(map\214le)144 602.4 Q F0 1.905 +(returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 +(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F2(arr) +4.406 E(ay)-.15 E F0(is)4.406 E(in)144 614.4 Q -.25(va)-.4 G (lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 (is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E F1(popd)108 631.2 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 643.2 Q -.15(ve)-.15 G 2.799 -(se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G -.299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 -G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144 -655.2 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 -(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 +2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 643.2 Q -.15(ve)-.15 G 2.8(se) +.15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 +(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G +.299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 +655.2 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 +(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 +(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 F(wing)-.25 E(meanings:)144 667.2 Q F1<ad6e>144 679.2 Q F0 .551 (Suppresses the normal change of directory when remo)24.74 F .551 (ving directories from the stack, so)-.15 F @@ -7037,43 +7049,43 @@ F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 715.2 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) -.65 E F4(popd +1)2.5 E F0(the second.)2.5 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(59)198.165 E 0 Cg EP +(2010 September 6)137.625 E(59)187.615 E 0 Cg EP %%Page: 60 60 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E/F1 10/Times-Bold@0 SF<ad>144 84 Q/F2 10/Times-Italic@0 SF(n)A F0 -(Remo)25.3 E -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0 -1.259(th entry counting from the right of the list sho)B 1.26(wn by)-.25 -F F1(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 -96 R(or e)-.15 E(xample:)-.15 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 last directory)-2.5 E(,)-.65 -E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 -112.8 R F1(popd)3.144 E F0 .644(command is successful, a)3.144 F F1 -(dirs)3.143 E F0 .643(is performed as well, and the return status is 0.) -3.143 F F1(popd)5.643 E F0 .415(returns f)144 124.8 R .415 -(alse if an in)-.1 F -.25(va)-.4 G .415 -(lid option is encountered, the directory stack is empty).25 F 2.916 -(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F +(Remo)25.3 E -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 +1.259(th entry counting from the right of the list sho)B 1.259(wn by) +-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 +(zero. F)180 96 R(or e)-.15 E(xample:)-.15 E/F3 10/Courier@0 SF(popd -0) +2.5 E F0(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E +(,)-.65 E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643 +(If the)144 112.8 R F1(popd)3.143 E F0 .643(command is successful, a) +3.143 F F1(dirs)3.143 E F0 .644 +(is performed as well, and the return status is 0.)3.143 F F1(popd)5.644 +E F0 .416(returns f)144 124.8 R .416(alse if an in)-.1 F -.25(va)-.4 G +.415(lid option is encountered, the directory stack is empty).25 F 2.915 +(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F (tory stack entry is speci\214ed, or the directory change f)144 136.8 Q (ails.)-.1 E F1(printf)108 153.6 Q F0([)2.5 E F1<ad76>A F2(var)2.5 E F0 -(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.437 -(Write the formatted)144 165.6 R F2(ar)3.937 E(guments)-.37 E F0 1.437 -(to the standard output under the control of the)3.937 F F2(format)3.936 -E F0 6.436(.T)C(he)-6.436 E F1<ad76>3.936 E F0 .126 +(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 +(Write the formatted)144 165.6 R F2(ar)3.936 E(guments)-.37 E F0 1.437 +(to the standard output under the control of the)3.936 F F2(format)3.937 +E F0 6.437(.T)C(he)-6.437 E F1<ad76>3.937 E F0 .126 (option causes the output to be assigned to the v)144 177.6 R(ariable) -.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) -2.626 F(output.)144 189.6 Q(The)144 213.6 Q F2(format)3.018 E F0 .517(i\ +2.626 F(output.)144 189.6 Q(The)144 213.6 Q F2(format)3.017 E F0 .517(i\ s a character string which contains three types of objects: plain chara\ -cters, which are)3.018 F .704(simply copied to standard output, charact\ -er escape sequences, which are con)144 225.6 R -.15(ve)-.4 G .704 +cters, which are)3.017 F .704(simply copied to standard output, charact\ +er escape sequences, which are con)144 225.6 R -.15(ve)-.4 G .703 (rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 237.6 R .036 +\214cations, each of which causes printing of the ne)144 237.6 R .037 (xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 249.6 Q(gument)-.37 E F0 -5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2 -(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032 -E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 261.6 Q +5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 +(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 261.6 Q (xtensions:)-.15 E F1(%b)144 273.6 Q F0(causes)20.44 E F1(printf)5.115 E F0 2.615(to e)5.115 F 2.615 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar) @@ -7086,46 +7098,46 @@ E F0(,)A F1(\\")3.108 E F0 3.108(,a)C(nd)-3.108 E F1(\\?)3.108 E F0 .608 20.44 E 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 321.6 Q F1(%\()144 333.6 Q F2(datefmt)A F1(\)T)A F0 -(causes)180 345.6 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 357.6 R F2 +(causes)180 345.6 Q F1(printf)4.404 E F0 1.904 +(to output the date-time string resulting from using)4.404 F F2(datefmt) +4.404 E F0 1.903(as a format)4.404 F .38(string for)180 357.6 R F2 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .457(of seconds since the epoch.)180 +(ger representing the number)-.15 F .458(of seconds since the epoch.)180 369.6 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F .458(alues may be used: -1 represents the)-.25 F (current time, and -2 represents the time the shell w)180 381.6 Q(as in) --.1 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(Ar)144 398.4 Q .464(guments to n\ -on-string format speci\214ers are treated as C constants, e)-.18 F .463 -(xcept that a leading plus or)-.15 F 1.258(minus sign is allo)144 410.4 +-.1 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(Ar)144 398.4 Q .463(guments to n\ +on-string format speci\214ers are treated as C constants, e)-.18 F .464 +(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 410.4 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 422.4 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 439.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 +-.25 F 1.258(alue is the)-.25 F(ASCII v)144 422.4 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 439.2 Q F2(format)3.423 E +F0 .923(is reused as necessary to consume all of the)3.423 F F2(ar)3.423 E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) -3.423 E F0 .923(requires more)3.423 F F2(ar)144 451.2 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.533 F .033 +3.423 E F0 .924(requires more)3.424 F F2(ar)144 451.2 Q(guments)-.37 E +F0 .033(than are supplied, the e)2.534 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,) +.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,) -.25 F(as appropriate, had been supplied.)144 463.2 Q(The return v)5 E (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) 108 480 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C <ad>-2.5 E F2(n)A F0(])A F1(pushd)108 492 Q F0([)2.5 E F1<ad6e>A F0 2.5 -(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the direc\ -tory stack, or rotates the stack, making the ne)144 504 R 3.139(wt)-.25 -G .639(op of the)-3.139 F 1.315(stack the current w)144 516 R 1.315 -(orking directory)-.1 F 6.315(.W)-.65 G 1.315(ith no ar)-6.715 F 1.315 -(guments, e)-.18 F 1.316(xchanges the top tw)-.15 F 3.816(od)-.1 G 1.316 -(irectories and)-3.816 F .872 +(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the dire\ +ctory stack, or rotates the stack, making the ne)144 504 R 3.14(wt)-.25 +G .64(op of the)-3.14 F 1.316(stack the current w)144 516 R 1.316 +(orking directory)-.1 F 6.316(.W)-.65 G 1.315(ith no ar)-6.716 F 1.315 +(guments, e)-.18 F 1.315(xchanges the top tw)-.15 F 3.815(od)-.1 G 1.315 +(irectories and)-3.815 F .871 (returns 0, unless the directory stack is empty)144 528 R 5.871(.A)-.65 -G -.18(rg)-5.871 G .871(uments, if supplied, ha).18 F 1.171 -.15(ve t) --.2 H .871(he follo).15 F .871(wing mean-)-.25 F(ings:)144 540 Q F1 +G -.18(rg)-5.871 G .872(uments, if supplied, ha).18 F 1.172 -.15(ve t) +-.2 H .872(he follo).15 F .872(wing mean-)-.25 F(ings:)144 540 Q F1 <ad6e>144 552 Q F0 .902(Suppresses the normal change of directory when \ adding directories to the stack, so that)24.74 F -(only the stack is manipulated.)180 564 Q F1(+)144 576 Q F2(n)A F0 1.268 -(Rotates the stack so that the)25.3 F F2(n)3.768 E F0 1.267 -(th directory \(counting from the left of the list sho)B 1.267(wn by) +(only the stack is manipulated.)180 564 Q F1(+)144 576 Q F2(n)A F0 1.267 +(Rotates the stack so that the)25.3 F F2(n)3.767 E F0 1.268 +(th directory \(counting from the left of the list sho)B 1.268(wn by) -.25 F F1(dirs)180 588 Q F0 2.5(,s)C(tarting with zero\) is at the top.) -2.5 E F1<ad>144 600 Q F2(n)A F0 .92(Rotates the stack so that the)25.3 F F2(n)3.42 E F0 .92 @@ -7133,27 +7145,27 @@ F F2(n)3.42 E F0 .92 F F1(dirs)180 612 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 E F2(dir)144.35 624 Q F0(Adds)23.98 E F2(dir)2.85 E F0 (to the directory stack at the top, making it the ne)3.23 E 2.5(wc)-.25 -G(urrent w)-2.5 E(orking directory)-.1 E(.)-.65 E .489(If the)144 640.8 -R F1(pushd)2.989 E F0 .489(command is successful, a)2.989 F F1(dirs) -2.988 E F0 .488(is performed as well.)2.988 F .488 -(If the \214rst form is used,)5.488 F F1(pushd)2.988 E F0 1.039 -(returns 0 unless the cd to)144 652.8 R F2(dir)3.889 E F0 -.1(fa)4.269 G -3.539(ils. W).1 F 1.039(ith the second form,)-.4 F F1(pushd)3.54 E F0 -1.04(returns 0 unless the directory)3.54 F .847(stack is empty)144 664.8 -R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent directory stack element i\ -s speci\214ed, or the directory change to the)-.15 F(speci\214ed ne)144 -676.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E(ails.)-.1 E F1(pwd)108 -693.6 Q F0([)2.5 E F1(\255LP)A F0(])A .844 +G(urrent w)-2.5 E(orking directory)-.1 E(.)-.65 E .488(If the)144 640.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 652.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 +664.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent directory stack ele\ +ment is speci\214ed, or the directory change to the)-.15 F +(speci\214ed ne)144 676.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E +(ails.)-.1 E F1(pwd)108 693.6 Q F0([)2.5 E F1(\255LP)A F0(])A .845 (Print the absolute pathname of the current w)144 705.6 R .845 -(orking directory)-.1 F 5.845(.T)-.65 G .845 -(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 +(orking directory)-.1 F 5.844(.T)-.65 G .844 +(he pathname printed contains no)-5.844 F .181(symbolic links if the)144 717.6 R F1<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F1 .181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 -(set)2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263 -(enabled. If)144 729.6 R(the)3.263 E F1<ad4c>3.263 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.263 -F .764(The return)5.764 F(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E -(60)198.165 E 0 Cg EP +(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264 +(enabled. If)144 729.6 R(the)3.264 E F1<ad4c>3.264 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.264 +F .763(The return)5.763 F(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 +E(60)187.615 E 0 Cg EP %%Page: 61 61 %%BeginPageSetup BP @@ -7162,103 +7174,103 @@ BP -.35 E 1.36(status is 0 unless an error occurs while reading the name o\ f the current directory or an in)144 84 R -.25(va)-.4 G(lid).25 E (option is supplied.)144 96 Q/F1 10/Times-Bold@0 SF -.18(re)108 112.8 S -(ad).18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1<ad61>-3.816 E/F2 10 -/Times-Italic@0 SF(aname)3.816 E F0 3.816(][)C F1<ad64>-3.816 E F2 -(delim)3.816 E F0 3.816(][)C F1<ad69>-3.816 E F2(te)3.816 E(xt)-.2 E F0 -3.816(][)C F1<ad6e>-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817 -(][)C F1<ad4e>-3.817 E F2(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1 -<ad70>-3.817 E F2(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F1<ad74>-3.817 E -F2(timeout)3.817 E F0 3.817(][)C F1<ad75>-3.817 E F2(fd)3.817 E F0(])A +(ad).18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1<ad61>-3.817 E/F2 10 +/Times-Italic@0 SF(aname)3.817 E F0 3.817(][)C F1<ad64>-3.817 E F2 +(delim)3.817 E F0 3.817(][)C F1<ad69>-3.817 E F2(te)3.817 E(xt)-.2 E F0 +3.817(][)C F1<ad6e>-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816 +(][)C F1<ad4e>-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1 +<ad70>-3.816 E F2(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F1<ad74>-3.816 E +F2(timeout)3.816 E F0 3.816(][)C F1<ad75>-3.816 E F2(fd)3.816 E F0(])A ([)108 124.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 136.8 R F2(fd)3.016 E -F0 .516(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 148.8 Q -F1<ad75>2.539 E F0 .039(option, and the \214rst w)2.539 F .038 -(ord is assigned to the \214rst)-.1 F F2(name)2.538 E F0 2.538(,t).18 G -.038(he second w)-2.538 F .038(ord to the second)-.1 F F2(name)2.538 E +F0 .516(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 148.8 Q +F1<ad75>2.538 E F0 .038(option, and the \214rst w)2.538 F .038 +(ord is assigned to the \214rst)-.1 F F2(name)2.539 E F0 2.539(,t).18 G +.039(he second w)-2.539 F .039(ord to the second)-.1 F F2(name)2.539 E F0(,).18 E .42(and so on, with lefto)144 160.8 R -.15(ve)-.15 G 2.92(rw) .15 G .42(ords and their interv)-3.02 F .42 (ening separators assigned to the last)-.15 F F2(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 E .541(are fe)144 172.8 R .541(wer w) --.25 F .541(ords read from the input stream than names, the remaining n\ -ames are assigned empty)-.1 F -.25(va)144 184.8 S 2.51(lues. The).25 F -.011(characters in)2.511 F/F3 9/Times-Bold@0 SF(IFS)2.511 E F0 .011 +.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 172.8 R .54(wer w)-.25 +F .541(ords read from the input stream than names, the remaining names \ +are assigned empty)-.1 F -.25(va)144 184.8 S 2.511(lues. The).25 F .011 +(characters in)2.511 F/F3 9/Times-Bold@0 SF(IFS)2.511 E F0 .011 (are used to split the line into w)2.261 F 2.511(ords. The)-.1 F .011 -(backslash character \()2.511 F F1(\\)A F0 2.511(\)m)C(ay)-2.511 E 1.891 -(be used to remo)144 196.8 R 2.191 -.15(ve a)-.15 H 2.191 -.15(ny s).15 -H 1.891(pecial meaning for the ne).15 F 1.89 +(backslash character \()2.511 F F1(\\)A F0 2.51(\)m)C(ay)-2.51 E 1.89 +(be used to remo)144 196.8 R 2.19 -.15(ve a)-.15 H 2.19 -.15(ny s).15 H +1.891(pecial meaning for the ne).15 F 1.891 (xt character read and for line continuation.)-.15 F (Options, if supplied, ha)144 208.8 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1<ad61>144 220.8 Q F2(aname)2.5 E F0 1.049 -(The w)180 232.8 R 1.049 +(wing meanings:)-.25 E F1<ad61>144 220.8 Q F2(aname)2.5 E F0 1.05(The w) +180 232.8 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 244.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 -(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5 -E(guments are ignored.)-.18 E F1<ad64>144 256.8 Q F2(delim)2.5 E F0 -(The \214rst character of)180 268.8 Q F2(delim)2.5 E F0 +-.25 E F2(aname)3.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F +F2(aname)180.33 244.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 +-.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0 +(ar)2.5 E(guments are ignored.)-.18 E F1<ad64>144 256.8 Q F2(delim)2.5 E +F0(The \214rst character of)180 268.8 Q F2(delim)2.5 E F0 (is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1<ad65>144 280.8 Q F0 .373 +F1<ad65>144 280.8 Q F0 .372 (If the standard input is coming from a terminal,)25.86 F F1 -.18(re) -2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo)2.622 E --.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E .218 +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 292.8 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 304.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E -F1<ad69>144 316.8 Q F2(te)2.5 E(xt)-.2 E F0(If)10.78 E F1 -.18(re)2.716 -G(adline).18 E F0 .216(is being used to read the line,)2.716 F F2(te) +F1<ad69>144 316.8 Q F2(te)2.5 E(xt)-.2 E F0(If)10.78 E 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 -.215(fer before edit-)-.25 F(ing be)180 328.8 Q(gins.)-.15 E F1<ad6e>144 +.216(fer before edit-)-.25 F(ing be)180 328.8 Q(gins.)-.15 E F1<ad6e>144 340.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 352.8 S(ad).18 E -F0 1.394(returns after reading)3.894 F F2(nc)3.894 E(har)-.15 E(s)-.1 E -F0 1.395(characters rather than w)3.894 F 1.395 +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 364.8 Q (ut honor a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 E (s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 <ad4e>144 376.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 388.8 S -(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F2(nc) +(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.269(aiting for a complete)-.1 F .274 +1.27(aiting for a complete)-.1 F .275 (line of input, unless EOF is encountered or)180 400.8 R F1 -.18(re) -2.775 G(ad).18 E F0 .275(times out.)2.775 F .275 -(Delimiter characters encoun-)5.275 F 1.003 +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 412.8 -R F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc) -3.502 E(har)-.15 E(s)-.1 E F0(characters are read.)180 424.8 Q F1<ad70> -144 436.8 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)180 448.8 Q F2(pr)3.66 E -(ompt)-.45 E F0 1.161(on standard error)3.66 F 3.661(,w)-.4 G 1.161 +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(characters are read.)180 424.8 Q F1<ad70> +144 436.8 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)180 448.8 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 460.8 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F (prompt is displayed only if input is coming from a terminal.)2.5 E F1 -<ad72>144 472.8 Q F0 .544(Backslash does not act as an escape character) -25.86 F 5.543(.T)-.55 G .543(he backslash is considered to be part of) +<ad72>144 472.8 Q F0 .543(Backslash does not act as an escape character) +25.86 F 5.543(.T)-.55 G .544(he backslash is considered to be part of) -5.543 F(the line.)180 484.8 Q(In particular)5 E 2.5(,ab)-.4 G (ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.) -.25 E F1<ad73>144 496.8 Q F0(Silent mode.)26.41 E (If input is coming from a terminal, characters are not echoed.)5 E F1 -<ad74>144 508.8 Q F2(timeout)2.5 E F0(Cause)180 520.8 Q F1 -.18(re)3.548 -G(ad).18 E F0 1.048(to time out and return f)3.548 F 1.048 +<ad74>144 508.8 Q F2(timeout)2.5 E F0(Cause)180 520.8 Q F1 -.18(re)3.549 +G(ad).18 E F0 1.048(to time out and return f)3.549 F 1.048 (ailure if a complete line of input is not read within)-.1 F F2(timeout) -180 532.8 Q F0(seconds.)3.497 E F2(timeout)5.997 E F0 .997 -(may be a decimal number with a fractional portion follo)3.497 F(wing) +180 532.8 Q F0(seconds.)3.496 E F2(timeout)5.996 E F0 .997 +(may be a decimal number with a fractional portion follo)3.496 F(wing) -.25 E .576(the decimal point.)180 544.8 R .576(This option is only ef) 5.576 F(fecti)-.25 E .876 -.15(ve i)-.25 H(f).15 E F1 -.18(re)3.076 G -(ad).18 E F0 .576(is reading input from a terminal,)3.076 F .142 +(ad).18 E F0 .576(is reading input from a terminal,)3.076 F .141 (pipe, or other special \214le; it has no ef)180 556.8 R .142 -(fect when reading from re)-.25 F .142(gular \214les.)-.15 F(If)5.141 E -F2(timeout)2.641 E F0 .141(is 0,)2.641 F F1 -.18(re)180 568.8 S(ad).18 E -F0 .113(returns success if input is a)2.613 F -.25(va)-.2 G .113 -(ilable on the speci\214ed \214le descriptor).25 F 2.613(,f)-.4 G .114 +(fect when reading from re)-.25 F .142(gular \214les.)-.15 F(If)5.142 E +F2(timeout)2.642 E F0 .142(is 0,)2.642 F F1 -.18(re)180 568.8 S(ad).18 E +F0 .113(returns success if input is a)2.614 F -.25(va)-.2 G .113 +(ilable on the speci\214ed \214le descriptor).25 F 2.613(,f)-.4 G .113 (ailure otherwise.)-2.713 F(The e)180 580.8 Q (xit status is greater than 128 if the timeout is e)-.15 E(xceeded.)-.15 E F1<ad75>144 592.8 Q F2(fd)2.5 E F0(Read input from \214le descriptor) -14.46 E F2(fd)2.5 E F0(.)A .192(If no)144 609.6 R F2(names)3.052 E F0 -.192(are supplied, the line read is assigned to the v)2.962 F(ariable) --.25 E F3(REPL)2.691 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .191 -(The return code is zero,)4.691 F 1.343 -(unless end-of-\214le is encountered,)144 621.6 R F1 -.18(re)3.843 G(ad) +14.46 E F2(fd)2.5 E F0(.)A .191(If no)144 609.6 R F2(names)3.051 E F0 +.191(are supplied, the line read is assigned to the v)2.961 F(ariable) +-.25 E F3(REPL)2.692 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .192 +(The return code is zero,)4.692 F 1.344 +(unless end-of-\214le is encountered,)144 621.6 R F1 -.18(re)3.844 G(ad) .18 E F0 1.343 -(times out \(in which case the return code is greater than)3.843 F +(times out \(in which case the return code is greater than)3.844 F (128\), or an in)144 633.6 Q -.25(va)-.4 G (lid \214le descriptor is supplied as the ar).25 E(gument to)-.18 E F1 <ad75>2.5 E F0(.)A F1 -.18(re)108 650.4 S(adonly).18 E F0([)2.5 E F1 @@ -7266,133 +7278,134 @@ E F1<ad75>144 592.8 Q F2(fd)2.5 E F0(Read input from \214le descriptor) F0 2.5(].)C(..])-2.5 E .77(The gi)144 662.4 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 674.4 R -1.096(If the)6.096 F F1<ad66>3.596 E F0 1.097 -(option is supplied, the functions corresponding to the)3.596 F F2 -(names)3.597 E F0 1.097(are so)3.597 F(mark)144 686.4 Q 3.334(ed. The) +(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 674.4 R +1.097(If the)6.097 F F1<ad66>3.597 E F0 1.097 +(option is supplied, the functions corresponding to the)3.597 F F2 +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 686.4 Q 3.334(ed. The) -.1 F F1<ad61>3.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) -3.334 F F1<ad41>3.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .537(ables to associati)144 698.4 R .837 -.15(ve a)-.25 H 3.037 +-.25 E .538(ables to associati)144 698.4 R .838 -.15(ve a)-.25 H 3.038 (rrays. If).15 F(no)3.038 E F2(name)3.398 E F0(ar)3.218 E .538 (guments are gi)-.18 F -.15(ve)-.25 G .538(n, or if the).15 F F1<ad70> -3.038 E F0 .538(option is supplied, a list)3.038 F .081 -(of all readonly names is printed.)144 710.4 R(The)5.081 E F1<ad70>2.581 -E F0 .08(option causes output to be displayed in a format that may)2.581 -F 1.176(be reused as input.)144 722.4 R 1.176(If a v)6.176 F 1.176 +3.038 E F0 .537(option is supplied, a list)3.038 F .08 +(of all readonly names is printed.)144 710.4 R(The)5.08 E F1<ad70>2.58 E +F0 .081(option causes output to be displayed in a format that may)2.58 F +1.177(be reused as input.)144 722.4 R 1.177(If a v)6.177 F 1.176 (ariable name is follo)-.25 F 1.176(wed by =)-.25 F F2(wor)A(d)-.37 E F0 -3.676(,t)C 1.176(he v)-3.676 F 1.177(alue of the v)-.25 F 1.177 -(ariable is set to)-.25 F(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E -(61)198.165 E 0 Cg EP +3.676(,t)C 1.176(he v)-3.676 F 1.176(alue of the v)-.25 F 1.176 +(ariable is set to)-.25 F(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 +E(61)187.615 E 0 Cg EP %%Page: 62 62 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Italic@0 SF(wor)144 84 Q(d)-.37 E F0 6.206(.T)C 1.206 -(he return status is 0 unless an in)-6.206 F -.25(va)-.4 G 1.205 -(lid option is encountered, one of the).25 F F1(names)4.065 E F0 1.205 -(is not a)3.975 F -.25(va)144 96 S(lid shell v).25 E(ariable name, or) +-.35 E/F1 10/Times-Italic@0 SF(wor)144 84 Q(d)-.37 E F0 6.205(.T)C 1.205 +(he return status is 0 unless an in)-6.205 F -.25(va)-.4 G 1.206 +(lid option is encountered, one of the).25 F F1(names)4.066 E F0 1.206 +(is not a)3.976 F -.25(va)144 96 S(lid shell v).25 E(ariable name, or) -.25 E/F2 10/Times-Bold@0 SF<ad66>2.5 E F0(is supplied with a)2.5 E F1 (name)2.86 E F0(that is not a function.)2.68 E F2 -.18(re)108 112.8 S -(tur).18 E(n)-.15 E F0([)2.5 E F1(n)A F0(])A .586 +(tur).18 E(n)-.15 E F0([)2.5 E F1(n)A F0(])A .587 (Causes a function to e)144 124.8 R .587(xit with the return v)-.15 F .587(alue speci\214ed by)-.25 F F1(n)3.087 E F0 5.587(.I).24 G(f)-5.587 -E F1(n)3.447 E F0 .587(is omitted, the return status is)3.327 F 1.335 +E F1(n)3.447 E F0 .586(is omitted, the return status is)3.327 F 1.335 (that of the last command e)144 136.8 R -.15(xe)-.15 G 1.335 (cuted in the function body).15 F 6.335(.I)-.65 G 3.835(fu)-6.335 G 1.335(sed outside a function, b)-3.835 F 1.335(ut during)-.2 F -.15(exe) 144 148.8 S .794(cution of a script by the).15 F F2(.)3.294 E F0(\() 5.794 E F2(sour)A(ce)-.18 E F0 3.294(\)c)C .794 -(ommand, it causes the shell to stop e)-3.294 F -.15(xe)-.15 G .795 -(cuting that script).15 F .246(and return either)144 160.8 R F1(n)3.106 -E F0 .246(or the e)2.986 F .246(xit status of the last command e)-.15 F --.15(xe)-.15 G .246(cuted within the script as the e).15 F .245 -(xit sta-)-.15 F .081(tus of the script.)144 172.8 R .082 +(ommand, it causes the shell to stop e)-3.294 F -.15(xe)-.15 G .794 +(cuting that script).15 F .245(and return either)144 160.8 R F1(n)3.105 +E F0 .246(or the e)2.985 F .246(xit status of the last command e)-.15 F +-.15(xe)-.15 G .246(cuted within the script as the e).15 F .246 +(xit sta-)-.15 F .082(tus of the script.)144 172.8 R .082 (If used outside a function and not during e)5.082 F -.15(xe)-.15 G .082 -(cution of a script by).15 F F2(.)2.582 E F0 2.582(,t).833 G .082 -(he return sta-)-2.582 F 2.306(tus is f)144 184.8 R 4.806(alse. An)-.1 F -4.806(yc)-.15 G 2.305(ommand associated with the)-4.806 F F2(RETURN) -4.805 E F0 2.305(trap is e)4.805 F -.15(xe)-.15 G 2.305(cuted before e) +(cution of a script by).15 F F2(.)2.582 E F0 2.581(,t).833 G .081 +(he return sta-)-2.581 F 2.305(tus is f)144 184.8 R 4.805(alse. An)-.1 F +4.805(yc)-.15 G 2.305(ommand associated with the)-4.805 F F2(RETURN) +4.805 E F0 2.306(trap is e)4.806 F -.15(xe)-.15 G 2.306(cuted before e) .15 F -.15(xe)-.15 G(cution).15 E(resumes after the function or script.) 144 196.8 Q F2(set)108 213.6 Q F0([)2.5 E F2 -(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F2<ad6f>-2.5 E F1(option)2.5 -E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0(...])2.5 E F2(set)108 225.6 Q F0 -([)2.5 E F2(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F2(+o)-2.5 E F1(option) -2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 237.6 S -.835(thout options, the name and v).4 F .835(alue of each shell v)-.25 F -.836(ariable are displayed in a format that can be)-.25 F .784 +(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F2<ad6f>-2.5 E F1 +(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0(...])2.5 E F2 +(set)108 225.6 Q F0([)2.5 E F2(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F2(+o) +-2.5 E F1(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0 +(...])2.5 E -.4(Wi)144 237.6 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 249.6 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 -(riables cannot be).25 F 2.946(reset. In)144 261.6 R F1 .447(posix mode) -2.946 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 +(riables cannot be).25 F 2.947(reset. In)144 261.6 R F1 .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.531 -(locale. When)144 273.6 R 1.031(options are speci\214ed, the)3.531 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) --.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623 -(after option processing are treated as v)144 285.6 R 1.624 +(The output is sorted according to the current)5.447 F 3.53 +(locale. When)144 273.6 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 285.6 R 1.623 (alues for the positional parameters and are assigned, in)-.25 F(order) 144 297.6 Q 2.5(,t)-.4 G(o)-2.5 E F2($1)2.5 E F0(,)A F2($2)2.5 E F0(,)A F2 2.5(... $)2.5 F F1(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 F2<ad61>144 309.6 Q -F0 .54(Automatically mark v)29.3 F .539 -(ariables and functions which are modi\214ed or created for e)-.25 F -.539(xport to)-.15 F(the en)184 321.6 Q -(vironment of subsequent commands.)-.4 E F2<ad62>144 333.6 Q F0 .131 +F0 .539(Automatically mark v)29.3 F .539 +(ariables and functions which are modi\214ed or created for e)-.25 F .54 +(xport to)-.15 F(the en)184 321.6 Q(vironment of subsequent commands.) +-.4 E F2<ad62>144 333.6 Q F0 .132 (Report the status of terminated background jobs immediately)28.74 F -2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E +2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E (primary prompt.)184 345.6 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F2<ad65>144 357.6 Q F0 -.511(Exit immediately if a)29.86 F F1(pipeline)3.011 E F0 .511 -(\(which may consist of a single)3.011 F F1 .51(simple command)3.01 F F0 -3.01(\), a)B F1(sub-)3.01 E(shell)184 369.6 Q F0 .872 -(command enclosed in parentheses, or one of the commands e)3.372 F -.15 +-.25 H(nly when job control is enabled.).15 E F2<ad65>144 357.6 Q F0 .51 +(Exit immediately if a)29.86 F F1(pipeline)3.01 E F0 .511 +(\(which may consist of a single)3.011 F F1 .511(simple command)3.011 F +F0 3.011(\), a)B F1(sub-)3.011 E(shell)184 369.6 Q F0 .872 +(command enclosed in parentheses, or one of the commands e)3.373 F -.15 (xe)-.15 G .872(cuted as part of a).15 F .399 (command list enclosed by braces \(see)184 381.6 R/F3 9/Times-Bold@0 SF .399(SHELL GRAMMAR)2.899 F F0(abo)2.649 E -.15(ve)-.15 G 2.899(\)e).15 G -.399(xits with a non-zero)-3.049 F 3.968(status. The)184 393.6 R 1.468 -(shell does not e)3.968 F 1.468(xit if the command that f)-.15 F 1.468 -(ails is part of the command list)-.1 F .57(immediately follo)184 405.6 -R .57(wing a)-.25 F F2(while)3.07 E F0(or)3.07 E F2(until)3.07 E F0 -.1 -(ke)3.069 G(yw)-.05 E .569(ord, part of the test follo)-.1 F .569 -(wing the)-.25 F F2(if)3.069 E F0(or)3.069 E F2(elif)3.069 E F0(reserv) -184 417.6 Q .544(ed w)-.15 F .544(ords, part of an)-.1 F 3.044(yc)-.15 G +.399(xits with a non-zero)-3.049 F 3.969(status. The)184 393.6 R 1.468 +(shell does not e)3.969 F 1.468(xit if the command that f)-.15 F 1.468 +(ails is part of the command list)-.1 F .569(immediately follo)184 405.6 +R .569(wing a)-.25 F F2(while)3.069 E F0(or)3.069 E F2(until)3.069 E F0 +-.1(ke)3.069 G(yw)-.05 E .569(ord, part of the test follo)-.1 F .57 +(wing the)-.25 F F2(if)3.07 E F0(or)3.07 E F2(elif)3.07 E F0(reserv)184 +417.6 Q .544(ed w)-.15 F .544(ords, part of an)-.1 F 3.044(yc)-.15 G .544(ommand e)-3.044 F -.15(xe)-.15 G .544(cuted in a).15 F F2(&&)3.044 E F0(or)3.044 E/F4 10/Symbol SF<efef>3.044 E F0 .544(list e)3.044 F .544 -(xcept the command)-.15 F(follo)184 429.6 Q 1.231(wing the \214nal)-.25 -F F2(&&)3.731 E F0(or)3.731 E F4<efef>3.731 E F0 3.731(,a)C 1.531 -.15 -(ny c)-3.731 H 1.231(ommand in a pipeline b).15 F 1.23 -(ut the last, or if the com-)-.2 F(mand')184 441.6 Q 3.19(sr)-.55 G .69 -(eturn v)-3.19 F .69(alue is being in)-.25 F -.15(ve)-.4 G .69 +(xcept the command)-.15 F(follo)184 429.6 Q 1.23(wing the \214nal)-.25 F +F2(&&)3.73 E F0(or)3.73 E F4<efef>3.73 E F0 3.73(,a)C 1.53 -.15(ny c) +-3.73 H 1.231(ommand in a pipeline b).15 F 1.231 +(ut the last, or if the com-)-.2 F(mand')184 441.6 Q 3.191(sr)-.55 G +.691(eturn v)-3.191 F .691(alue is being in)-.25 F -.15(ve)-.4 G .691 (rted with).15 F F2(!)3.191 E F0 5.691(.A)C .691(trap on)-2.5 F F2(ERR) -3.191 E F0 3.191(,i)C 3.191(fs)-3.191 G .691(et, is e)-3.191 F -.15(xe) --.15 G .691(cuted before).15 F .687(the shell e)184 453.6 R 3.186 -(xits. This)-.15 F .686(option applies to the shell en)3.186 F .686 +3.19 E F0 3.19(,i)C 3.19(fs)-3.19 G .69(et, is e)-3.19 F -.15(xe)-.15 G +.69(cuted before).15 F .686(the shell e)184 453.6 R 3.186(xits. This) +-.15 F .686(option applies to the shell en)3.186 F .686 (vironment and each subshell en)-.4 F(viron-)-.4 E .068 (ment separately \(see)184 465.6 R F3 .068(COMMAND EXECUTION ENVIR)2.568 F(ONMENT)-.27 E F0(abo)2.318 E -.15(ve)-.15 G .068(\), and may cause).15 F(subshells to e)184 477.6 Q(xit before e)-.15 E -.15(xe)-.15 G (cuting all the commands in the subshell.).15 E F2<ad66>144 489.6 Q F0 (Disable pathname e)30.97 E(xpansion.)-.15 E F2<ad68>144 501.6 Q F0 -2.239(Remember the location of commands as the)28.74 F 4.738(ya)-.15 G -2.238(re look)-4.738 F 2.238(ed up for e)-.1 F -.15(xe)-.15 G 4.738 -(cution. This).15 F(is)4.738 E(enabled by def)184 513.6 Q(ault.)-.1 E F2 -<ad6b>144 525.6 Q F0 .513(All ar)28.74 F .514 +2.238(Remember the location of commands as the)28.74 F 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 513.6 Q(ault.)-.1 E F2 +<ad6b>144 525.6 Q F0 .514(All ar)28.74 F .514 (guments in the form of assignment statements are placed in the en)-.18 -F .514(vironment for a)-.4 F +F .513(vironment for a)-.4 F (command, not just those that precede the command name.)184 537.6 Q F2 -<ad6d>144 549.6 Q F0 .149(Monitor mode.)25.97 F .149 -(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F -.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .636 +<ad6d>144 549.6 Q F0 .148(Monitor mode.)25.97 F .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 .637 (on systems that support it \(see)184 561.6 R F3 .636(JOB CONTR)3.136 F -(OL)-.27 E F0(abo)2.886 E -.15(ve)-.15 G 3.136(\). Background).15 F .637 -(processes run in a)3.136 F .642 -(separate process group and a line containing their e)184 573.6 R .641 +(OL)-.27 E F0(abo)2.886 E -.15(ve)-.15 G 3.136(\). Background).15 F .636 +(processes run in a)3.136 F .641 +(separate process group and a line containing their e)184 573.6 R .642 (xit status is printed upon their com-)-.15 F(pletion.)184 585.6 Q F2 -<ad6e>144 597.6 Q F0 .652(Read commands b)28.74 F .652(ut do not e)-.2 F --.15(xe)-.15 G .652(cute them.).15 F .653 -(This may be used to check a shell script for)5.652 F(syntax errors.)184 +<ad6e>144 597.6 Q F0 .653(Read commands b)28.74 F .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 609.6 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E F2<ad6f>144 621.6 Q F1(option\255name)2.5 E F0(The)184 633.6 Q F1 (option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F2 @@ -7405,8 +7418,8 @@ E F2<ad6f>144 621.6 Q F1(option\255name)2.5 E F0(The)184 633.6 Q F1 .95(nless the shell is started with the)-3.45 F F2(\255\255noediting) 3.45 E F0 2.5(option. This)224 717.6 R(also af)2.5 E (fects the editing interf)-.25 E(ace used for)-.1 E F2 -.18(re)2.5 G -(ad \255e).18 E F0(.)A(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(62) -198.165 E 0 Cg EP +(ad \255e).18 E F0(.)A(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E +(62)187.615 E 0 Cg EP %%Page: 63 63 %%BeginPageSetup BP @@ -7417,14 +7430,14 @@ F1<ad65>2.5 E F0(.)A F1(errtrace)184 96 Q F0(Same as)5.03 E F1<ad45>2.5 E F0(.)A F1(functrace)184 108 Q F0(Same as)224 120 Q F1<ad54>2.5 E F0(.) A F1(hashall)184 132 Q F0(Same as)9.43 E F1<ad68>2.5 E F0(.)A F1 (histexpand)184 144 Q F0(Same as)224 156 Q F1<ad48>2.5 E F0(.)A F1 -(history)184 168 Q F0 .587(Enable command history)10 F 3.087(,a)-.65 G +(history)184 168 Q F0 .586(Enable command history)10 F 3.087(,a)-.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder) .15 E/F2 9/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9 /Times-Roman@0 SF(.)A F0 .587(This option is)5.087 F(on by def)224 180 Q (ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -192 Q(eeof)-.18 E F0 1.656(The ef)224 204 R 1.656 +192 Q(eeof)-.18 E F0 1.657(The ef)224 204 R 1.657 (fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10) -4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 +4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224 216 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 228 S(yw).1 E(ord)-.1 E F0(Same as)224 240 Q F1 <ad6b>2.5 E F0(.)A F1(monitor)184 252 Q F0(Same as)5.56 E F1<ad6d>2.5 E @@ -7435,56 +7448,56 @@ F0(.)A F1(noexec)184 288 Q F0(Same as)11.12 E F1<ad6e>2.5 E F0(.)A F1 F1<ad62>2.5 E F0(.)A F1(nounset)184 336 Q F0(Same as)6.66 E F1<ad75>2.5 E F0(.)A F1(onecmd)184 348 Q F0(Same as)6.67 E F1<ad74>2.5 E F0(.)A F1 (ph)184 360 Q(ysical)-.15 E F0(Same as)5.14 E F1<ad50>2.5 E F0(.)A F1 -(pipefail)184 372 Q F0 1.03(If set, the return v)7.77 F 1.029 -(alue of a pipeline is the v)-.25 F 1.029 -(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 384 R +(pipefail)184 372 Q F0 1.029(If set, the return v)7.77 F 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 384 R 1.136 (xit with a non-zero status, or zero if all commands in the pipeline) -.15 F -.15(ex)224 396 S(it successfully).15 E 5(.T)-.65 G (his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 408 Q F0 -2.091(Change the beha)17.77 F 2.091(vior of)-.2 F F1(bash)4.591 E F0 +2.09(Change the beha)17.77 F 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(POSIX standard to match the standard \()224 420 Q /F5 10/Times-Italic@0 SF(posix mode)A F0(\).)A F1(pri)184 432 Q(vileged) -.1 E F0(Same as)224 444 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 456 S (rbose).1 E F0(Same as)7.33 E F1<ad76>2.5 E F0(.)A F1(vi)184 468 Q F0 -1.465(Use a vi-style command line editing interf)32.22 F 3.966 -(ace. This)-.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F +1.466(Use a vi-style command line editing interf)32.22 F 3.965 +(ace. This)-.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F (interf)224 480 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0 (.)A F1(xtrace)184 492 Q F0(Same as)13.35 E F1<ad78>2.5 E F0(.)A(If)184 -510 Q F1<ad6f>3.053 E F0 .553(is supplied with no)3.053 F F5 -(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 -(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 -522 Q F0 1.071(is supplied with no)3.571 F F5(option\255name)3.571 E F0 -3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072 -(commands to recreate the current)3.572 F +510 Q F1<ad6f>3.052 E F0 .552(is supplied with no)3.052 F F5 +(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553 +(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184 +522 Q F0 1.072(is supplied with no)3.572 F F5(option\255name)3.572 E F0 +3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071 +(commands to recreate the current)3.571 F (option settings is displayed on the standard output.)184 534 Q F1<ad70> -144 546 Q F0 -.45(Tu)28.74 G 1.072(rn on).45 F F5(privile)4.822 E -.1 -(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F -F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.071 -(\214les are not pro-)3.322 F 1.5 -(cessed, shell functions are not inherited from the en)184 558 R 1.501 -(vironment, and the)-.4 F F2(SHELLOPTS)4.001 E F3(,)A F2 -.27(BA)184 570 -S(SHOPTS).27 E F3(,)A F2(CDP)2.775 E -.855(AT)-.666 G(H).855 E F3(,)A F0 -(and)2.775 E F2(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G .524 -(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F -(vironment,)-.4 E .379(are ignored.)184 582 R .379 -(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 -(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 +144 546 Q F0 -.45(Tu)28.74 G 1.071(rn on).45 F F5(privile)4.821 E -.1 +(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F +F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.072 +(\214les are not pro-)3.322 F 1.501 +(cessed, shell functions are not inherited from the en)184 558 R 1.5 +(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 570 S +(SHOPTS).27 E F3(,)A F2(CDP)2.774 E -.855(AT)-.666 G(H).855 E F3(,)A F0 +(and)2.774 E F2(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524 +(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F +(vironment,)-.4 E .38(are ignored.)184 582 R .38 +(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) +-.25 H .379(ser \(group\) id not equal to the real).15 F .461 (user \(group\) id, and the)184 594 R F1<ad70>2.961 E F0 .461 -(option is not supplied, these actions are tak)2.961 F .461 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 606 Q .694 -.15(ve u)-.25 H .394 +(option is not supplied, these actions are tak)2.961 F .462 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 606 Q .695 -.15(ve u)-.25 H .395 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1<ad70> -2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .387(user id is not reset.)184 618 R -.45(Tu)5.387 G -.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 -F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F +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 618 R -.45(Tu)5.386 G +.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 +F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F (set to the real user and group ids.)184 630 Q F1<ad74>144 642 Q F0 (Exit after reading and e)30.97 E -.15(xe)-.15 G(cuting one command.).15 -E F1<ad75>144 654 Q F0 -.35(Tr)28.74 G .043(eat unset v).35 F .044(aria\ +E F1<ad75>144 654 Q F0 -.35(Tr)28.74 G .044(eat unset v).35 F .044(aria\ bles and parameters other than the special parameters "@" and "*" as an) --.25 F .183(error when performing parameter e)184 666 R 2.683 -(xpansion. If)-.15 F -.15(ex)2.683 G .182 +-.25 F .182(error when performing parameter e)184 666 R 2.682 +(xpansion. If)-.15 F -.15(ex)2.682 G .183 (pansion is attempted on an unset v).15 F(ari-)-.25 E .746 (able or parameter)184 678 R 3.246(,t)-.4 G .746 (he shell prints an error message, and, if not interacti)-3.246 F -.15 @@ -7493,11 +7506,11 @@ bles and parameters other than the special parameters "@" and "*" as an) -.15 G(re read.)-2.5 E F1<ad78>144 714 Q F0 .315(After e)29.3 F .315 (xpanding each)-.15 F F5 .315(simple command)2.815 F F0(,)A F1 -.25(fo) 2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E -F1(select)2.815 E F0(command,)2.815 E 3.259(or arithmetic)184 726 R F1 --.25(fo)5.759 G(r).25 E F0 3.26(command, display the e)5.759 F 3.26 -(xpanded v)-.15 F 3.26(alue of)-.25 F F2(PS4)5.76 E F3(,)A F0(follo)5.51 -E 3.26(wed by the)-.25 F(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E -(63)198.165 E 0 Cg EP +F1(select)2.815 E F0(command,)2.815 E 3.26(or arithmetic)184 726 R F1 +-.25(fo)5.76 G(r).25 E F0 3.26(command, display the e)5.76 F 3.26 +(xpanded v)-.15 F 3.26(alue of)-.25 F F2(PS4)5.76 E F3(,)A F0(follo) +5.509 E 3.259(wed by the)-.25 F(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(63)187.615 E 0 Cg EP %%Page: 64 64 %%BeginPageSetup BP @@ -7505,32 +7518,32 @@ BP /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) -.35 E(command and its e)184 84 Q(xpanded ar)-.15 E (guments or associated w)-.18 E(ord list.)-.1 E/F1 10/Times-Bold@0 SF -<ad42>144 96 Q F0 2.579(The shell performs brace e)27.63 F 2.578 +<ad42>144 96 Q F0 2.578(The shell performs brace e)27.63 F 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 108 Q -(ault.)-.1 E F1<ad43>144 120 Q F0 .213(If set,)27.08 F F1(bash)2.713 E -F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 +-.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 108 Q +(ault.)-.1 E F1<ad43>144 120 Q F0 .214(If set,)27.08 F 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.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F -3.054(tors. This)184 132 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F +3.053(tors. This)184 132 R .553(may be o)3.053 F -.15(ve)-.15 G .553 (rridden when creating output \214les by using the redirection opera-) .15 F(tor)184 144 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -<ad45>144 156 Q F0 .103(If set, an)27.63 F 2.603(yt)-.15 G .103(rap on) --2.603 F F1(ERR)2.603 E F0 .104 -(is inherited by shell functions, command substitutions, and com-)2.603 -F .839(mands e)184 168 R -.15(xe)-.15 G .839(cuted in a subshell en).15 -F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838 -(trap is normally not inherited in)3.338 F(such cases.)184 180 Q F1 -<ad48>144 192 Q F0(Enable)26.52 E F1(!)3.031 E F0 .531 -(style history substitution.)5.531 F .531(This option is on by def)5.531 -F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 204 Q -.15 -(ve)-.25 G(.).15 E F1<ad50>144 216 Q F0 1.165 +<ad45>144 156 Q F0 .104(If set, an)27.63 F 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 168 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 +(trap is normally not inherited in)3.339 F(such cases.)184 180 Q F1 +<ad48>144 192 Q F0(Enable)26.52 E 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 204 Q -.15 +(ve)-.25 G(.).15 E F1<ad50>144 216 Q F0 1.164 (If set, the shell does not follo)28.19 F 3.664(ws)-.25 G 1.164 -(ymbolic links when e)-3.664 F -.15(xe)-.15 G 1.164 -(cuting commands such as).15 F F1(cd)3.664 E F0 2.821 +(ymbolic links when e)-3.664 F -.15(xe)-.15 G 1.165 +(cuting commands such as).15 F F1(cd)3.665 E F0 2.822 (that change the current w)184 228 R 2.822(orking directory)-.1 F 7.822 -(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822 -(ysical directory structure)-.05 F 2.686(instead. By)184 240 R(def)2.686 +(.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 240 R(def)2.685 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (ws the logical chain of directories when performing com-)-.25 F (mands which change the current directory)184 252 Q(.)-.65 E F1<ad54>144 @@ -7541,42 +7554,42 @@ E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (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 288 Q F0 (traps are normally not inherited in such cases.)2.5 E F1<adad>144 300 Q -F0 .4(If no ar)28.6 F .401(guments follo)-.18 F 2.901(wt)-.25 G .401 +F0 .401(If no ar)28.6 F .401(guments follo)-.18 F 2.901(wt)-.25 G .401 (his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.401 E(the positional parameters are set to the)184 312 Q -/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5 -(ni).15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1<ad> -2.5 E F0(.)A F1<ad>144 324 Q F0 1.945 +(Otherwise,)5.4 E(the positional parameters are set to the)184 312 Q/F2 +10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni) +.15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>2.5 E +F0(.)A F1<ad>144 324 Q F0 1.944 (Signal the end of options, cause all remaining)34.3 F F2(ar)4.444 E(g) --.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G 1.944 -(ssigned to the positional)-4.444 F 3.445(parameters. The)184 336 R F1 -<ad78>3.445 E F0(and)3.445 E F1<ad76>3.445 E F0 .945 -(options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no) -3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B +-.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 336 R F1 +<ad78>3.446 E F0(and)3.446 E F1<ad76>3.446 E F0 .945 +(options are turned of)3.446 F 3.445(f. If)-.25 F .945(there are no) +3.445 F F2(ar)3.445 E(g)-.37 E F0 .945(s, the positional)B (parameters remain unchanged.)184 348 Q .425(The options are of)144 364.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 -(Using + rather than \255 causes these options)5.425 F .177 -(to be turned of)144 376.8 R 2.677(f. The)-.25 F .178 +(Using + rather than \255 causes these options)5.425 F .178 +(to be turned of)144 376.8 R 2.678(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) --.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066 +-.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 388.8 R F1<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 -(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F +(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F (is encountered.)144 400.8 Q F1(shift)108 417.6 Q F0([)2.5 E F2(n)A F0 -(])A .428(The positional parameters from)144 429.6 R F2(n)2.928 E F0 -.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G -.429(rameters represented by the num-).15 F(bers)144 441.6 Q F1($#)2.583 -E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0<ad>A F2(n)A F0 .083 -(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) --.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) -.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 +(])A .429(The positional parameters from)144 429.6 R F2(n)2.929 E F0 +.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G +.428(rameters represented by the num-).15 F(bers)144 441.6 Q F1($#)2.582 +E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0<ad>A F2(n)A F0 .082 +(+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga) +-.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to) +.15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06 (is 0, no parameters are changed.)144 453.6 R(If)5.06 E F2(n)2.92 E F0 .06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F (If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 -(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 465.6 R -.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 -.143(is greater than)2.883 F F1($#)2.643 E F0 +(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 465.6 R +.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 +.144(is greater than)2.884 F F1($#)2.644 E F0 (or less than zero; otherwise 0.)144 477.6 Q F1(shopt)108 494.4 Q F0([) 2.5 E F1(\255pqsu)A F0 2.5(][)C F1<ad6f>-2.5 E F0 2.5(][)C F2(optname) -2.5 E F0(...])2.5 E -.8(To)144 506.4 S .222(ggle the v).8 F .222 @@ -7584,143 +7597,143 @@ E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0<ad>A F2(n)A F0 .083 (vior)-.2 E 5.222(.W)-.55 G .222(ith no options, or with the)-5.622 F F1 <ad70>2.722 E F0 .721(option, a list of all settable options is display\ ed, with an indication of whether or not each is set.)144 518.4 R(The) -144 530.4 Q F1<ad70>2.827 E F0 .327(option causes output to be displaye\ -d in a form that may be reused as input.)2.827 F .328(Other options) -5.328 F(ha)144 542.4 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:) +144 530.4 Q F1<ad70>2.828 E F0 .327(option causes output to be displaye\ +d in a form that may be reused as input.)2.828 F .327(Other options) +5.327 F(ha)144 542.4 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:) -.25 E F1<ad73>144 554.4 Q F0(Enable \(set\) each)26.41 E F2(optname)2.5 E F0(.)A F1<ad75>144 566.4 Q F0(Disable \(unset\) each)24.74 E F2 (optname)2.5 E F0(.)A F1<ad71>144 578.4 Q F0 .003(Suppresses normal out\ put \(quiet mode\); the return status indicates whether the)24.74 F F2 -(optname)2.503 E F0(is)2.503 E .255(set or unset.)180 590.4 R .255 -(If multiple)5.255 F F2(optname)2.755 E F0(ar)2.755 E .256 +(optname)2.504 E F0(is)2.504 E .256(set or unset.)180 590.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 F1 -<ad71>2.756 E F0 2.756(,t)C .256(he return status is zero if)-2.756 F +<ad71>2.756 E F0 2.755(,t)C .255(he return status is zero if)-2.755 F (all)180 602.4 Q F2(optnames)2.5 E F0(are enabled; non-zero otherwise.) 2.5 E F1<ad6f>144 614.4 Q F0(Restricts the v)25.3 E(alues of)-.25 E F2 (optname)2.5 E F0(to be those de\214ned for the)2.5 E F1<ad6f>2.5 E F0 -(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .128 -(If either)144 631.2 R F1<ad73>2.628 E F0(or)2.628 E F1<ad75>2.628 E F0 +(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .127 +(If either)144 631.2 R F1<ad73>2.627 E F0(or)2.627 E F1<ad75>2.627 E F0 .127(is used with no)2.627 F F2(optname)2.627 E F0(ar)2.627 E .127 -(guments, the display is limited to those options which)-.18 F 1.023 -(are set or unset, respecti)144 643.2 R -.15(ve)-.25 G(ly).15 E 6.023 -(.U)-.65 G 1.024(nless otherwise noted, the)-6.023 F F1(shopt)3.524 E F0 -1.024(options are disabled \(unset\) by)3.524 F(def)144 655.2 Q(ault.) +(guments, the display is limited to those options which)-.18 F 1.024 +(are set or unset, respecti)144 643.2 R -.15(ve)-.25 G(ly).15 E 6.024 +(.U)-.65 G 1.024(nless otherwise noted, the)-6.024 F F1(shopt)3.523 E F0 +1.023(options are disabled \(unset\) by)3.523 F(def)144 655.2 Q(ault.) -.1 E 1.544(The return status when listing options is zero if all)144 -672 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.) -4.044 F .696 +672 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 684 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell) +144 684 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell) -.25 F(option.)144 696 Q(The list of)144 712.8 Q F1(shopt)2.5 E F0 -(options is:)2.5 E(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(64) -198.165 E 0 Cg EP +(options is:)2.5 E(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(64) +187.615 E 0 Cg EP %%Page: 65 65 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(autocd)144 84 Q F0 .2 +-.35 E/F1 10/Times-Bold@0 SF(autocd)144 84 Q F0 .199 (If set, a command name that is the name of a directory is e)11.11 F --.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E +-.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E (ment to the)184 96 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 108 Q(ars)-.1 E F0 .155(If set, an ar)184 120 R .155 -(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 +F1(cdable_v)144 108 Q(ars)-.1 E F0 .156(If set, an ar)184 120 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 132 Q(ariable whose v)-.25 E (alue is the directory to change to.)-.25 E F1(cdspell)144 144 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a) -10.55 F F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 -(corrected. The)184 156 R 1.487(errors check)3.987 F 1.487 -(ed for are transposed characters, a missing character)-.1 F 3.988(,a) --.4 G(nd)-3.988 E .552(one character too man)184 168 R 4.352 -.65(y. I) +10.55 F F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 156 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 .552(one character too man)184 168 R 4.352 -.65(y. I) -.15 H 3.052(fac).65 G .552 (orrection is found, the corrected \214le name is printed, and)-3.052 F (the command proceeds.)184 180 Q(This option is only used by interacti)5 -E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 192 Q F0 2.079 -(If set,)184 204 R F1(bash)4.579 E F0 2.079 -(checks that a command found in the hash table e)4.579 F 2.08 +E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 192 Q F0 2.08 +(If set,)184 204 R F1(bash)4.58 E F0 2.079 +(checks that a command found in the hash table e)4.58 F 2.079 (xists before trying to)-.15 F -.15(exe)184 216 S(cute it.).15 E (If a hashed command no longer e)5 E (xists, a normal path search is performed.)-.15 E F1(checkjobs)144 228 Q -F0 .449(If set,)184 240 R F1(bash)2.949 E F0 .449 -(lists the status of an)2.949 F 2.949(ys)-.15 G .448 -(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.438(shell. If)184 252 R(an)3.438 E 3.438(yj)-.15 G -.938(obs are running, this causes the e)-3.438 F .938 -(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203 +F0 .448(If set,)184 240 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 252 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 264 R 2.203(ening command \(see)-.15 F /F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 276 Q -.1(wa)-.1 +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 276 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 288 Q F0 .796(If set,)184 -300 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G -.797(ize after each command and, if necessary)-3.296 F 3.297(,u)-.65 G -.797(pdates the)-3.297 F -.25(va)184 312 S(lues of).25 E F2(LINES)2.5 E +(obs are stopped.)-2.5 E F1(checkwinsize)144 288 Q F0 .797(If set,)184 +300 R F1(bash)3.297 E F0 .797(checks the windo)3.297 F 3.297(ws)-.25 G +.796(ize after each command and, if necessary)-3.297 F 3.296(,u)-.65 G +.796(pdates the)-3.296 F -.25(va)184 312 S(lues 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 324 Q F0 1.202(If set,)6.11 F 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 336 Q 5(.T)-.65 G(his allo)-5 E (ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 348 Q -F0 .419(If set,)184 360 R F1(bash)2.919 E F0 .419(changes its beha)2.919 -F .419(vior to that of v)-.2 F .42(ersion 3.1 with respect to quoted ar) --.15 F(guments)-.18 E(to the conditional command')184 372 Q 2.5(s=)-.55 -G 2.5(~o)-2.5 G(perator)-2.5 E(.)-.55 E F1(compat32)144 384 Q F0 1.41 -(If set,)184 396 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 -(string comparison when using the conditional command')184 408 Q 2.5 -(s<a)-.55 G(nd > operators.)-2.5 E F1(compat40)144 420 Q F0 1.409 -(If set,)184 432 R F1(bash)3.909 E F0 1.409(changes its beha)3.909 F +F0 .42(If set,)184 360 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(to the conditional command')184 372 Q(s)-.55 E F1 +(=~)2.5 E F0(operator)2.5 E(.)-.55 E F1(compat32)144 384 Q F0 1.409 +(If set,)184 396 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 1.693 -(string comparison when using the conditional command')184 444 R 4.192 -(s<a)-.55 G 1.692(nd > operators and the)-4.192 F(ef)184 456 Q -(fect of interrupting a command list.)-.25 E F1(compat41)144 468 Q F0 -1.232(@item compat41 If set,)184 480 R F1(bash)3.732 E F0 3.732(,w)C -1.232(hen in posix mode, treats a single quote in a double-)-3.732 F -1.214(quoted parameter e)184 492 R 1.214 -(xpansion as a special character)-.15 F 6.213(.T)-.55 G 1.213 -(he single quotes must match \(an)-6.213 F -2.15 -.25(ev e)184 504 T -2.948(nn).25 G .448(umber\) and the characters between the single quote\ -s are considered quoted.)-2.948 F(This)5.449 E .063(is the beha)184 516 -R .062(vior of posix mode through v)-.2 F .062(ersion 4.1.)-.15 F .062 -(The def)5.062 F .062(ault bash beha)-.1 F .062(vior remains as)-.2 F -(in pre)184 528 Q(vious v)-.25 E(ersions.)-.15 E F1(dirspell)144 540 Q -F0 .858(If set,)7.77 F F1(bash)3.358 E F0 .858 -(attempts spelling correction on directory names during w)3.358 F .859 +(ersion 3.2 with respect to locale-speci\214c)-.15 F +(string comparison when using the conditional command')184 408 Q(s)-.55 +E F1(<)2.5 E F0(and)2.5 E F1(>)2.5 E F0(operators.)2.5 E F1(compat40)144 +420 Q F0 1.41(If set,)184 432 R F1(bash)3.91 E F0 1.41(changes its beha) +3.91 F 1.409(vior to that of v)-.2 F 1.409 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 1.682 +(string comparison when using the conditional command')184 444 R(s)-.55 +E F1(<)4.183 E F0(and)4.183 E F1(>)4.183 E F0 1.683(operators and the) +4.183 F(ef)184 456 Q(fect of interrupting a command list.)-.25 E F1 +(compat41)144 468 Q F0 1.232(@item compat41 If set,)184 480 R F1(bash) +3.732 E F0 3.732(,w)C 1.232 +(hen in posix mode, treats a single quote in a double-)-3.732 F 1.213 +(quoted parameter e)184 492 R 1.213(xpansion as a special character)-.15 +F 6.213(.T)-.55 G 1.214(he single quotes must match \(an)-6.213 F -2.15 +-.25(ev e)184 504 T 2.949(nn).25 G .448(umber\) and the characters betw\ +een the single quotes are considered quoted.)-2.949 F(This)5.448 E .062 +(is the beha)184 516 R .062(vior of posix mode through v)-.2 F .062 +(ersion 4.1.)-.15 F .062(The def)5.062 F .062(ault bash beha)-.1 F .063 +(vior remains as)-.2 F(in pre)184 528 Q(vious v)-.25 E(ersions.)-.15 E +F1(dirspell)144 540 Q F0 .859(If set,)7.77 F F1(bash)3.359 E F0 .858 +(attempts spelling correction on directory names during w)3.359 F .858 (ord completion if)-.1 F (the directory name initially supplied does not e)184 552 Q(xist.)-.15 E F1(dotglob)144 564 Q F0 .165(If set,)7.77 F 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 F1(execfail)144 576 Q F0 1.386 -(If set, a non-interacti)7.79 F 1.686 -.15(ve s)-.25 H 1.386 +(xpansion.)-.15 E F1(execfail)144 576 Q F0 1.387 +(If set, a non-interacti)7.79 F 1.687 -.15(ve s)-.25 H 1.386 (hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15(xe)-.15 G -1.387(cute the \214le speci\214ed as an).15 F(ar)184 588 Q +1.386(cute the \214le speci\214ed as an).15 F(ar)184 588 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 600 Q F0 -.717(If set, aliases are e)184 612 R .717(xpanded as described abo)-.15 -F 1.017 -.15(ve u)-.15 H(nder).15 E F2(ALIASES)3.217 E F3(.)A F0 .716 +.716(If set, aliases are e)184 612 R .717(xpanded as described abo)-.15 +F 1.017 -.15(ve u)-.15 H(nder).15 E F2(ALIASES)3.217 E F3(.)A F0 .717 (This option is enabled)5.217 F(by def)184 624 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(extdeb)144 636 Q(ug)-.2 E F0 (If set, beha)184 648 Q(vior intended for use by deb)-.2 E -(uggers is enabled:)-.2 E F1(1.)184 660 Q F0(The)28.5 E F1<ad46>4.25 E -F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 -G 1.751(iltin displays the source \214le name and line).2 F +(uggers is enabled:)-.2 E F1(1.)184 660 Q F0(The)28.5 E F1<ad46>4.251 E +F0 1.751(option to the)4.251 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu) +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 672 Q (gument.)-.18 E F1(2.)184 684 Q F0 1.667(If the command run by the)28.5 F 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 696 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 708 Q F0 .84 -(If the command run by the)28.5 F 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 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 708 Q F0 .841 +(If the command run by the)28.5 F F1(DEB)3.341 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 (exe)220 720 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 -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(65)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(65)187.615 E 0 Cg EP %%Page: 66 66 %%BeginPageSetup BP @@ -7729,7 +7742,7 @@ BP -.35 E/F1 10/Times-Bold@0 SF(sour)220 84 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), a call to).2 E F1 -.18(re)2.5 G(tur).18 E(n)-.15 E F0 (is simulated.)2.5 E F1(4.)184 96 Q/F2 9/Times-Bold@0 SF -.27(BA)28.5 G -(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(SH_ARGC).27 E F0(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0 .904 (are updated as described in their descriptions)3.154 F(abo)220 108 Q -.15(ve)-.15 G(.).15 E F1(5.)184 120 Q F0 1.359 (Function tracing is enabled:)28.5 F 1.359 @@ -7737,8 +7750,8 @@ BP 132 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F3 10 /Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0(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 144 Q F0 .804(Error tracing is enabled:)28.5 F .805 -(command substitution, shell functions, and subshells)5.804 F(in)220 156 +184 144 Q F0 .805(Error tracing is enabled:)28.5 F .804 +(command substitution, shell functions, and subshells)5.805 F(in)220 156 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3 (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 168 Q F0 .4(If set, the e)8.89 F .4 @@ -7750,48 +7763,48 @@ E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within) -4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G (pansions).15 E(enclosed in double quotes.)184 216 Q (This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 228 Q F0 -1.425(If set, patterns which f)7.77 F 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.424 +1.424(If set, patterns which f)7.77 F 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.425 (xpansion result in an)-.15 F -.15(ex)184 240 S(pansion error).15 E(.) -.55 E F1 -.25(fo)144 252 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 264 R<8c78>-.25 E .936(es speci\214ed by the) +.937(If set, the suf)184 264 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 276 R .32 +-.25 F .936(ords to be ignored)-.1 F .32(when performing w)184 276 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 288 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 -(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 -(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 -F(enabled by def)184 300 Q(ault.)-.1 E F1(globstar)144 312 Q F0 .179 -(If set, the pattern)5 F F1(**)2.679 E F0 .178(used in a pathname e) -2.678 F .178(xpansion conte)-.15 F .178 -(xt will match a \214les and zero or)-.15 F 1.297 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.948 +(pletions. See)184 288 R F2 .448(SHELL V)2.948 F(ARIABLES)-1.215 E F0 +(abo)2.698 E .748 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.947 E/F4 9/Times-Roman@0 SF(.)A F0 .447(This option is)4.947 +F(enabled by def)184 300 Q(ault.)-.1 E F1(globstar)144 312 Q F0 .178 +(If set, the pattern)5 F F1(**)2.678 E F0 .178(used in a pathname e) +2.678 F .178(xpansion conte)-.15 F .179 +(xt will match a \214les and zero or)-.15 F 1.298 (more directories and subdirectories.)184 324 R 1.298 -(If the pattern is follo)6.297 F 1.298(wed by a)-.25 F F1(/)3.798 E F0 -3.798(,o)C 1.298(nly directories)-3.798 F(and subdirectories match.)184 +(If the pattern is follo)6.298 F 1.298(wed by a)-.25 F F1(/)3.797 E F0 +3.797(,o)C 1.297(nly directories)-3.797 F(and subdirectories match.)184 336 Q F1(gnu_errfmt)144 348 Q F0(If set, shell error messages are writt\ en in the standard GNU error message format.)184 360 Q F1(histappend)144 372 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -384 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G +384 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G (ri-).25 E(able when the shell e)184 396 Q(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 408 Q(eedit)-.18 -E F0 .575(If set, and)184 420 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 432 Q F1(histv)144 444 Q(erify)-.1 E F0 .403 +E F0 .576(If set, and)184 420 R F1 -.18(re)3.076 G(adline).18 E F0 .575 +(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 +(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F +(tory substitution.)184 432 Q F1(histv)144 444 Q(erify)-.1 E F0 .402 (If set, and)184 456 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 468 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 480 S -.25(ff).2 G(er).25 E +2.903 F .662(passed to the shell parser)184 468 R 5.662(.I)-.55 G .661 +(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 +G(adline).18 E F0(editing)3.161 E -.2(bu)184 480 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 492 Q F0 1.182(If set, and)184 504 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 -516 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 -(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E -F2(READLINE)3.881 E F0(abo)184 528 Q -.15(ve)-.15 G 2.5(\). This).15 F +(hostcomplete)144 492 Q F0 1.181(If set, and)184 504 R F1 -.18(re)3.681 +G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 +(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 +516 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E +F2(READLINE)3.88 E F0(abo)184 528 Q -.15(ve)-.15 G 2.5(\). This).15 F (is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 540 Q F0(If set,) 184 552 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) @@ -7801,63 +7814,63 @@ F2(READLINE)3.881 E F0(abo)184 528 Q -.15(ve)-.15 G 2.5(\). This).15 F (ord and all remaining characters on)-.1 F .967 (that line to be ignored in an interacti)184 588 R 1.267 -.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 -G 3.467(\). This).15 F .968(option is)3.468 F(enabled by def)184 600 Q -(ault.)-.1 E F1(lastpipe)144 612 Q F0 1.212 +G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 600 Q +(ault.)-.1 E F1(lastpipe)144 612 Q F0 1.211 (If set, and job control is not acti)6.66 F -.15(ve)-.25 G 3.712(,t).15 G 1.212(he shell runs the last command of a pipeline not)-3.712 F -.15 (exe)184 624 S(cuted in the background in the current shell en).15 E -(vironment.)-.4 E F1(lithist)144 636 Q F0 .654(If set, and the)15.55 F -F1(cmdhist)3.154 E F0 .654 +(vironment.)-.4 E F1(lithist)144 636 Q F0 .655(If set, and the)15.55 F +F1(cmdhist)3.155 E F0 .654 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G -3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F +3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F (with embedded ne)184 648 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 (login_shell)144 660 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -672 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve) --.15 G 2.986(\). The).15 F -.25(va)184 684 S(lue may not be changed.).25 -E F1(mailwar)144 696 Q(n)-.15 E F0 .814(If set, and a \214le that)184 -708 R F1(bash)3.314 E F0 .815 -(is checking for mail has been accessed since the last time it)3.314 F +672 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 684 S(lue may not be changed.).25 +E F1(mailwar)144 696 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +708 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 720 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(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(66)198.165 E 0 Cg EP +(2010 September 6)137.625 E(66)187.615 E 0 Cg EP %%Page: 67 67 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(no_empty_cmd_completion)144 84 Q F0 .325 -(If set, and)184 96 R F1 -.18(re)2.825 G(adline).18 E F0 .325 -(is being used,)2.825 F F1(bash)2.824 E F0 .324 +-.35 E/F1 10/Times-Bold@0 SF(no_empty_cmd_completion)144 84 Q F0 .324 +(If set, and)184 96 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 9/Times-Bold@0 SF -.666(PA) -2.824 G(TH)-.189 E F0 .324(for possible)2.574 F +2.825 G(TH)-.189 E F0 .325(for possible)2.575 F (completions when completion is attempted on an empty line.)184 108 Q F1 -(nocaseglob)144 120 Q F0 .436(If set,)184 132 R F1(bash)2.936 E F0 .436 -(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)-.25 -H .437(ashion when performing pathname).05 F -.15(ex)184 144 S +(nocaseglob)144 120 Q F0 .437(If set,)184 132 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 144 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 156 Q F0 1.194(If set,)184 -168 R F1(bash)3.694 E F0 1.194(matches patterns in a case\255insensiti) -3.694 F 1.493 -.15(ve f)-.25 H 1.193(ashion when performing matching).05 +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 156 Q F0 1.193(If set,)184 +168 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(while e)184 180 Q -.15(xe)-.15 G(cuting).15 E F1(case)2.5 E F0(or)2.5 E F1([[)2.5 E F0(conditional commands.)2.5 E F1(nullglob)144 192 Q F0 -.854(If set,)184 204 R F1(bash)3.354 E F0(allo)3.354 E .855 -(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)3.355 G .855 -(thname Expansion).1 F F0(abo)3.355 E -.15(ve)-.15 G 3.355(\)t).15 G(o) --3.355 E -.15(ex)184 216 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E F1(pr)144 228 Q(ogcomp)-.18 E F0 .677 +.855(If set,)184 204 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 216 S(pand to a null string, rather than themselv) +.15 E(es.)-.15 E F1(pr)144 228 Q(ogcomp)-.18 E F0 .676 (If set, the programmable completion f)184 240 R .677(acilities \(see) --.1 F F1(Pr)3.176 E .676(ogrammable Completion)-.18 F F0(abo)3.176 E +-.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 252 Q (This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 264 Q(omptv) --.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 276 R 1.448 -(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 288 S .171(pansion, and quote remo).15 F -.25(va)-.15 +-.18 E(ars)-.1 E F0 1.448(If set, prompt strings under)184 276 R 1.448 +(go parameter e)-.18 F 1.447(xpansion, command substitution, arithmetic) +-.15 F -.15(ex)184 288 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.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E -(This option is enabled by def)184 300 Q(ault.)-.1 E F1 -.18(re)144 312 +-.15 F F2(PR)2.671 E(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 +E(This option is enabled by def)184 300 Q(ault.)-.1 E F1 -.18(re)144 312 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) 184 324 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 336 Q 4.178 @@ -7865,39 +7878,39 @@ S(stricted_shell).18 E F0 1.069 1.678(This is not reset when the startup \214les are)6.678 F -.15(exe) 184 348 S(cuted, allo).15 E(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 360 Q(erbose)-.1 E F0 .501(If set, the)184 372 R F1 -(shift)3.001 E F0 -.2(bu)3.001 G .501 -(iltin prints an error message when the shift count e).2 F .502 +F1(shift_v)144 360 Q(erbose)-.1 E F0 .502(If set, the)184 372 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 384 Q F1(sour) -144 396 Q(cepath)-.18 E F0 .771(If set, the)184 408 R F1(sour)3.271 E -(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v) --3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77 -(to \214nd the directory containing the)3.02 F(\214le supplied as an ar) -184 420 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) --.1 E F1(xpg_echo)144 432 Q F0(If set, the)184 444 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 456 Q F0([)2.5 E F1<ad66>A F0(])A 1.001 -(Suspend the e)144 468 R -.15(xe)-.15 G 1.001 -(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G -F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be) -3.502 F .023(suspended; the)144 480 R F1<ad66>2.523 E F0 .023 -(option can be used to o)2.523 F -.15(ve)-.15 G .022 -(rride this and force the suspension.).15 F .022(The return status is) -5.022 F 2.5(0u)144 492 S(nless the shell is a login shell and)-2.5 E F1 +144 396 Q(cepath)-.18 E F0 .77(If set, the)184 408 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 420 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 432 Q F0 +(If set, the)184 444 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 456 Q F0([)2.5 E F1<ad66>A F0(])A 1.002(Suspend the e)144 468 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 480 R F1<ad66> +2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 +(rride this and force the suspension.).15 F .023(The return status is) +5.023 F 2.5(0u)144 492 S(nless the shell is a login shell and)-2.5 E F1 <ad66>2.5 E F0(is not supplied, or if job control is not enabled.)2.5 E F1(test)108 504 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108 516 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 1.15 (Return a status of 0 or 1 depending on the e)6.77 F -.25(va)-.25 G 1.15 (luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)3.65 G -(pr).2 E F0 6.15(.E).73 G(ach)-6.15 E 1.188 +(pr).2 E F0 6.15(.E).73 G(ach)-6.15 E 1.187 (operator and operand must be a separate ar)144 528 R 3.688 -(gument. Expressions)-.18 F 1.187(are composed of the primaries)3.688 F -1.889(described abo)144 540 R 2.189 -.15(ve u)-.15 H(nder).15 E F2 -(CONDITION)4.389 E 1.889(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A -F1(test)6.389 E F0 1.89(does not accept an)4.389 F 4.39(yo)-.15 G 1.89 -(ptions, nor)-4.39 F(does it accept and ignore an ar)144 552 Q +(gument. Expressions)-.18 F 1.188(are composed of the primaries)3.688 F +1.89(described abo)144 540 R 2.19 -.15(ve u)-.15 H(nder).15 E F2 +(CONDITION)4.39 E 1.89(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A +F1(test)6.39 E F0 1.889(does not accept an)4.389 F 4.389(yo)-.15 G 1.889 +(ptions, nor)-4.389 F(does it accept and ignore an ar)144 552 Q (gument of)-.18 E F1<adad>2.5 E F0(as signifying the end of options.)2.5 -E .786(Expressions may be combined using the follo)144 570 R .785 +E .785(Expressions may be combined using the follo)144 570 R .786 (wing operators, listed in decreasing order of prece-)-.25 F 2.5 (dence. The)144 582 R -.25(eva)2.5 G (luation depends on the number of ar).25 E(guments; see belo)-.18 E -.65 @@ -7917,7 +7930,7 @@ 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 700.8 S -.18(rg)-2.5 G(uments).18 E(The e) 180 712.8 Q(xpression is f)-.15 E(alse.)-.1 E(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(67)198.165 E 0 Cg EP +(2010 September 6)137.625 E(67)187.615 E 0 Cg EP %%Page: 68 68 %%BeginPageSetup BP @@ -7928,38 +7941,38 @@ BP E 2.5(2a)144 108 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)180 120 R .37(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 -F .37(gument is null.)-.18 F .379(If the \214rst ar)180 132 R .38 -(gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180 -144 Q .553(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,)A F0 .552 +F .37(gument is null.)-.18 F .38(If the \214rst ar)180 132 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .679 +-.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 +144 Q .552(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,)A F0 .552 (the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F .552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 156 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 168 S -.18(rg)-2.5 G -(uments).18 E .023(If the second ar)180 180 R .023 +(uments).18 E .024(If the second ar)180 180 R .023 (gument is one of the binary conditional operators listed abo)-.18 F -.324 -.15(ve u)-.15 H(nder).15 E F2(CON-)2.524 E(DITION)180 192 Q 1.478 +.323 -.15(ve u)-.15 H(nder).15 E F2(CON-)2.523 E(DITION)180 192 Q 1.477 (AL EXPRESSIONS)-.18 F F3(,)A F0 1.477(the result of the e)3.727 F 1.477 (xpression is the result of the binary test)-.15 F .513 (using the \214rst and third ar)180 204 R .513(guments as operands.)-.18 -F(The)5.513 E F1<ad61>3.013 E F0(and)3.013 E F1<ad6f>3.013 E F0 .513 +F(The)5.513 E F1<ad61>3.013 E F0(and)3.013 E F1<ad6f>3.013 E F0 .512 (operators are considered)3.013 F .972 (binary operators when there are three ar)180 216 R 3.472(guments. If) -.18 F .972(the \214rst ar)3.472 F .972(gument is)-.18 F F1(!)3.472 E F0 -3.472(,t)C .972(he v)-3.472 F .972(alue is)-.25 F .883(the ne)180 228 R --.05(ga)-.15 G .883(tion of the tw).05 F(o-ar)-.1 E .884 -(gument test using the second and third ar)-.18 F 3.384(guments. If)-.18 -F .884(the \214rst)3.384 F(ar)180 240 Q .875(gument is e)-.18 F(xactly) --.15 E F1(\()3.375 E F0 .875(and the third ar)3.375 F .875(gument is e) --.18 F(xactly)-.15 E F1(\))3.375 E F0 3.374(,t)C .874 -(he result is the one-ar)-3.374 F(gument)-.18 E(test of the second ar) +3.472(,t)C .972(he v)-3.472 F .972(alue is)-.25 F .884(the ne)180 228 R +-.05(ga)-.15 G .884(tion of the tw).05 F(o-ar)-.1 E .884 +(gument test using the second and third ar)-.18 F 3.383(guments. If)-.18 +F .883(the \214rst)3.383 F(ar)180 240 Q .874(gument is e)-.18 F(xactly) +-.15 E F1(\()3.374 E F0 .875(and the third ar)3.374 F .875(gument is e) +-.18 F(xactly)-.15 E F1(\))3.375 E F0 3.375(,t)C .875 +(he result is the one-ar)-3.375 F(gument)-.18 E(test of the second ar) 180 252 Q 2.5(gument. Otherwise,)-.18 F(the e)2.5 E(xpression is f)-.15 -E(alse.)-.1 E 2.5(4a)144 264 S -.18(rg)-2.5 G(uments).18 E .384 -(If the \214rst ar)180 276 R .384(gument is)-.18 F F1(!)2.884 E F0 2.885 -(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 G .385 -(tion of the three-ar).05 F .385(gument e)-.18 F .385(xpression com-) --.15 F 1.648(posed of the remaining ar)180 288 R 4.147 -(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.647 +E(alse.)-.1 E 2.5(4a)144 264 S -.18(rg)-2.5 G(uments).18 E .385 +(If the \214rst ar)180 276 R .385(gument is)-.18 F F1(!)2.885 E F0 2.885 +(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 G .384 +(tion of the three-ar).05 F .384(gument e)-.18 F .384(xpression com-) +-.15 F 1.647(posed of the remaining ar)180 288 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 300 Q -.15(ve) -.15 G(.).15 E 2.5(5o)144 312 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 @@ -7970,153 +7983,152 @@ nt the accumulated user and system times for the shell and for processe\ s run from the shell.)13.23 F(The return status is 0.)144 364.8 Q F1 (trap)108 381.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E/F4 10 /Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...])2.5 E -.702(The command)144 393.6 R F4(ar)3.532 E(g)-.37 E F0 .702 -(is to be read and e)3.422 F -.15(xe)-.15 G .702 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G -(ignal\(s\))-3.203 E F4(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F4 -(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single) +.703(The command)144 393.6 R F4(ar)3.533 E(g)-.37 E F0 .703 +(is to be read and e)3.423 F -.15(xe)-.15 G .702 +(cuted when the shell recei).15 F -.15(ve)-.25 G 3.202(ss).15 G +(ignal\(s\))-3.202 E F4(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F4 +(ar)3.532 E(g)-.37 E F0(is)3.422 E .608(absent \(and there is a single) 144 405.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F1<ad>3.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.658(\(the v)144 417.6 R .658(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .659 +.659(\(the v)144 417.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 429.6 Q F0 .581 -(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G --.1(ke).2 G 3.08(s. If).1 F F4(ar)3.41 E(g)-.37 E F0 .58 -(is not present and)3.3 F F1<ad70>3.08 E F0(has)3.08 E 1.214 +144.34 429.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 F1<ad70>3.081 E F0(has)3.081 E 1.215 (been supplied, then the trap commands associated with each)144 441.6 R -F4(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 +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 453.6 R F1<ad70>3.36 E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 (signal. The)144 465.6 R F1<ad6c>2.83 E F0 .33(option causes the shell \ -to print a list of signal names and their corresponding num-)2.83 F -4.311(bers. Each)144 477.6 R F4(sigspec)4.651 E F0 1.811 -(is either a signal name de\214ned in <)4.621 F F4(signal.h)A F0 1.81 -(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E +to print a list of signal names and their corresponding num-)2.83 F 4.31 +(bers. Each)144 477.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 489.6 Q .3 -.15(ve a)-.25 H(nd the).15 E -F2(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 507.6 R F4 -(sigspec)4.488 E F0(is)4.458 E F2(EXIT)4.148 E F0 1.648 -(\(0\) the command)3.898 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F --.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F -1.649(If a)6.649 F F4(sigspec)4.489 E F0(is)4.459 E F2(DEB)144 519.6 Q -(UG)-.09 E F3(,)A F0 1.168(the command)3.418 F F4(ar)3.998 E(g)-.37 E F0 -1.168(is e)3.888 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) --.25 G(ry).15 E F4 1.167(simple command)3.667 F F0(,)A F4(for)3.667 E F0 -(command,)3.667 E F4(case)3.667 E F0(com-)3.667 E(mand,)144 531.6 Q F4 -(select)2.646 E F0 .146(command, e)2.646 F -.15(ve)-.25 G .146 -(ry arithmetic).15 F F4(for)2.646 E F0 .147 -(command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147 -(cutes in a).15 F .146(shell function \(see)144 543.6 R F2 .146 -(SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F1(extdeb)2.645 E(ug)-.2 E F0 -.145(option to)2.645 F(the)144 555.6 Q F1(shopt)3.2 E F0 -.2(bu)3.2 G .7 -(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E(UG) --.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F4(sigspec)3.54 E F0(is)3.51 E F2 -(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144 567.6 Q F4(ar) -3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 +F2(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)144 507.6 R F4 +(sigspec)4.489 E F0(is)4.459 E F2(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 F2(DEB)144 519.6 Q +(UG)-.09 E F3(,)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 531.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 543.6 R F2 .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 555.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 F4(sigspec)3.54 E F0(is)3.51 E +F2(RETURN)3.2 E F3(,)A F0 .7(the com-)2.95 F(mand)144 567.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 -.643(cuted with the).15 F F1(.)3.143 E F0(or)3.143 E F1(sour)3.143 E(ce) --.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 579.6 Q -.15(xe) --.15 G(cuting.).15 E .928(If a)144 597.6 R F4(sigspec)3.768 E F0(is) -3.738 E F2(ERR)3.429 E F3(,)A F0 .929(the command)3.179 F F4(ar)3.759 E +.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 579.6 Q -.15(xe) +-.15 G(cuting.).15 E .929(If a)144 597.6 R F4(sigspec)3.769 E F0(is) +3.739 E F2(ERR)3.429 E F3(,)A F0 .929(the command)3.179 F F4(ar)3.759 E (g)-.37 E F0 .929(is e)3.649 F -.15(xe)-.15 G .929(cuted whene).15 F --.15(ve)-.25 G 3.429(ras).15 G .929(imple command has a non\255zero) --3.429 F -.15(ex)144 609.6 S 1.009(it status, subject to the follo).15 F +-.15(ve)-.25 G 3.429(ras).15 G .928(imple command has a non\255zero) +-3.429 F -.15(ex)144 609.6 S 1.008(it status, subject to the follo).15 F 1.009(wing conditions.)-.25 F(The)6.009 E F2(ERR)3.509 E F0 1.009 -(trap is not e)3.259 F -.15(xe)-.15 G 1.008(cuted if the f).15 F 1.008 +(trap is not e)3.259 F -.15(xe)-.15 G 1.009(cuted if the f).15 F 1.009 (ailed com-)-.1 F .324 (mand is part of the command list immediately follo)144 621.6 R .324 (wing a)-.25 F F1(while)2.824 E F0(or)2.824 E F1(until)2.824 E F0 -.1 -(ke)2.824 G(yw)-.05 E .324(ord, part of the test)-.1 F 1.129(in an)144 +(ke)2.824 G(yw)-.05 E .324(ord, part of the test)-.1 F 1.128(in an)144 633.6 R F4(if)3.639 E F0 1.129(statement, part of a command e)5.589 F -.15(xe)-.15 G 1.129(cuted in a).15 F F1(&&)3.629 E F0(or)3.629 E/F5 10 -/Symbol SF<efef>3.629 E F0 1.129(list, or if the command')3.629 F 3.628 -(sr)-.55 G(eturn)-3.628 E -.25(va)144 645.6 S(lue is being in).25 E -.15 +/Symbol SF<efef>3.629 E F0 1.129(list, or if the command')3.629 F 3.629 +(sr)-.55 G(eturn)-3.629 E -.25(va)144 645.6 S(lue is being in).25 E -.15 (ve)-.4 G(rted via).15 E F1(!)2.5 E F0 5(.T)C (hese are the same conditions obe)-5 E(yed by the)-.15 E F1(err)2.5 E (exit)-.18 E F0(option.)2.5 E 1.095 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 663.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 675.6 R .662 -(alues in a subshell or subshell en)-.25 F .661(vironment when one is) +(alues in a subshell or subshell en)-.25 F .662(vironment when one is) -.4 F 2.5(created. The)144 687.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 F1(trap)2.5 E F0(returns true.)2.5 E F1(type)108 704.4 Q F0([)2.5 E F1(\255aftpP)A F0(])A F4(name)2.5 E F0([)2.5 E F4 -(name)A F0(...])2.5 E -.4(Wi)144 716.4 S .173 -(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F4(name) -3.033 E F0 -.1(wo)2.853 G .174 -(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F -F1<ad74>144 728.4 Q F0 .843(option is used,)3.343 F F1(type)3.343 E F0 +(name)A F0(...])2.5 E -.4(Wi)144 716.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 +F1<ad74>144 728.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 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.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F4 -(\214le)5.252 E F0(if)3.522 E(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 -E(68)198.165 E 0 Cg EP +(,).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(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(68)187.615 E 0 Cg EP %%Page: 69 69 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Italic@0 SF(name)144.36 84 Q F0 .086 -(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 -(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1 -(name)2.947 E F0 .087(is not)2.767 F .119 +-.35 E/F1 10/Times-Italic@0 SF(name)144.36 84 Q F0 .087 +(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 +(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F1 +(name)2.946 E F0 .086(is not)2.766 F .118 (found, then nothing is printed, and an e)144 96 R .118(xit status of f) --.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F/F2 10 -/Times-Bold@0 SF<ad70>2.618 E F0 .118(option is used,)2.618 F F2(type) -2.618 E F0 .855(either returns the name of the disk \214le that w)144 +-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F/F2 10 +/Times-Bold@0 SF<ad70>2.619 E F0 .119(option is used,)2.619 F F2(type) +2.619 E F0 .855(either returns the name of the disk \214le that w)144 108 R .855(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name) -3.715 E F0 .855(were speci\214ed as a com-)3.535 F .641 -(mand name, or nothing if)144 120 R/F3 10/Courier@0 SF .641 -(type -t name)3.141 F F0 -.1(wo)3.141 G .641(uld not return).1 F F1 -(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E F2<ad50>3.14 E F0 .64 -(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666(PA)3.14 G(TH)-.189 E -F0 .112(search for each)144 132 R F1(name)2.612 E F0 2.612(,e)C -.15(ve) --2.862 G 2.613(ni).15 G(f)-2.613 E F3 .113(type -t name)2.613 F F0 -.1 -(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113(.I).18 G -2.613(fac)-5.113 G .113(ommand is hashed,)-2.613 F F2<ad70>2.613 E F0 -(and)144 144 Q F2<ad50>2.945 E F0 .445(print the hashed v)2.945 F .444 +3.715 E F0 .855(were speci\214ed as a com-)3.535 F .64 +(mand name, or nothing if)144 120 R/F3 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 F2<ad50>3.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 132 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 F3 .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 F2<ad70>2.612 E F0(and)144 144 +Q F2<ad50>2.944 E F0 .444(print the hashed v)2.944 F .444 (alue, not necessarily the \214le that appears \214rst in)-.25 F F4 --.666(PA)2.944 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .444(If the) -4.944 F F2<ad61>2.944 E F0(option)2.944 E .265(is used,)144 156 R F2 +-.666(PA)2.945 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .445(If the) +4.945 F F2<ad61>2.945 E F0(option)2.945 E .265(is used,)144 156 R F2 (type)2.765 E F0 .265(prints all of the places that contain an e)2.765 F -.15(xe)-.15 G .265(cutable named).15 F F1(name)2.765 E F0 5.265(.T).18 -G .265(his includes aliases)-5.265 F .427 +G .265(his includes aliases)-5.265 F .426 (and functions, if and only if the)144 168 R F2<ad70>2.926 E F0 .426 -(option is not also used.)2.926 F .426 -(The table of hashed commands is not)5.426 F .548(consulted when using) -144 180 R F2<ad61>3.048 E F0 5.548(.T)C(he)-5.548 E F2<ad66>3.048 E F0 -.549(option suppresses shell function lookup, as with the)3.048 F F2 -(command)3.049 E F0 -.2(bu)144 192 S(iltin.).2 E F2(type)5 E F0 +(option is not also used.)2.926 F .427 +(The table of hashed commands is not)5.426 F .549(consulted when using) +144 180 R F2<ad61>3.049 E F0 5.549(.T)C(he)-5.549 E F2<ad66>3.049 E F0 +.548(option suppresses shell function lookup, as with the)3.049 F F2 +(command)3.048 E F0 -.2(bu)144 192 S(iltin.).2 E F2(type)5 E F0 (returns true if all of the ar)2.5 E(guments are found, f)-.18 E (alse if an)-.1 E 2.5(ya)-.15 G(re not found.)-2.5 E F2(ulimit)108 208.8 Q F0([)2.5 E F2(\255HST)A(abcde\214lmnpqrstuvx)-.92 E F0([)2.5 E F1 -(limit)A F0(]])A(Pro)144 220.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 +(limit)A F0(]])A(Pro)144 220.8 Q .243(vides control o)-.15 F -.15(ve) +-.15 G 2.743(rt).15 G .243(he resources a)-2.743 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 232.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F -(The)5.943 E F2<ad48>3.443 E F0(and)3.443 E F2<ad53>3.444 E F0 .944 +.944(that allo)144 232.8 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F2<ad48>3.444 E F0(and)3.444 E F2<ad53>3.444 E F0 .943 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 244.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 244.8 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.709 F .425(be increased up to the v)144 256.8 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F2<ad48>2.926 E -F0(nor)2.926 E F2<ad53>2.926 E F0 .426 -(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 +ft limit may)2.708 F .426(be increased up to the v)144 256.8 R .426 +(alue of the hard limit.)-.25 F .425(If neither)5.426 F F2<ad48>2.925 E +F0(nor)2.925 E F2<ad53>2.925 E F0 .425 +(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 268.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 280.8 R(alues)-.25 E F2(hard)3.241 E F0(,)A F2 +.742(of the special v)144 280.8 R(alues)-.25 E F2(hard)3.242 E F0(,)A F2 (soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 (soft limit, and no limit, respecti)144 292.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 304.8 R F2<ad48>2.999 E F0 -.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 +F .499(resource is printed, unless the)144 304.8 R F2<ad48>2.999 E F0 +.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 (more than one resource is speci\214ed, the)2.999 F (limit name and unit are printed before the v)144 316.8 Q 2.5 (alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2 @@ -8133,8 +8145,8 @@ F0(The maximum size of \214les written by the shell and its children) (The maximum resident set size \(man)21.97 E 2.5(ys)-.15 G (ystems do not honor this limit\))-2.5 E F2<ad6e>144 436.8 Q F0 .791(Th\ e maximum number of open \214le descriptors \(most systems do not allo) -24.74 F 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F(be set\))180 -448.8 Q F2<ad70>144 460.8 Q F0 +24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F +(be set\))180 448.8 Q F2<ad70>144 460.8 Q F0 (The pipe size in 512-byte blocks \(this may not be set\))24.74 E F2 <ad71>144 472.8 Q F0 (The maximum number of bytes in POSIX message queues)24.74 E F2<ad72>144 @@ -8150,16 +8162,16 @@ F2<ad54>144 568.8 Q F0(The maximum number of threads)23.63 E(If)144 585.6 Q F1(limit)2.933 E F0 .343(is gi)3.523 F -.15(ve)-.25 G .343 (n, it is the ne).15 F 2.843(wv)-.25 G .343 (alue of the speci\214ed resource \(the)-3.093 F F2<ad61>2.843 E F0 .343 -(option is display only\).)2.843 F .343(If no)5.343 F .175(option is gi) -144 597.6 R -.15(ve)-.25 G .175(n, then).15 F F2<ad66>2.675 E F0 .175 -(is assumed.)2.675 F -1.11(Va)5.175 G .175 -(lues are in 1024-byte increments, e)1.11 F .176(xcept for)-.15 F F2 -<ad74>2.676 E F0 2.676(,w)C .176(hich is in)-2.676 F(seconds,)144 609.6 -Q F2<ad70>2.516 E F0 2.516(,w)C .016 -(hich is in units of 512-byte blocks, and)-2.516 F F2<ad54>2.516 E F0(,) -A F2<ad62>2.515 E F0(,)A F2<ad6e>2.515 E F0 2.515(,a)C(nd)-2.515 E F2 -<ad75>2.515 E F0 2.515(,w)C .015(hich are unscaled v)-2.515 F(al-)-.25 E -3.787(ues. The)144 621.6 R 1.287(return status is 0 unless an in)3.787 F +(option is display only\).)2.843 F .343(If no)5.343 F .176(option is gi) +144 597.6 R -.15(ve)-.25 G .176(n, then).15 F F2<ad66>2.676 E F0 .175 +(is assumed.)2.676 F -1.11(Va)5.175 G .175 +(lues are in 1024-byte increments, e)1.11 F .175(xcept for)-.15 F F2 +<ad74>2.675 E F0 2.675(,w)C .175(hich is in)-2.675 F(seconds,)144 609.6 +Q F2<ad70>2.515 E F0 2.515(,w)C .015 +(hich is in units of 512-byte blocks, and)-2.515 F F2<ad54>2.516 E F0(,) +A F2<ad62>2.516 E F0(,)A F2<ad6e>2.516 E F0 2.516(,a)C(nd)-2.516 E F2 +<ad75>2.516 E F0 2.516(,w)C .016(hich are unscaled v)-2.516 F(al-)-.25 E +3.788(ues. The)144 621.6 R 1.287(return status is 0 unless an in)3.787 F -.25(va)-.4 G 1.287(lid option or ar).25 F 1.287 (gument is supplied, or an error occurs)-.18 F(while setting a ne)144 633.6 Q 2.5(wl)-.25 G(imit.)-2.5 E F2(umask)108 650.4 Q F0([)2.5 E F2 @@ -8169,18 +8181,18 @@ A F2<ad62>2.515 E F0(,)A F2<ad6e>2.515 E F0 2.515(,a)C(nd)-2.515 E F2 (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 674.4 R F1 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -686.4 Q F1(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +686.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 F2<ad53>2.882 E F0 .382 (option causes the mask to be)2.882 F .547 (printed in symbolic form; the def)144 698.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 F2<ad70>3.047 E F0 .547(option is supplied, and)3.047 F F1 -(mode)144.38 710.4 Q F0 .552 -(is omitted, the output is in a form that may be reused as input.)3.232 -F .551(The return status is 0 if the)5.551 F(mode w)144 722.4 Q +(mode)144.38 710.4 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 722.4 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 -(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E(69)198.165 E 0 Cg EP +(GNU Bash-4.2)72 768 Q(2010 September 6)137.625 E(69)187.615 E 0 Cg EP %%Page: 70 70 %%BeginPageSetup BP @@ -8194,51 +8206,51 @@ F0 1.655(is supplied, all alias de\214nitions are)4.155 F(remo)144 108 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 124.8 Q F0<5bad>2.5 E F1 -(fv)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E -.15(Fo)144 136.8 S 3.107 -(re).15 G(ach)-3.107 E F2(name)3.107 E F0 3.107(,r).18 G(emo)-3.107 E -.907 -.15(ve t)-.15 H .607(he corresponding v).15 F .607 -(ariable or function.)-.25 F .606(If no options are supplied, or the) -5.607 F F1<ad76>144 148.8 Q F0 .304(option is gi)2.804 F -.15(ve)-.25 G -.304(n, each).15 F F2(name)3.164 E F0 .305(refers to a shell v)2.985 F -2.805(ariable. Read-only)-.25 F -.25(va)2.805 G .305 -(riables may not be unset.).25 F(If)5.305 E F1<ad66>144 160.8 Q F0 .46 -(is speci\214ed, each)2.96 F F2(name)3.32 E F0 .459 -(refers to a shell function, and the function de\214nition is remo)3.14 -F -.15(ve)-.15 G 2.959(d. Each).15 F .902(unset v)144 172.8 R .902 +(fv)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E -.15(Fo)144 136.8 S 3.106 +(re).15 G(ach)-3.106 E F2(name)3.106 E F0 3.106(,r).18 G(emo)-3.106 E +.906 -.15(ve t)-.15 H .606(he corresponding v).15 F .607 +(ariable or function.)-.25 F .607(If no options are supplied, or the) +5.607 F F1<ad76>144 148.8 Q F0 .305(option is gi)2.805 F -.15(ve)-.25 G +.305(n, each).15 F F2(name)3.165 E F0 .305(refers to a shell v)2.985 F +2.805(ariable. Read-only)-.25 F -.25(va)2.805 G .304 +(riables may not be unset.).25 F(If)5.304 E F1<ad66>144 160.8 Q F0 .459 +(is speci\214ed, each)2.959 F F2(name)3.319 E F0 .459 +(refers to a shell function, and the function de\214nition is remo)3.139 +F -.15(ve)-.15 G 2.96(d. Each).15 F .903(unset v)144 172.8 R .903 (ariable or function is remo)-.25 F -.15(ve)-.15 G 3.402(df).15 G .902 -(rom the en)-3.402 F .903(vironment passed to subsequent commands.)-.4 F -(If)5.903 E(an)144 184.8 Q 6.916(yo)-.15 G(f)-6.916 E/F3 9/Times-Bold@0 -SF(COMP_W)6.916 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM) +(rom the en)-3.402 F .902(vironment passed to subsequent commands.)-.4 F +(If)5.902 E(an)144 184.8 Q 6.915(yo)-.15 G(f)-6.915 E/F3 9/Times-Bold@0 +SF(COMP_W)6.915 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM) 6.665 E F4(,)A F3(SECONDS)6.665 E F4(,)A F3(LINENO)6.665 E F4(,)A F3 -(HISTCMD)6.665 E F4(,)A F3(FUNCN)6.665 E(AME)-.18 E F4(,)A F3(GR)144 -196.8 Q(OUPS)-.27 E F4(,)A F0(or)2.522 E F3(DIRST)2.772 E -.495(AC)-.81 +(HISTCMD)6.666 E F4(,)A F3(FUNCN)6.666 E(AME)-.18 E F4(,)A F3(GR)144 +196.8 Q(OUPS)-.27 E F4(,)A F0(or)2.523 E F3(DIRST)2.773 E -.495(AC)-.81 G(K).495 E F0 .272(are unset, the)2.522 F 2.772(yl)-.15 G .272 (ose their special properties, e)-2.772 F -.15(ve)-.25 G 2.772(ni).15 G -2.772(ft)-2.772 G(he)-2.772 E 2.773(ya)-.15 G .273(re subsequently) --2.773 F 2.5(reset. The)144 208.8 R -.15(ex)2.5 G +2.772(ft)-2.772 G(he)-2.772 E 2.772(ya)-.15 G .272(re subsequently) +-2.772 F 2.5(reset. The)144 208.8 R -.15(ex)2.5 G (it status is true unless a).15 E F2(name)2.86 E F0(is readonly)2.68 E (.)-.65 E F1(wait)108 225.6 Q F0([)2.5 E F2 2.5(n.)C(..)-2.5 E F0(])A -.8(Wa)144 237.6 S .288 (it for each speci\214ed process and return its termination status.).8 F -(Each)5.288 E F2(n)3.148 E F0 .287(may be a process ID or a)3.028 F .722 +(Each)5.288 E F2(n)3.148 E F0 .288(may be a process ID or a)3.028 F .722 (job speci\214cation; if a job spec is gi)144 249.6 R -.15(ve)-.25 G .722(n, all processes in that job').15 F 3.222(sp)-.55 G .722 (ipeline are w)-3.222 F .722(aited for)-.1 F 5.722(.I)-.55 G(f)-5.722 E -F2(n)3.583 E F0(is)3.463 E 1.266(not gi)144 261.6 R -.15(ve)-.25 G 1.266 -(n, all currently acti).15 F 1.566 -.15(ve c)-.25 H 1.265 -(hild processes are w).15 F 1.265(aited for)-.1 F 3.765(,a)-.4 G 1.265 -(nd the return status is zero.)-3.765 F(If)6.265 E F2(n)4.125 E F0 .456 +F2(n)3.582 E F0(is)3.462 E 1.265(not gi)144 261.6 R -.15(ve)-.25 G 1.265 +(n, all currently acti).15 F 1.565 -.15(ve c)-.25 H 1.265 +(hild processes are w).15 F 1.265(aited for)-.1 F 3.765(,a)-.4 G 1.266 +(nd the return status is zero.)-3.765 F(If)6.266 E F2(n)4.126 E F0 .457 (speci\214es a non-e)144 273.6 R .457 (xistent process or job, the return status is 127.)-.15 F .457 (Otherwise, the return status is the)5.457 F -.15(ex)144 285.6 S (it status of the last process or job w).15 E(aited for)-.1 E(.)-.55 E /F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 302.4 Q F0(If)108 314.4 Q -F1(bash)4.397 E F0 1.897(is started with the name)4.397 F F1(rbash)4.397 -E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F1<ad72>4.397 E F0 1.896 -(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896 -(cation, the shell becomes).2 F 3.445(restricted. A)108 326.4 R .945 -(restricted shell is used to set up an en)3.445 F .946 -(vironment more controlled than the standard shell.)-.4 F(It)5.946 E +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<ad72>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 326.4 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 338.4 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 (bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E (wing are disallo)-.25 E(wed or not performed:)-.25 E 32.5<8363>108 @@ -8249,11 +8261,11 @@ F4(,)A F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or) (pecifying command names containing)-32.5 E F1(/)2.5 E F0 32.5<8373>108 405.6 S(pecifying a \214le name containing a)-32.5 E 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 32.5<8353>108 422.4 S .351 -(pecifying a \214lename containing a slash as an ar)-32.5 F .351 -(gument to the)-.18 F F1<ad70>2.851 E F0 .351(option to the)2.851 F F1 -(hash)2.851 E F0 -.2(bu)2.851 G .351(iltin com-).2 F(mand)144 434.4 Q -32.5<8369>108 451.2 S(mporting function de\214nitions from the shell en) +(iltin command).2 E 32.5<8373>108 422.4 S .449 +(pecifying a \214lename containing a slash as an ar)-32.5 F .449 +(gument to the)-.18 F F1<ad70>2.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 434.4 Q 32.5 +<8369>108 451.2 S(mporting function de\214nitions from the shell en) -32.5 E(vironment at startup)-.4 E 32.5<8370>108 468 S(arsing the v) -32.5 E(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E (vironment at startup)-.4 E 32.5<8372>108 484.8 S(edirecting output usi\ @@ -8262,7 +8274,7 @@ ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E 32.5 (iltin command to replace the shell with another command).2 E 32.5<8361> 108 518.4 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E F1<ad66>2.5 E F0(and)2.5 E F1<ad64>2.5 E F0(options to the)2.5 E F1 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8355>108 535.2 S +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8375>108 535.2 S (sing the)-32.5 E F1(enable)2.5 E F0 -.2(bu)2.5 G (iltin command to enable disabled shell b).2 E(uiltins)-.2 E 32.5<8373> 108 552 S(pecifying the)-32.5 E F1<ad70>2.5 E F0(option to the)2.5 E F1 @@ -8272,8 +8284,8 @@ F1<ad66>2.5 E F0(and)2.5 E F1<ad64>2.5 E F0(options to the)2.5 E F1 (These restrictions are enforced after an)108 585.6 Q 2.5(ys)-.15 G (tartup \214les are read.)-2.5 E 1.566 (When a command that is found to be a shell script is e)108 602.4 R -.15 -(xe)-.15 G 1.567(cuted \(see).15 F F3 1.567(COMMAND EXECUTION)4.067 F F0 -(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 614.4 Q F0(turns of) +(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 614.4 Q F0(turns of) 2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F5(SEE ALSO)72 631.2 Q F2(Bash Refer)108 643.2 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F) @@ -8285,7 +8297,7 @@ E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F5(SEE ALSO)72 (art 2: Shell and Utilities)-.8 E F0 2.5(,I)C(EEE)-2.5 E F2(sh)108 691.2 Q F0(\(1\),)A F2(ksh)2.5 E F0(\(1\),)A F2(csh)2.5 E F0(\(1\))A F2(emacs) 108 703.2 Q F0(\(1\),)A F2(vi)2.5 E F0(\(1\))A(GNU Bash-4.2)72 768 Q -(2010 July 21)148.175 E(70)198.165 E 0 Cg EP +(2010 September 6)137.625 E(70)187.615 E 0 Cg EP %%Page: 71 71 %%BeginPageSetup BP @@ -8309,20 +8321,20 @@ E F0(The personal initialization \214le, e)144 172.8 Q -.15(xe)-.15 G (oundation)-.15 E(bfox@gnu.or)108 285.6 Q(g)-.18 E(Chet Rame)108 302.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 314.4 Q(y@case.edu)-.15 -E F2 -.11(BU)72 331.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568 +E F2 -.11(BU)72 331.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 (If you \214nd a b)108 343.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 .567(ug, and)-.2 -F 5.625(that it appears in the latest v)108 355.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.626 -(ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626 +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 355.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 367.2 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .411(Once you ha)108 384 R .711 -.15(ve d)-.2 H .411 -(etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the) --.15 F F1(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41 -(ug report.)-.2 F(If)5.41 E .594(you ha)108 396 R .894 -.15(ve a \214) --.2 H .595(x, you are encouraged to mail that as well!).15 F .595 -(Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F +E F0(.)A .41(Once you ha)108 384 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 396 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 408 Q F1 -.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 424.8 Q(ug reports should include:)-.2 E(The v) @@ -8336,25 +8348,25 @@ G(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 506.4 Q(ug)-.2 E F0 523.2 Q(ug reports concerning this manual page should be directed to)-.2 E F1 -.15(ch)2.5 G(et@po.cwru.edu).15 E F0(.).25 E F2 -.11(BU)72 540 S (GS).11 E F0(It')108 552 Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65 -(w.)-.25 G 1.869(There are some subtle dif)108 568.8 R 1.869 +(w.)-.25 G 1.868(There are some subtle dif)108 568.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.368 E F0 4.368(,m)C 1.868 -(ostly because of the)-4.368 F/F4 9/Times-Bold@0 SF(POSIX)108 580.8 Q F0 +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 580.8 Q F0 (speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 597.6 Q (Shell b)108 614.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 631.2 R .39 +re not handled gracefully when)108 631.2 R .389 (process suspension is attempted.)108 643.2 R .389 -(When a process is stopped, the shell immediately e)5.39 F -.15(xe)-.15 -G .389(cutes the ne).15 F .389(xt com-)-.15 F .192 -(mand in the sequence.)108 655.2 R .192(It suf)5.192 F .192(\214ces to \ -place the sequence of commands between parentheses to force it into a) --.25 F(subshell, which may be stopped as a unit.)108 667.2 Q(Array v)108 -684 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(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 655.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 667.2 Q(Array v)108 684 Q +(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E (There may be only one acti)108 700.8 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash-4.2)72 768 Q(2010 July 21)148.175 E -(71)198.165 E 0 Cg EP +(oprocess at a time.).15 E(GNU Bash-4.2)72 768 Q(2010 September 6) +137.625 E(71)187.615 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.dvi b/doc/bashref.dvi Binary files differindex 623bc45c..95c9c5e8 100644 --- a/doc/bashref.dvi +++ b/doc/bashref.dvi diff --git a/doc/bashref.html b/doc/bashref.html index 206af535..58549e94 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,6 +1,6 @@ <HTML> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<!-- Created on July, 21 2010 by texi2html 1.64 --> +<!-- Created on October, 25 2010 by texi2html 1.64 --> <!-- Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) Karl Berry <karl@freefriends.org> @@ -33,10 +33,10 @@ Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> <H1>Bash Reference Manual</H1></P><P> This text is a brief description of the features that are present in -the Bash shell (version 4.2, 21 July 2010). +the Bash shell (version 4.2, 20 October 2010). </P><P> -This is Edition 4.2, last updated 21 July 2010, +This is Edition 4.2, last updated 20 October 2010, of <CITE>The GNU Bash Reference Manual</CITE>, for <CODE>Bash</CODE>, Version 4.2. </P><P> @@ -1518,7 +1518,7 @@ The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. </P><P> -The process id of the shell spawned to execute the coprocess is +The process ID of the shell spawned to execute the coprocess is available as the value of the variable <VAR>NAME</VAR>_PID. The <CODE>wait</CODE> builtin command may be used to wait for the coprocess to terminate. @@ -1806,7 +1806,7 @@ In the context where an assignment statement is assigning a value to a shell variable or array index (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>), the <SAMP>`+='</SAMP> operator can be used to append to or add to the variable's previous value. -When <SAMP>`+='</SAMP> is applied to a variable for which the integer attribute +When <SAMP>`+='</SAMP> is applied to a variable for which the <VAR>integer</VAR> attribute has been set, <VAR>value</VAR> is evaluated as an arithmetic expression and added to the variable's current value, which is also evaluated. When <SAMP>`+='</SAMP> is applied to an array variable using compound assignment @@ -2276,7 +2276,7 @@ Bash uses the value of the variable formed from the rest of expanded and that value is used in the rest of the substitution, rather than the value of <VAR>parameter</VAR> itself. This is known as <CODE>indirect expansion</CODE>. -The exceptions to this are the expansions of ${!<VAR>prefix*</VAR>} +The exceptions to this are the expansions of ${!<VAR>prefix</VAR><BR>} and ${!<VAR>name</VAR>[@]} described below. The exclamation point must immediately follow the left brace in order to @@ -4099,7 +4099,7 @@ invocation if a new set of parameters is to be used. When the end of options is encountered, <CODE>getopts</CODE> exits with a return value greater than zero. <CODE>OPTIND</CODE> is set to the index of the first non-option argument, -and <CODE>name</CODE> is set to <SAMP>`?'</SAMP>. +and <VAR>name</VAR> is set to <SAMP>`?'</SAMP>. </P><P> <CODE>getopts</CODE> @@ -5315,8 +5315,8 @@ parameters, or to display the names and values of shell variables. <DL COMPACT> <DT><CODE>set</CODE> <DD><A NAME="IDX110"></A> -<TABLE><tr><td> </td><td class=example><pre>set [--abefhkmnptuvxBCEHPT] [-o <VAR>option</VAR>] [<VAR>argument</VAR> <small>...</small>] -set [+abefhkmnptuvxBCEHPT] [+o <VAR>option</VAR>] [<VAR>argument</VAR> <small>...</small>] +<TABLE><tr><td> </td><td class=example><pre>set [--abefhkmnptuvxBCEHPT] [-o <VAR>option-name</VAR>] [<VAR>argument</VAR> <small>...</small>] +set [+abefhkmnptuvxBCEHPT] [+o <VAR>option-name</VAR>] [<VAR>argument</VAR> <small>...</small>] </pre></td></tr></table><P> If no options or arguments are supplied, <CODE>set</CODE> displays the names @@ -5758,20 +5758,21 @@ easy re-editing of multi-line commands. <DT><CODE>compat31</CODE> <DD>If set, Bash changes its behavior to that of version 3.1 with respect to quoted -arguments to the conditional command's =~ operator. +arguments to the conditional command's <SAMP>`=~'</SAMP> operator. <P> <DT><CODE>compat32</CODE> <DD>If set, Bash changes its behavior to that of version 3.2 with respect to locale-specific -string comparison when using the conditional command's < and > operators. +string comparison when using the conditional command's <SAMP>`<'</SAMP> and <SAMP>`>'</SAMP> +operators. <P> <DT><CODE>compat40</CODE> <DD>If set, Bash changes its behavior to that of version 4.0 with respect to locale-specific -string comparison when using the conditional command's < and > operators -and the effect of interrupting a command list. +string comparison when using the conditional command's <SAMP>`<'</SAMP> and <SAMP>`>'</SAMP> +operators and the effect of interrupting a command list. <P> <DT><CODE>compat41</CODE> @@ -6145,9 +6146,10 @@ words as part of expansion. <A NAME="IDX118"></A> <DT><CODE>MAIL</CODE> <DD><A NAME="IDX119"></A> -If this parameter is set to a filename and the <CODE>MAILPATH</CODE> variable +If this parameter is set to a filename or directory name +and the <CODE>MAILPATH</CODE> variable is not set, Bash informs the user of the arrival of mail in -the specified file. +the specified file or Maildir-format directory. <P> <A NAME="IDX120"></A> @@ -6253,7 +6255,7 @@ reading any startup files. This variable is readonly. <A NAME="IDX136"></A> <DT><CODE>BASHPID</CODE> <DD><A NAME="IDX137"></A> -Expands to the process id of the current Bash process. +Expands to the process ID of the current Bash process. This differs from <CODE>$$</CODE> under certain circumstances, such as subshells that do not require Bash to be re-initialized. <P> @@ -6262,7 +6264,7 @@ that do not require Bash to be re-initialized. <DT><CODE>BASH_ALIASES</CODE> <DD><A NAME="IDX139"></A> An associative array variable whose members correspond to the internal -list of aliases as maintained by the <CODE>alias</CODE> builtin +list of aliases as maintained by the <CODE>alias</CODE> builtin. (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). Elements added to this array appear in the alias list; unsetting array elements cause aliases to be removed from the alias list. @@ -6546,7 +6548,7 @@ it is subsequently reset. <DD><A NAME="IDX189"></A> If Bash finds this variable in the environment when the shell starts with value <SAMP>`t'</SAMP>, it assumes that the shell is running in an -emacs shell buffer and disables line editing. +Emacs shell buffer and disables line editing. <P> <A NAME="IDX190"></A> @@ -7486,7 +7488,7 @@ No other startup files are read. <P> Bash attempts to determine when it is being run with its standard input -connected to a a network connection, as if by the remote shell +connected to a network connection, as when executed by the remote shell daemon, usually <CODE>rshd</CODE>, or the secure shell daemon <CODE>sshd</CODE>. If Bash determines it is being run in this fashion, it reads and executes commands from <TT>`~/.bashrc'</TT>, if that @@ -8062,7 +8064,7 @@ The value of a variable is evaluated as an arithmetic expression when it is referenced, or when a variable which has been given the <VAR>integer</VAR> attribute using <SAMP>`declare -i'</SAMP> is assigned a value. A null value evaluates to 0. -A shell variable need not have its integer attribute turned on +A shell variable need not have its <VAR>integer</VAR> attribute turned on to be used in an expression. </P><P> @@ -8769,15 +8771,6 @@ the command name, and so on. <P> <LI> -If <CODE>CDPATH</CODE> is set, the <CODE>cd</CODE> builtin will not implicitly -append the current directory to it. This means that <CODE>cd</CODE> will -fail if no valid directory name can be constructed from -any of the entries in <CODE>$CDPATH</CODE>, even if the a directory with -the same name as the name given as an argument to <CODE>cd</CODE> exists -in the current directory. -<P> - -<LI> A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. @@ -8786,6 +8779,12 @@ a value to a readonly variable. <P> <LI> +A non-interactive shell exists 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. +<P> + +<LI> A non-interactive shell exits with an error status if the iteration variable in a <CODE>for</CODE> statement or the selection variable in a <CODE>select</CODE> statement is a readonly variable. @@ -8865,11 +8864,6 @@ falling back to <VAR>physical</VAR> mode. <P> <LI> -When the <CODE>pwd</CODE> builtin is supplied the <SAMP>`-P'</SAMP> option, it resets -<CODE>$PWD</CODE> to a pathname containing no symlinks. -<P> - -<LI> The <CODE>pwd</CODE> builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the <SAMP>`-P'</SAMP> option. @@ -9322,7 +9316,7 @@ Command line editing is enabled by default when using an interactive shell, unless the <SAMP>`--noediting'</SAMP> option is supplied at shell invocation. Line editing is also used when using the <SAMP>`-e'</SAMP> option to the <CODE>read</CODE> builtin command (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). -By default, the line editing commands are similar to those of emacs. +By default, the line editing commands are similar to those of Emacs. A vi-style line editing interface is also available. Line editing can be enabled at any time using the <SAMP>`-o emacs'</SAMP> or <SAMP>`-o vi'</SAMP> options to the <CODE>set</CODE> builtin command @@ -10055,15 +10049,22 @@ supplied by the user in the filename to be completed. This variable is <SAMP>`on'</SAMP> by default. <P> -<DT><CODE>output-meta</CODE> +<DT><CODE>menu-complete-display-prefix</CODE> <DD><A NAME="IDX342"></A> +If set to <SAMP>`on'</SAMP>, menu completion displays the common prefix of the +list of possible completions (which may be empty) before cycling through +the list. The default is <SAMP>`off'</SAMP>. +<P> + +<DT><CODE>output-meta</CODE> +<DD><A NAME="IDX343"></A> If set to <SAMP>`on'</SAMP>, Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. The default is <SAMP>`off'</SAMP>. <P> <DT><CODE>page-completions</CODE> -<DD><A NAME="IDX343"></A> +<DD><A NAME="IDX344"></A> If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager to display a screenful of possible completions at a time. This variable is <SAMP>`on'</SAMP> by default. @@ -10076,7 +10077,7 @@ The default is <SAMP>`off'</SAMP>. <P> <DT><CODE>revert-all-at-newline</CODE> -<DD><A NAME="IDX344"></A> +<DD><A NAME="IDX345"></A> If set to <SAMP>`on'</SAMP>, Readline will undo all changes to history lines before returning when <CODE>accept-line</CODE> is executed. By default, history lines may be modified and retain individual undo lists across @@ -10084,7 +10085,7 @@ calls to <CODE>readline</CODE>. The default is <SAMP>`off'</SAMP>. <P> <DT><CODE>show-all-if-ambiguous</CODE> -<DD><A NAME="IDX345"></A> +<DD><A NAME="IDX346"></A> This alters the default behavior of the completion functions. If set to <SAMP>`on'</SAMP>, words which have more than one possible completion cause the @@ -10093,7 +10094,7 @@ The default value is <SAMP>`off'</SAMP>. <P> <DT><CODE>show-all-if-unmodified</CODE> -<DD><A NAME="IDX346"></A> +<DD><A NAME="IDX347"></A> This alters the default behavior of the completion functions in a fashion similar to <VAR>show-all-if-ambiguous</VAR>. If set to <SAMP>`on'</SAMP>, @@ -10105,7 +10106,7 @@ The default value is <SAMP>`off'</SAMP>. <P> <DT><CODE>skip-completed-text</CODE> -<DD><A NAME="IDX347"></A> +<DD><A NAME="IDX348"></A> If set to <SAMP>`on'</SAMP>, this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline @@ -10120,7 +10121,7 @@ The default value is <SAMP>`off'</SAMP>. <P> <DT><CODE>visible-stats</CODE> -<DD><A NAME="IDX348"></A> +<DD><A NAME="IDX349"></A> If set to <SAMP>`on'</SAMP>, a character denoting a file's type is appended to the filename when listing possible completions. The default is <SAMP>`off'</SAMP>. @@ -10544,68 +10545,68 @@ The text between the point and mark is referred to as the <EM>region</EM>. <H3> 8.4.1 Commands For Moving </H3> <!--docid::SEC109::--> <DL COMPACT> -<A NAME="IDX349"></A> +<A NAME="IDX350"></A> <DT><CODE>beginning-of-line (C-a)</CODE> -<DD><A NAME="IDX350"></A> +<DD><A NAME="IDX351"></A> Move to the start of the current line. <P> -<A NAME="IDX351"></A> +<A NAME="IDX352"></A> <DT><CODE>end-of-line (C-e)</CODE> -<DD><A NAME="IDX352"></A> +<DD><A NAME="IDX353"></A> Move to the end of the line. <P> -<A NAME="IDX353"></A> +<A NAME="IDX354"></A> <DT><CODE>forward-char (C-f)</CODE> -<DD><A NAME="IDX354"></A> +<DD><A NAME="IDX355"></A> Move forward a character. <P> -<A NAME="IDX355"></A> +<A NAME="IDX356"></A> <DT><CODE>backward-char (C-b)</CODE> -<DD><A NAME="IDX356"></A> +<DD><A NAME="IDX357"></A> Move back a character. <P> -<A NAME="IDX357"></A> +<A NAME="IDX358"></A> <DT><CODE>forward-word (M-f)</CODE> -<DD><A NAME="IDX358"></A> +<DD><A NAME="IDX359"></A> Move forward to the end of the next word. Words are composed of letters and digits. <P> -<A NAME="IDX359"></A> +<A NAME="IDX360"></A> <DT><CODE>backward-word (M-b)</CODE> -<DD><A NAME="IDX360"></A> +<DD><A NAME="IDX361"></A> Move back to the start of the current or previous word. Words are composed of letters and digits. <P> -<A NAME="IDX361"></A> +<A NAME="IDX362"></A> <DT><CODE>shell-forward-word ()</CODE> -<DD><A NAME="IDX362"></A> +<DD><A NAME="IDX363"></A> Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. <P> -<A NAME="IDX363"></A> +<A NAME="IDX364"></A> <DT><CODE>shell-backward-word ()</CODE> -<DD><A NAME="IDX364"></A> +<DD><A NAME="IDX365"></A> Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. <P> -<A NAME="IDX365"></A> +<A NAME="IDX366"></A> <DT><CODE>clear-screen (C-l)</CODE> -<DD><A NAME="IDX366"></A> +<DD><A NAME="IDX367"></A> Clear the screen and redraw the current line, leaving the current line at the top of the screen. <P> -<A NAME="IDX367"></A> +<A NAME="IDX368"></A> <DT><CODE>redraw-current-line ()</CODE> -<DD><A NAME="IDX368"></A> +<DD><A NAME="IDX369"></A> Refresh the current line. By default, this is unbound. <P> @@ -10631,9 +10632,9 @@ Refresh the current line. By default, this is unbound. <P> <DL COMPACT> -<A NAME="IDX369"></A> +<A NAME="IDX370"></A> <DT><CODE>accept-line (Newline or Return)</CODE> -<DD><A NAME="IDX370"></A> +<DD><A NAME="IDX371"></A> Accept the line regardless of where the cursor is. If this line is non-empty, add it to the history list according to the setting of @@ -10642,81 +10643,81 @@ If this line is a modified history line, then restore the history line to its original state. <P> -<A NAME="IDX371"></A> +<A NAME="IDX372"></A> <DT><CODE>previous-history (C-p)</CODE> -<DD><A NAME="IDX372"></A> +<DD><A NAME="IDX373"></A> Move `back' through the history list, fetching the previous command. <P> -<A NAME="IDX373"></A> +<A NAME="IDX374"></A> <DT><CODE>next-history (C-n)</CODE> -<DD><A NAME="IDX374"></A> +<DD><A NAME="IDX375"></A> Move `forward' through the history list, fetching the next command. <P> -<A NAME="IDX375"></A> +<A NAME="IDX376"></A> <DT><CODE>beginning-of-history (M-<)</CODE> -<DD><A NAME="IDX376"></A> +<DD><A NAME="IDX377"></A> Move to the first line in the history. <P> -<A NAME="IDX377"></A> +<A NAME="IDX378"></A> <DT><CODE>end-of-history (M->)</CODE> -<DD><A NAME="IDX378"></A> +<DD><A NAME="IDX379"></A> Move to the end of the input history, i.e., the line currently being entered. <P> -<A NAME="IDX379"></A> +<A NAME="IDX380"></A> <DT><CODE>reverse-search-history (C-r)</CODE> -<DD><A NAME="IDX380"></A> +<DD><A NAME="IDX381"></A> Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search. <P> -<A NAME="IDX381"></A> +<A NAME="IDX382"></A> <DT><CODE>forward-search-history (C-s)</CODE> -<DD><A NAME="IDX382"></A> +<DD><A NAME="IDX383"></A> Search forward starting at the current line and moving `down' through the the history as necessary. This is an incremental search. <P> -<A NAME="IDX383"></A> +<A NAME="IDX384"></A> <DT><CODE>non-incremental-reverse-search-history (M-p)</CODE> -<DD><A NAME="IDX384"></A> +<DD><A NAME="IDX385"></A> Search backward starting at the current line and moving `up' through the history as necessary using a non-incremental search for a string supplied by the user. <P> -<A NAME="IDX385"></A> +<A NAME="IDX386"></A> <DT><CODE>non-incremental-forward-search-history (M-n)</CODE> -<DD><A NAME="IDX386"></A> +<DD><A NAME="IDX387"></A> Search forward starting at the current line and moving `down' through the the history as necessary using a non-incremental search for a string supplied by the user. <P> -<A NAME="IDX387"></A> +<A NAME="IDX388"></A> <DT><CODE>history-search-forward ()</CODE> -<DD><A NAME="IDX388"></A> +<DD><A NAME="IDX389"></A> Search forward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search. By default, this command is unbound. <P> -<A NAME="IDX389"></A> +<A NAME="IDX390"></A> <DT><CODE>history-search-backward ()</CODE> -<DD><A NAME="IDX390"></A> +<DD><A NAME="IDX391"></A> Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search. By default, this command is unbound. <P> -<A NAME="IDX391"></A> +<A NAME="IDX392"></A> <DT><CODE>yank-nth-arg (M-C-y)</CODE> -<DD><A NAME="IDX392"></A> +<DD><A NAME="IDX393"></A> Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument <VAR>n</VAR>, @@ -10727,9 +10728,9 @@ Once the argument <VAR>n</VAR> is computed, the argument is extracted as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified. <P> -<A NAME="IDX393"></A> +<A NAME="IDX394"></A> <DT><CODE>yank-last-arg (M-. or M-_)</CODE> -<DD><A NAME="IDX394"></A> +<DD><A NAME="IDX395"></A> Insert last argument to the previous command (the last word of the previous history entry). With an argument, behave exactly like <CODE>yank-nth-arg</CODE>. @@ -10761,46 +10762,46 @@ as if the <SAMP>`!$'</SAMP> history expansion had been specified. <P> <DL COMPACT> -<A NAME="IDX395"></A> +<A NAME="IDX396"></A> <DT><CODE>delete-char (C-d)</CODE> -<DD><A NAME="IDX396"></A> +<DD><A NAME="IDX397"></A> Delete the character at point. If point is at the beginning of the line, there are no characters in the line, and the last character typed was not bound to <CODE>delete-char</CODE>, then return EOF. <P> -<A NAME="IDX397"></A> +<A NAME="IDX398"></A> <DT><CODE>backward-delete-char (Rubout)</CODE> -<DD><A NAME="IDX398"></A> +<DD><A NAME="IDX399"></A> Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them. <P> -<A NAME="IDX399"></A> +<A NAME="IDX400"></A> <DT><CODE>forward-backward-delete-char ()</CODE> -<DD><A NAME="IDX400"></A> +<DD><A NAME="IDX401"></A> Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. <P> -<A NAME="IDX401"></A> +<A NAME="IDX402"></A> <DT><CODE>quoted-insert (C-q or C-v)</CODE> -<DD><A NAME="IDX402"></A> +<DD><A NAME="IDX403"></A> Add the next character typed to the line verbatim. This is how to insert key sequences like <KBD>C-q</KBD>, for example. <P> -<A NAME="IDX403"></A> +<A NAME="IDX404"></A> <DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE> -<DD><A NAME="IDX404"></A> +<DD><A NAME="IDX405"></A> Insert yourself. <P> -<A NAME="IDX405"></A> +<A NAME="IDX406"></A> <DT><CODE>transpose-chars (C-t)</CODE> -<DD><A NAME="IDX406"></A> +<DD><A NAME="IDX407"></A> Drag the character before the cursor forward over the character at the cursor, moving the cursor forward as well. If the insertion point @@ -10809,39 +10810,39 @@ transposes the last two characters of the line. Negative arguments have no effect. <P> -<A NAME="IDX407"></A> +<A NAME="IDX408"></A> <DT><CODE>transpose-words (M-t)</CODE> -<DD><A NAME="IDX408"></A> +<DD><A NAME="IDX409"></A> Drag the word before point past the word after point, moving point past that word as well. If the insertion point is at the end of the line, this transposes the last two words on the line. <P> -<A NAME="IDX409"></A> +<A NAME="IDX410"></A> <DT><CODE>upcase-word (M-u)</CODE> -<DD><A NAME="IDX410"></A> +<DD><A NAME="IDX411"></A> Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor. <P> -<A NAME="IDX411"></A> +<A NAME="IDX412"></A> <DT><CODE>downcase-word (M-l)</CODE> -<DD><A NAME="IDX412"></A> +<DD><A NAME="IDX413"></A> Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor. <P> -<A NAME="IDX413"></A> +<A NAME="IDX414"></A> <DT><CODE>capitalize-word (M-c)</CODE> -<DD><A NAME="IDX414"></A> +<DD><A NAME="IDX415"></A> Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. <P> -<A NAME="IDX415"></A> +<A NAME="IDX416"></A> <DT><CODE>overwrite-mode ()</CODE> -<DD><A NAME="IDX416"></A> +<DD><A NAME="IDX417"></A> Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only @@ -10881,121 +10882,121 @@ By default, this command is unbound. <DL COMPACT> -<A NAME="IDX417"></A> +<A NAME="IDX418"></A> <DT><CODE>kill-line (C-k)</CODE> -<DD><A NAME="IDX418"></A> +<DD><A NAME="IDX419"></A> Kill the text from point to the end of the line. <P> -<A NAME="IDX419"></A> +<A NAME="IDX420"></A> <DT><CODE>backward-kill-line (C-x Rubout)</CODE> -<DD><A NAME="IDX420"></A> +<DD><A NAME="IDX421"></A> Kill backward to the beginning of the line. <P> -<A NAME="IDX421"></A> +<A NAME="IDX422"></A> <DT><CODE>unix-line-discard (C-u)</CODE> -<DD><A NAME="IDX422"></A> +<DD><A NAME="IDX423"></A> Kill backward from the cursor to the beginning of the current line. <P> -<A NAME="IDX423"></A> +<A NAME="IDX424"></A> <DT><CODE>kill-whole-line ()</CODE> -<DD><A NAME="IDX424"></A> +<DD><A NAME="IDX425"></A> Kill all characters on the current line, no matter where point is. By default, this is unbound. <P> -<A NAME="IDX425"></A> +<A NAME="IDX426"></A> <DT><CODE>kill-word (M-d)</CODE> -<DD><A NAME="IDX426"></A> +<DD><A NAME="IDX427"></A> Kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same as <CODE>forward-word</CODE>. <P> -<A NAME="IDX427"></A> +<A NAME="IDX428"></A> <DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE> -<DD><A NAME="IDX428"></A> +<DD><A NAME="IDX429"></A> Kill the word behind point. Word boundaries are the same as <CODE>backward-word</CODE>. <P> -<A NAME="IDX429"></A> +<A NAME="IDX430"></A> <DT><CODE>shell-kill-word ()</CODE> -<DD><A NAME="IDX430"></A> +<DD><A NAME="IDX431"></A> Kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same as <CODE>shell-forward-word</CODE>. <P> -<A NAME="IDX431"></A> +<A NAME="IDX432"></A> <DT><CODE>backward-kill-word ()</CODE> -<DD><A NAME="IDX432"></A> +<DD><A NAME="IDX433"></A> Kill the word behind point. Word boundaries are the same as <CODE>shell-backward-word</CODE>. <P> -<A NAME="IDX433"></A> +<A NAME="IDX434"></A> <DT><CODE>unix-word-rubout (C-w)</CODE> -<DD><A NAME="IDX434"></A> +<DD><A NAME="IDX435"></A> Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. <P> -<A NAME="IDX435"></A> +<A NAME="IDX436"></A> <DT><CODE>unix-filename-rubout ()</CODE> -<DD><A NAME="IDX436"></A> +<DD><A NAME="IDX437"></A> Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring. <P> -<A NAME="IDX437"></A> +<A NAME="IDX438"></A> <DT><CODE>delete-horizontal-space ()</CODE> -<DD><A NAME="IDX438"></A> +<DD><A NAME="IDX439"></A> Delete all spaces and tabs around point. By default, this is unbound. <P> -<A NAME="IDX439"></A> +<A NAME="IDX440"></A> <DT><CODE>kill-region ()</CODE> -<DD><A NAME="IDX440"></A> +<DD><A NAME="IDX441"></A> Kill the text in the current region. By default, this command is unbound. <P> -<A NAME="IDX441"></A> +<A NAME="IDX442"></A> <DT><CODE>copy-region-as-kill ()</CODE> -<DD><A NAME="IDX442"></A> +<DD><A NAME="IDX443"></A> Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound. <P> -<A NAME="IDX443"></A> +<A NAME="IDX444"></A> <DT><CODE>copy-backward-word ()</CODE> -<DD><A NAME="IDX444"></A> +<DD><A NAME="IDX445"></A> Copy the word before point to the kill buffer. The word boundaries are the same as <CODE>backward-word</CODE>. By default, this command is unbound. <P> -<A NAME="IDX445"></A> +<A NAME="IDX446"></A> <DT><CODE>copy-forward-word ()</CODE> -<DD><A NAME="IDX446"></A> +<DD><A NAME="IDX447"></A> Copy the word following point to the kill buffer. The word boundaries are the same as <CODE>forward-word</CODE>. By default, this command is unbound. <P> -<A NAME="IDX447"></A> +<A NAME="IDX448"></A> <DT><CODE>yank (C-y)</CODE> -<DD><A NAME="IDX448"></A> +<DD><A NAME="IDX449"></A> Yank the top of the kill ring into the buffer at point. <P> -<A NAME="IDX449"></A> +<A NAME="IDX450"></A> <DT><CODE>yank-pop (M-y)</CODE> -<DD><A NAME="IDX450"></A> +<DD><A NAME="IDX451"></A> Rotate the kill-ring, and yank the new top. You can only do this if the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>. </DL> @@ -11019,16 +11020,16 @@ the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>. <!--docid::SEC113::--> <DL COMPACT> -<A NAME="IDX451"></A> +<A NAME="IDX452"></A> <DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE> -<DD><A NAME="IDX452"></A> +<DD><A NAME="IDX453"></A> Add this digit to the argument already accumulating, or start a new argument. <KBD>M--</KBD> starts a negative argument. <P> -<A NAME="IDX453"></A> +<A NAME="IDX454"></A> <DT><CODE>universal-argument ()</CODE> -<DD><A NAME="IDX454"></A> +<DD><A NAME="IDX455"></A> This is another way to specify an argument. If this command is followed by one or more digits, optionally with a leading minus sign, those digits define the argument. @@ -11063,9 +11064,9 @@ By default, this is not bound to a key. <P> <DL COMPACT> -<A NAME="IDX455"></A> +<A NAME="IDX456"></A> <DT><CODE>complete (<KBD>TAB</KBD>)</CODE> -<DD><A NAME="IDX456"></A> +<DD><A NAME="IDX457"></A> Attempt to perform completion on the text before point. The actual completion performed is application-specific. Bash attempts completion treating the text as a variable (if the @@ -11075,25 +11076,25 @@ command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted. <P> -<A NAME="IDX457"></A> +<A NAME="IDX458"></A> <DT><CODE>possible-completions (M-?)</CODE> -<DD><A NAME="IDX458"></A> +<DD><A NAME="IDX459"></A> List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used for display to the value of <CODE>completion-display-width</CODE>, the value of the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order. <P> -<A NAME="IDX459"></A> +<A NAME="IDX460"></A> <DT><CODE>insert-completions (M-*)</CODE> -<DD><A NAME="IDX460"></A> +<DD><A NAME="IDX461"></A> Insert all completions of the text before point that would have been generated by <CODE>possible-completions</CODE>. <P> -<A NAME="IDX461"></A> +<A NAME="IDX462"></A> <DT><CODE>menu-complete ()</CODE> -<DD><A NAME="IDX462"></A> +<DD><A NAME="IDX463"></A> Similar to <CODE>complete</CODE>, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of <CODE>menu-complete</CODE> steps through the list @@ -11108,17 +11109,17 @@ This command is intended to be bound to <KBD>TAB</KBD>, but is unbound by default. <P> -<A NAME="IDX463"></A> +<A NAME="IDX464"></A> <DT><CODE>menu-complete-backward ()</CODE> -<DD><A NAME="IDX464"></A> +<DD><A NAME="IDX465"></A> Identical to <CODE>menu-complete</CODE>, but moves backward through the list of possible completions, as if <CODE>menu-complete</CODE> had been given a negative argument. <P> -<A NAME="IDX465"></A> +<A NAME="IDX466"></A> <DT><CODE>delete-char-or-list ()</CODE> -<DD><A NAME="IDX466"></A> +<DD><A NAME="IDX467"></A> Deletes the character under the cursor if not at the beginning or end of the line (like <CODE>delete-char</CODE>). If at the end of the line, behaves identically to @@ -11126,64 +11127,64 @@ If at the end of the line, behaves identically to This command is unbound by default. <P> -<A NAME="IDX467"></A> +<A NAME="IDX468"></A> <DT><CODE>complete-filename (M-/)</CODE> -<DD><A NAME="IDX468"></A> +<DD><A NAME="IDX469"></A> Attempt filename completion on the text before point. <P> -<A NAME="IDX469"></A> +<A NAME="IDX470"></A> <DT><CODE>possible-filename-completions (C-x /)</CODE> -<DD><A NAME="IDX470"></A> +<DD><A NAME="IDX471"></A> List the possible completions of the text before point, treating it as a filename. <P> -<A NAME="IDX471"></A> +<A NAME="IDX472"></A> <DT><CODE>complete-username (M-~)</CODE> -<DD><A NAME="IDX472"></A> +<DD><A NAME="IDX473"></A> Attempt completion on the text before point, treating it as a username. <P> -<A NAME="IDX473"></A> +<A NAME="IDX474"></A> <DT><CODE>possible-username-completions (C-x ~)</CODE> -<DD><A NAME="IDX474"></A> +<DD><A NAME="IDX475"></A> List the possible completions of the text before point, treating it as a username. <P> -<A NAME="IDX475"></A> +<A NAME="IDX476"></A> <DT><CODE>complete-variable (M-$)</CODE> -<DD><A NAME="IDX476"></A> +<DD><A NAME="IDX477"></A> Attempt completion on the text before point, treating it as a shell variable. <P> -<A NAME="IDX477"></A> +<A NAME="IDX478"></A> <DT><CODE>possible-variable-completions (C-x $)</CODE> -<DD><A NAME="IDX478"></A> +<DD><A NAME="IDX479"></A> List the possible completions of the text before point, treating it as a shell variable. <P> -<A NAME="IDX479"></A> +<A NAME="IDX480"></A> <DT><CODE>complete-hostname (M-@)</CODE> -<DD><A NAME="IDX480"></A> +<DD><A NAME="IDX481"></A> Attempt completion on the text before point, treating it as a hostname. <P> -<A NAME="IDX481"></A> +<A NAME="IDX482"></A> <DT><CODE>possible-hostname-completions (C-x @)</CODE> -<DD><A NAME="IDX482"></A> +<DD><A NAME="IDX483"></A> List the possible completions of the text before point, treating it as a hostname. <P> -<A NAME="IDX483"></A> +<A NAME="IDX484"></A> <DT><CODE>complete-command (M-!)</CODE> -<DD><A NAME="IDX484"></A> +<DD><A NAME="IDX485"></A> Attempt completion on the text before point, treating it as a command name. Command completion attempts to match the text against aliases, reserved words, shell @@ -11191,32 +11192,32 @@ functions, shell builtins, and finally executable filenames, in that order. <P> -<A NAME="IDX485"></A> +<A NAME="IDX486"></A> <DT><CODE>possible-command-completions (C-x !)</CODE> -<DD><A NAME="IDX486"></A> +<DD><A NAME="IDX487"></A> List the possible completions of the text before point, treating it as a command name. <P> -<A NAME="IDX487"></A> +<A NAME="IDX488"></A> <DT><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE> -<DD><A NAME="IDX488"></A> +<DD><A NAME="IDX489"></A> Attempt completion on the text before point, comparing the text against lines from the history list for possible completion matches. <P> -<A NAME="IDX489"></A> +<A NAME="IDX490"></A> <DT><CODE>dabbrev-expand ()</CODE> -<DD><A NAME="IDX490"></A> +<DD><A NAME="IDX491"></A> Attempt menu completion on the text before point, comparing the text against lines from the history list for possible completion matches. <P> -<A NAME="IDX491"></A> +<A NAME="IDX492"></A> <DT><CODE>complete-into-braces (M-{)</CODE> -<DD><A NAME="IDX492"></A> +<DD><A NAME="IDX493"></A> Perform filename completion and insert the list of possible completions enclosed within braces so the list is available to the shell (see section <A HREF="bashref.html#SEC30">3.5.1 Brace Expansion</A>). @@ -11243,22 +11244,22 @@ enclosed within braces so the list is available to the shell <!--docid::SEC115::--> <DL COMPACT> -<A NAME="IDX493"></A> +<A NAME="IDX494"></A> <DT><CODE>start-kbd-macro (C-x ()</CODE> -<DD><A NAME="IDX494"></A> +<DD><A NAME="IDX495"></A> Begin saving the characters typed into the current keyboard macro. <P> -<A NAME="IDX495"></A> +<A NAME="IDX496"></A> <DT><CODE>end-kbd-macro (C-x ))</CODE> -<DD><A NAME="IDX496"></A> +<DD><A NAME="IDX497"></A> Stop saving the characters typed into the current keyboard macro and save the definition. <P> -<A NAME="IDX497"></A> +<A NAME="IDX498"></A> <DT><CODE>call-last-kbd-macro (C-x e)</CODE> -<DD><A NAME="IDX498"></A> +<DD><A NAME="IDX499"></A> Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. <P> @@ -11284,87 +11285,87 @@ in the macro appear as if typed at the keyboard. <!--docid::SEC116::--> <DL COMPACT> -<A NAME="IDX499"></A> +<A NAME="IDX500"></A> <DT><CODE>re-read-init-file (C-x C-r)</CODE> -<DD><A NAME="IDX500"></A> +<DD><A NAME="IDX501"></A> Read in the contents of the <VAR>inputrc</VAR> file, and incorporate any bindings or variable assignments found there. <P> -<A NAME="IDX501"></A> +<A NAME="IDX502"></A> <DT><CODE>abort (C-g)</CODE> -<DD><A NAME="IDX502"></A> +<DD><A NAME="IDX503"></A> Abort the current editing command and ring the terminal's bell (subject to the setting of <CODE>bell-style</CODE>). <P> -<A NAME="IDX503"></A> +<A NAME="IDX504"></A> <DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE> -<DD><A NAME="IDX504"></A> +<DD><A NAME="IDX505"></A> If the metafied character <VAR>x</VAR> is lowercase, run the command that is bound to the corresponding uppercase character. <P> -<A NAME="IDX505"></A> +<A NAME="IDX506"></A> <DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE> -<DD><A NAME="IDX506"></A> +<DD><A NAME="IDX507"></A> Metafy the next character typed. This is for keyboards without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing <KBD>M-f</KBD>. <P> -<A NAME="IDX507"></A> +<A NAME="IDX508"></A> <DT><CODE>undo (C-_ or C-x C-u)</CODE> -<DD><A NAME="IDX508"></A> +<DD><A NAME="IDX509"></A> Incremental undo, separately remembered for each line. <P> -<A NAME="IDX509"></A> +<A NAME="IDX510"></A> <DT><CODE>revert-line (M-r)</CODE> -<DD><A NAME="IDX510"></A> +<DD><A NAME="IDX511"></A> Undo all changes made to this line. This is like executing the <CODE>undo</CODE> command enough times to get back to the beginning. <P> -<A NAME="IDX511"></A> +<A NAME="IDX512"></A> <DT><CODE>tilde-expand (M-&)</CODE> -<DD><A NAME="IDX512"></A> +<DD><A NAME="IDX513"></A> Perform tilde expansion on the current word. <P> -<A NAME="IDX513"></A> +<A NAME="IDX514"></A> <DT><CODE>set-mark (C-@)</CODE> -<DD><A NAME="IDX514"></A> +<DD><A NAME="IDX515"></A> Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. <P> -<A NAME="IDX515"></A> +<A NAME="IDX516"></A> <DT><CODE>exchange-point-and-mark (C-x C-x)</CODE> -<DD><A NAME="IDX516"></A> +<DD><A NAME="IDX517"></A> Swap the point with the mark. The current cursor position is set to the saved position, and the old cursor position is saved as the mark. <P> -<A NAME="IDX517"></A> +<A NAME="IDX518"></A> <DT><CODE>character-search (C-])</CODE> -<DD><A NAME="IDX518"></A> +<DD><A NAME="IDX519"></A> A character is read and point is moved to the next occurrence of that character. A negative count searches for previous occurrences. <P> -<A NAME="IDX519"></A> +<A NAME="IDX520"></A> <DT><CODE>character-search-backward (M-C-])</CODE> -<DD><A NAME="IDX520"></A> +<DD><A NAME="IDX521"></A> A character is read and point is moved to the previous occurrence of that character. A negative count searches for subsequent occurrences. <P> -<A NAME="IDX521"></A> +<A NAME="IDX522"></A> <DT><CODE>skip-csi-sequence ()</CODE> -<DD><A NAME="IDX522"></A> +<DD><A NAME="IDX523"></A> Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is @@ -11374,9 +11375,9 @@ stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. <P> -<A NAME="IDX523"></A> +<A NAME="IDX524"></A> <DT><CODE>insert-comment (M-#)</CODE> -<DD><A NAME="IDX524"></A> +<DD><A NAME="IDX525"></A> Without a numeric argument, the value of the <CODE>comment-begin</CODE> variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if @@ -11391,115 +11392,115 @@ If a numeric argument causes the comment character to be removed, the line will be executed by the shell. <P> -<A NAME="IDX525"></A> +<A NAME="IDX526"></A> <DT><CODE>dump-functions ()</CODE> -<DD><A NAME="IDX526"></A> +<DD><A NAME="IDX527"></A> Print all of the functions and their key bindings to the Readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an <VAR>inputrc</VAR> file. This command is unbound by default. <P> -<A NAME="IDX527"></A> +<A NAME="IDX528"></A> <DT><CODE>dump-variables ()</CODE> -<DD><A NAME="IDX528"></A> +<DD><A NAME="IDX529"></A> Print all of the settable variables and their values to the Readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an <VAR>inputrc</VAR> file. This command is unbound by default. <P> -<A NAME="IDX529"></A> +<A NAME="IDX530"></A> <DT><CODE>dump-macros ()</CODE> -<DD><A NAME="IDX530"></A> +<DD><A NAME="IDX531"></A> Print all of the Readline key sequences bound to macros and the strings they output. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an <VAR>inputrc</VAR> file. This command is unbound by default. <P> -<A NAME="IDX531"></A> +<A NAME="IDX532"></A> <DT><CODE>glob-complete-word (M-g)</CODE> -<DD><A NAME="IDX532"></A> +<DD><A NAME="IDX533"></A> The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to generate a list of matching file names for possible completions. <P> -<A NAME="IDX533"></A> +<A NAME="IDX534"></A> <DT><CODE>glob-expand-word (C-x *)</CODE> -<DD><A NAME="IDX534"></A> +<DD><A NAME="IDX535"></A> The word before point is treated as a pattern for pathname expansion, and the list of matching file names is inserted, replacing the word. If a numeric argument is supplied, a <SAMP>`*'</SAMP> is appended before pathname expansion. <P> -<A NAME="IDX535"></A> +<A NAME="IDX536"></A> <DT><CODE>glob-list-expansions (C-x g)</CODE> -<DD><A NAME="IDX536"></A> +<DD><A NAME="IDX537"></A> The list of expansions that would have been generated by <CODE>glob-expand-word</CODE> is displayed, and the line is redrawn. If a numeric argument is supplied, a <SAMP>`*'</SAMP> is appended before pathname expansion. <P> -<A NAME="IDX537"></A> +<A NAME="IDX538"></A> <DT><CODE>display-shell-version (C-x C-v)</CODE> -<DD><A NAME="IDX538"></A> +<DD><A NAME="IDX539"></A> Display version information about the current instance of Bash. <P> -<A NAME="IDX539"></A> +<A NAME="IDX540"></A> <DT><CODE>shell-expand-line (M-C-e)</CODE> -<DD><A NAME="IDX540"></A> +<DD><A NAME="IDX541"></A> Expand the line as the shell does. This performs alias and history expansion as well as all of the shell word expansions (see section <A HREF="bashref.html#SEC29">3.5 Shell Expansions</A>). <P> -<A NAME="IDX541"></A> +<A NAME="IDX542"></A> <DT><CODE>history-expand-line (M-^)</CODE> -<DD><A NAME="IDX542"></A> +<DD><A NAME="IDX543"></A> Perform history expansion on the current line. <P> -<A NAME="IDX543"></A> +<A NAME="IDX544"></A> <DT><CODE>magic-space ()</CODE> -<DD><A NAME="IDX544"></A> +<DD><A NAME="IDX545"></A> Perform history expansion on the current line and insert a space (see section <A HREF="bashref.html#SEC123">9.3 History Expansion</A>). <P> -<A NAME="IDX545"></A> +<A NAME="IDX546"></A> <DT><CODE>alias-expand-line ()</CODE> -<DD><A NAME="IDX546"></A> +<DD><A NAME="IDX547"></A> Perform alias expansion on the current line (see section <A HREF="bashref.html#SEC85">6.6 Aliases</A>). <P> -<A NAME="IDX547"></A> +<A NAME="IDX548"></A> <DT><CODE>history-and-alias-expand-line ()</CODE> -<DD><A NAME="IDX548"></A> +<DD><A NAME="IDX549"></A> Perform history and alias expansion on the current line. <P> -<A NAME="IDX549"></A> +<A NAME="IDX550"></A> <DT><CODE>insert-last-argument (M-. or M-_)</CODE> -<DD><A NAME="IDX550"></A> +<DD><A NAME="IDX551"></A> A synonym for <CODE>yank-last-arg</CODE>. <P> -<A NAME="IDX551"></A> +<A NAME="IDX552"></A> <DT><CODE>operate-and-get-next (C-o)</CODE> -<DD><A NAME="IDX552"></A> +<DD><A NAME="IDX553"></A> Accept the current line for execution and fetch the next line relative to the current line from the history for editing. Any argument is ignored. <P> -<A NAME="IDX553"></A> +<A NAME="IDX554"></A> <DT><CODE>edit-and-execute-command (C-xC-e)</CODE> -<DD><A NAME="IDX554"></A> +<DD><A NAME="IDX555"></A> Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke @@ -11750,7 +11751,7 @@ facilities. <DL COMPACT> <DT><CODE>compgen</CODE> -<DD><A NAME="IDX555"></A> +<DD><A NAME="IDX556"></A> <TABLE><tr><td> </td><td class=example><pre><CODE>compgen [<VAR>option</VAR>] [<VAR>word</VAR>]</CODE> </pre></td></tr></table><P> @@ -11776,7 +11777,7 @@ matches were generated. </P><P> <DT><CODE>complete</CODE> -<DD><A NAME="IDX556"></A> +<DD><A NAME="IDX557"></A> <TABLE><tr><td> </td><td class=example><pre><CODE>complete [-abcdefgjksuv] [-o <VAR>comp-option</VAR>] [-DE] [-A <VAR>action</VAR>] [-G <VAR>globpat</VAR>] [-W <VAR>wordlist</VAR>] [-F <VAR>function</VAR>] [-C <VAR>command</VAR>] [-X <VAR>filterpat</VAR>] [-P <VAR>prefix</VAR>] [-S <VAR>suffix</VAR>] <VAR>name</VAR> [<VAR>name</VAR> <small>...</small>]</CODE> @@ -12014,7 +12015,7 @@ an error occurs adding a completion specification. </P><P> <DT><CODE>compopt</CODE> -<DD><A NAME="IDX557"></A> +<DD><A NAME="IDX558"></A> <TABLE><tr><td> </td><td class=example><pre><CODE>compopt</CODE> [-o <VAR>option</VAR>] [-DE] [+o <VAR>option</VAR>] [<VAR>name</VAR>] </pre></td></tr></table>Modify completion options for each <VAR>name</VAR> according to the <VAR>option</VAR>s, or for the currently-executing completion if no <VAR>name</VAR>s @@ -12042,7 +12043,7 @@ specification exists, or an output error occurs. </DL> <P> -<A NAME="IDX558"></A> +<A NAME="IDX559"></A> </P><P> <A NAME="Using History Interactively"></A> @@ -12187,7 +12188,7 @@ history list and history file. <DL COMPACT> <DT><CODE>fc</CODE> -<DD><A NAME="IDX559"></A> +<DD><A NAME="IDX560"></A> <TABLE><tr><td> </td><td class=example><pre><CODE>fc [-e <VAR>ename</VAR>] [-lnr] [<VAR>first</VAR>] [<VAR>last</VAR>]</CODE> <CODE>fc -s [<VAR>pat</VAR>=<VAR>rep</VAR>] [<VAR>command</VAR>]</CODE> </pre></td></tr></table><P> @@ -12221,7 +12222,7 @@ and typing <SAMP>`r'</SAMP> re-executes the last command (see section <A HREF="b </P><P> <DT><CODE>history</CODE> -<DD><A NAME="IDX560"></A> +<DD><A NAME="IDX561"></A> <TABLE><tr><td> </td><td class=example><pre>history [<VAR>n</VAR>] history -c history -d <VAR>offset</VAR> @@ -12394,7 +12395,9 @@ writing the history file. An event designator is a reference to a command line entry in the history list. -<A NAME="IDX561"></A> +Unless the reference is absolute, events are relative to the current +position in the history list. +<A NAME="IDX562"></A> </P><P> <DL COMPACT> @@ -12418,11 +12421,16 @@ the end of the line, <SAMP>`='</SAMP> or <SAMP>`('</SAMP> (when the <P> <DT><CODE>!<VAR>string</VAR></CODE> -<DD>Refer to the most recent command starting with <VAR>string</VAR>. +<DD>Refer to the most recent command +preceding the current position in the history list +starting with <VAR>string</VAR>. <P> <DT><CODE>!?<VAR>string</VAR>[?]</CODE> -<DD>Refer to the most recent command containing <VAR>string</VAR>. The trailing +<DD>Refer to the most recent command +preceding the current position in the history list +containing <VAR>string</VAR>. +The trailing <SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by a newline. <P> @@ -14661,9 +14669,9 @@ to permit their use in free software. <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX92"><CODE>caller</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX71"><CODE>cd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX93"><CODE>command</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX555"><CODE>compgen</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX556"><CODE>complete</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX557"><CODE>compopt</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX556"><CODE>compgen</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX557"><CODE>complete</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX558"><CODE>compopt</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX72"><CODE>continue</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="bt_D"></A>D</TH><TD></TD><TD></TD></TR> @@ -14680,7 +14688,7 @@ to permit their use in free software. <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX76"><CODE>export</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="bt_F"></A>F</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX559"><CODE>fc</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC122">9.2 Bash History Builtins</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX560"><CODE>fc</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC122">9.2 Bash History Builtins</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX306"><CODE>fg</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="bt_G"></A>G</TH><TD></TD><TD></TD></TR> @@ -14689,7 +14697,7 @@ to permit their use in free software. <TR><TH><A NAME="bt_H"></A>H</TH><TD></TD><TD></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX78"><CODE>hash</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX97"><CODE>help</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX560"><CODE>history</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC122">9.2 Bash History Builtins</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX561"><CODE>history</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC122">9.2 Bash History Builtins</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="bt_J"></A>J</TH><TD></TD><TD></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX307"><CODE>jobs</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> @@ -15207,6 +15215,7 @@ to permit their use in free software. <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX339"><CODE>mark-modified-lines</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX340"><CODE>mark-symlinked-directories</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX341"><CODE>match-hidden-files</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX342"><CODE>menu-complete-display-prefix</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX336"><CODE>meta-flag</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="vr_O"></A>O</TH><TD></TD><TD></TD></TR> @@ -15220,10 +15229,10 @@ to permit their use in free software. <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX125"><CODE>OPTIND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX258"><CODE>OSTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX259"><CODE>OSTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX342"><CODE>output-meta</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX343"><CODE>output-meta</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX343"><CODE>page-completions</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX344"><CODE>page-completions</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX126"><CODE>PATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX127"><CODE>PATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX260"><CODE>PIPESTATUS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> @@ -15256,7 +15265,7 @@ to permit their use in free software. <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX281"><CODE>READLINE_POINT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX282"><CODE>REPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX283"><CODE>REPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX344"><CODE>revert-all-at-newline</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX345"><CODE>revert-all-at-newline</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX284"><CODE>SECONDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> @@ -15267,9 +15276,9 @@ to permit their use in free software. <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX289"><CODE>SHELLOPTS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX290"><CODE>SHLVL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX291"><CODE>SHLVL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX345"><CODE>show-all-if-ambiguous</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX346"><CODE>show-all-if-unmodified</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX347"><CODE>skip-completed-text</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX346"><CODE>show-all-if-ambiguous</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX347"><CODE>show-all-if-unmodified</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX348"><CODE>skip-completed-text</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="vr_T"></A>T</TH><TD></TD><TD></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX22"><CODE>TEXTDOMAIN</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD></TR> @@ -15286,7 +15295,7 @@ to permit their use in free software. <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX299"><CODE>UID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="vr_V"></A>V</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX348"><CODE>visible-stats</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX349"><CODE>visible-stats</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> </TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#vr_!" style="text-decoration:none"><b>!</b></A> @@ -15408,250 +15417,250 @@ to permit their use in free software. <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX501"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX502"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX369"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX503"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX370"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX545"><CODE>alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX371"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX546"><CODE>alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX547"><CODE>alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX355"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX356"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX397"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX357"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX398"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX419"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX399"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX420"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX431"><CODE>backward-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX421"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX432"><CODE>backward-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX427"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX433"><CODE>backward-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX428"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX359"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX429"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX360"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX375"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX361"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX376"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX349"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX377"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX350"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX351"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX497"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX498"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX413"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX499"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX414"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX517"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX415"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX518"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX519"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX519"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX520"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX365"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX521"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX366"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX455"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX367"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX456"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX483"><CODE>complete-command (M-!)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX457"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX484"><CODE>complete-command (M-!)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX467"><CODE>complete-filename (M-/)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX485"><CODE>complete-command (M-!)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX468"><CODE>complete-filename (M-/)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX479"><CODE>complete-hostname (M-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX469"><CODE>complete-filename (M-/)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX480"><CODE>complete-hostname (M-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX491"><CODE>complete-into-braces (M-{)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX481"><CODE>complete-hostname (M-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX492"><CODE>complete-into-braces (M-{)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX471"><CODE>complete-username (M-~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX493"><CODE>complete-into-braces (M-{)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX472"><CODE>complete-username (M-~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX475"><CODE>complete-variable (M-$)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX473"><CODE>complete-username (M-~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX476"><CODE>complete-variable (M-$)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX443"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX477"><CODE>complete-variable (M-$)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX444"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX445"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX445"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX446"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX441"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX447"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX442"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX443"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX489"><CODE>dabbrev-expand ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX490"><CODE>dabbrev-expand ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX395"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX491"><CODE>dabbrev-expand ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX396"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX465"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX397"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX466"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX437"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX467"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX438"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX451"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX439"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX452"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX537"><CODE>display-shell-version (C-x C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX453"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX538"><CODE>display-shell-version (C-x C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX503"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX539"><CODE>display-shell-version (C-x C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX504"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX411"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX505"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX412"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX525"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX413"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX526"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX529"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX527"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX530"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX527"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX531"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX528"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX487"><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX529"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX488"><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX489"><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX553"><CODE>edit-and-execute-command (C-xC-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX554"><CODE>edit-and-execute-command (C-xC-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX495"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX555"><CODE>edit-and-execute-command (C-xC-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX496"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX377"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX497"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX378"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX351"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX379"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX352"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX515"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX353"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX516"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX517"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX399"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX400"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX353"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX401"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX354"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX381"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX355"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX382"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX357"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX383"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX358"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX359"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_G"></A>G</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX531"><CODE>glob-complete-word (M-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX532"><CODE>glob-complete-word (M-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX533"><CODE>glob-expand-word (C-x *)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX533"><CODE>glob-complete-word (M-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX534"><CODE>glob-expand-word (C-x *)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX535"><CODE>glob-list-expansions (C-x g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX535"><CODE>glob-expand-word (C-x *)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX536"><CODE>glob-list-expansions (C-x g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX537"><CODE>glob-list-expansions (C-x g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX547"><CODE>history-and-alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX548"><CODE>history-and-alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX541"><CODE>history-expand-line (M-^)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX549"><CODE>history-and-alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX542"><CODE>history-expand-line (M-^)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX389"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX543"><CODE>history-expand-line (M-^)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX390"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX387"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX391"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX388"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX389"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX523"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX524"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX459"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX525"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX460"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX549"><CODE>insert-last-argument (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX461"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX550"><CODE>insert-last-argument (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX551"><CODE>insert-last-argument (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX417"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX418"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX439"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX419"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX440"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX423"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX441"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX424"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX425"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX425"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX426"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX427"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX543"><CODE>magic-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX544"><CODE>magic-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX461"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX545"><CODE>magic-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX462"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX463"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX463"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX464"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX465"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX373"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX374"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX385"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX375"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX386"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX383"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX387"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX384"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX385"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX551"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX552"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX415"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX553"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX416"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX417"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX485"><CODE>possible-command-completions (C-x !)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX486"><CODE>possible-command-completions (C-x !)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX457"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX487"><CODE>possible-command-completions (C-x !)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX458"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX469"><CODE>possible-filename-completions (C-x /)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX459"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX470"><CODE>possible-filename-completions (C-x /)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX481"><CODE>possible-hostname-completions (C-x @)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX471"><CODE>possible-filename-completions (C-x /)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX482"><CODE>possible-hostname-completions (C-x @)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX473"><CODE>possible-username-completions (C-x ~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX483"><CODE>possible-hostname-completions (C-x @)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX474"><CODE>possible-username-completions (C-x ~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX477"><CODE>possible-variable-completions (C-x $)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX475"><CODE>possible-username-completions (C-x ~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX478"><CODE>possible-variable-completions (C-x $)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX505"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX479"><CODE>possible-variable-completions (C-x $)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX506"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX371"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX507"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX372"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX373"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX401"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX402"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX403"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX499"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX500"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX367"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX501"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX368"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX379"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX369"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX380"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX509"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX381"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX510"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX511"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX403"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX404"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX513"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX405"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX514"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX363"><CODE>shell-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX515"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX364"><CODE>shell-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX539"><CODE>shell-expand-line (M-C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX365"><CODE>shell-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX540"><CODE>shell-expand-line (M-C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX361"><CODE>shell-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX541"><CODE>shell-expand-line (M-C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX362"><CODE>shell-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX429"><CODE>shell-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX363"><CODE>shell-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX430"><CODE>shell-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX521"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX431"><CODE>shell-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX522"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX493"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX523"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX494"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX495"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX511"><CODE>tilde-expand (M-&#38;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX512"><CODE>tilde-expand (M-&#38;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX405"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX513"><CODE>tilde-expand (M-&#38;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX406"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX407"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX407"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX408"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX409"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX507"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX508"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX453"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX509"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX454"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX435"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX455"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX436"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX421"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX437"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX422"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX433"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX423"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX434"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX409"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX435"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX410"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX411"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX447"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX448"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX393"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX449"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX394"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX391"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX395"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX392"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX449"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX393"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX450"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX451"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> </TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#fn_A" style="text-decoration:none"><b>A</b></A> @@ -15826,10 +15835,10 @@ to permit their use in free software. <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC122">history builtins</A></TD><TD valign=top><A HREF="bashref.html#SEC122">9.2 Bash History Builtins</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX561">history events</A></TD><TD valign=top><A HREF="bashref.html#SEC124">9.3.1 Event Designators</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX562">history events</A></TD><TD valign=top><A HREF="bashref.html#SEC124">9.3.1 Event Designators</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC123">history expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC123">9.3 History Expansion</A></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC121">history list</A></TD><TD valign=top><A HREF="bashref.html#SEC121">9.1 Bash History Facilities</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX558">History, how to use</A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX559">History, how to use</A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> <TR><TD COLSPAN=3> <HR></TD></TR> <TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR> <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX11">identifier</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> @@ -16357,7 +16366,7 @@ to permit their use in free software. <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> </TR></TABLE> <H1>About this document</H1> -This document was generated by <I>Chet Ramey</I> on <I>July, 21 2010</I> +This document was generated by <I>Chet Ramey</I> on <I>October, 25 2010</I> using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html "><I>texi2html</I></A> <P></P> @@ -16519,7 +16528,7 @@ the following structure: <BR> <FONT SIZE="-1"> This document was generated -by <I>Chet Ramey</I> on <I>July, 21 2010</I> +by <I>Chet Ramey</I> on <I>October, 25 2010</I> using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html "><I>texi2html</I></A> diff --git a/doc/bashref.info b/doc/bashref.info index 39d98212..59245f9a 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 4.13 from /Users/chet/src/bash/src/doc/bashref.texi. This text is a brief description of the features that are present in -the Bash shell (version 4.2, 21 July 2010). +the Bash shell (version 4.2, 20 October 2010). - This is Edition 4.2, last updated 21 July 2010, of `The GNU Bash + This is Edition 4.2, last updated 20 October 2010, of `The GNU Bash Reference Manual', for `Bash', Version 4.2. Copyright (C) 1988-2010 Free Software Foundation, Inc. @@ -38,9 +38,9 @@ Bash Features ************* This text is a brief description of the features that are present in -the Bash shell (version 4.2, 21 July 2010). +the Bash shell (version 4.2, 20 October 2010). - This is Edition 4.2, last updated 21 July 2010, of `The GNU Bash + This is Edition 4.2, last updated 20 October 2010, of `The GNU Bash Reference Manual', for `Bash', Version 4.2. Bash contains features that appear in other popular shells, and some @@ -994,7 +994,7 @@ by the command (*note Redirections::). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. - The process id of the shell spawned to execute the coprocess is + The process ID of the shell spawned to execute the coprocess is available as the value of the variable NAME_PID. The `wait' builtin command may be used to wait for the coprocess to terminate. @@ -1193,7 +1193,7 @@ and `local' builtin commands. In the context where an assignment statement is assigning a value to a shell variable or array index (*note Arrays::), the `+=' operator can be used to append to or add to the variable's previous value. When -`+=' is applied to a variable for which the integer attribute has been +`+=' is applied to a variable for which the INTEGER attribute has been set, VALUE is evaluated as an arithmetic expression and added to the variable's current value, which is also evaluated. When `+=' is applied to an array variable using compound assignment (*note @@ -1496,9 +1496,9 @@ 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 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. +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. @@ -2637,7 +2637,7 @@ standard. When the end of options is encountered, `getopts' exits with a return value greater than zero. `OPTIND' is set to the index of - the first non-option argument, and `name' is set to `?'. + the first non-option argument, and NAME is set to `?'. `getopts' normally parses the positional parameters, but if more arguments are given in ARGS, `getopts' parses those instead. @@ -3568,8 +3568,8 @@ allows you to change the values of shell options and set the positional parameters, or to display the names and values of shell variables. `set' - set [--abefhkmnptuvxBCEHPT] [-o OPTION] [ARGUMENT ...] - set [+abefhkmnptuvxBCEHPT] [+o OPTION] [ARGUMENT ...] + set [--abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [ARGUMENT ...] + set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [ARGUMENT ...] If no options or arguments are supplied, `set' displays the names and values of all shell variables and functions, sorted according @@ -3911,18 +3911,18 @@ This builtin allows you to change additional shell optional behavior. `compat31' If set, Bash changes its behavior to that of version 3.1 with - respect to quoted arguments to the conditional command's =~ + respect to quoted arguments to the conditional command's `=~' operator. `compat32' If set, Bash changes its behavior to that of version 3.2 with respect to locale-specific string comparison when using the - conditional command's < and > operators. + conditional command's `<' and `>' operators. `compat40' If set, Bash changes its behavior to that of version 4.0 with respect to locale-specific string comparison when using the - conditional command's < and > operators and the effect of + conditional command's `<' and `>' operators and the effect of interrupting a command list. `compat41' @@ -4183,9 +4183,9 @@ In some cases, Bash assigns a default value to the variable. splits words as part of expansion. `MAIL' - If this parameter is set to a filename and the `MAILPATH' variable - is not set, Bash informs the user of the arrival of mail in the - specified file. + If this parameter is set to a filename or directory name and the + `MAILPATH' variable is not set, Bash informs the user of the + arrival of mail in the specified file or Maildir-format directory. `MAILPATH' A colon-separated list of filenames which the shell periodically @@ -4243,13 +4243,13 @@ Variables::). startup files. This variable is readonly. `BASHPID' - Expands to the process id of the current Bash process. This + Expands to the process ID of the current Bash process. This differs from `$$' under certain circumstances, such as subshells that do not require Bash to be re-initialized. `BASH_ALIASES' An associative array variable whose members correspond to the - internal list of aliases as maintained by the `alias' builtin + internal list of aliases as maintained by the `alias' builtin. (*note Bourne Shell Builtins::). Elements added to this array appear in the alias list; unsetting array elements cause aliases to be removed from the alias list. @@ -4434,7 +4434,7 @@ Variables::). `EMACS' If Bash 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. + Emacs shell buffer and disables line editing. `ENV' Similar to `BASH_ENV'; used when the shell is invoked in POSIX @@ -5064,14 +5064,14 @@ Invoked by remote shell daemon .............................. Bash attempts to determine when it is being run with its standard input -connected to a a network connection, as if by the remote shell daemon, -usually `rshd', or the secure shell daemon `sshd'. If Bash determines -it is being run in this fashion, it reads and executes commands from -`~/.bashrc', if that file exists and is readable. It will not do this -if invoked as `sh'. The `--norc' option may be used to inhibit this -behavior, and the `--rcfile' option may be used to force another file -to be read, but `rshd' does not generally invoke the shell with those -options or allow them to be specified. +connected to a network connection, as when executed by the remote shell +daemon, usually `rshd', or the secure shell daemon `sshd'. If Bash +determines it is being run in this fashion, it reads and executes +commands from `~/.bashrc', if that file exists and is readable. It +will not do this if invoked as `sh'. The `--norc' option may be used +to inhibit this behavior, and the `--rcfile' option may be used to +force another file to be read, but `rshd' does not generally invoke the +shell with those options or allow them to be specified. Invoked with unequal effective and real UID/GIDs ................................................ @@ -5436,7 +5436,7 @@ expansion syntax. The value of a variable is evaluated as an arithmetic expression when it is referenced, or when a variable which has been given the INTEGER attribute using `declare -i' is assigned a value. A null value evaluates to 0. A shell variable need not have -its integer attribute turned on to be used in an expression. +its INTEGER attribute turned on to be used in an expression. Constants with a leading 0 are interpreted as octal numbers. A leading `0x' or `0X' denotes hexadecimal. Otherwise, numbers take the @@ -5954,17 +5954,15 @@ startup files. options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 23. If `CDPATH' is set, the `cd' builtin will not implicitly append - the current directory to it. This means that `cd' will fail if no - valid directory name can be constructed from any of the entries in - `$CDPATH', even if the a directory with the same name as the name - given as an argument to `cd' exists in the current directory. - - 24. 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. + 24. A non-interactive shell exists 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. + 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. @@ -6015,35 +6013,32 @@ startup files. argument does not refer to an existing directory, `cd' will fail instead of falling back to PHYSICAL mode. - 39. When the `pwd' builtin is supplied the `-P' option, it resets - `$PWD' to a pathname containing no symlinks. - - 40. The `pwd' builtin verifies that the value it prints is the same as + 39. 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. - 41. When listing the history, the `fc' builtin does not include an + 40. When listing the history, the `fc' builtin does not include an indication of whether or not a history entry has been modified. - 42. The default editor used by `fc' is `ed'. + 41. The default editor used by `fc' is `ed'. - 43. The `type' and `command' builtins will not report a non-executable + 42. 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'. - 44. The `vi' editing mode will invoke the `vi' editor directly when + 43. The `vi' editing mode will invoke the `vi' editor directly when the `v' command is run, instead of checking `$VISUAL' and `$EDITOR'. - 45. When the `xpg_echo' option is enabled, Bash does not attempt to + 44. 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. - 46. The `ulimit' builtin uses a block size of 512 bytes for the `-c' + 45. The `ulimit' builtin uses a block size of 512 bytes for the `-c' and `-f' options. - 47. The arrival of `SIGCHLD' when a trap is set on `SIGCHLD' does not + 46. 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. @@ -6308,7 +6303,7 @@ Command line editing is enabled by default when using an interactive shell, unless the `--noediting' option is supplied at shell invocation. Line editing is also used when using the `-e' option to the `read' builtin command (*note Bash Builtins::). By default, the line editing -commands are similar to those of emacs. A vi-style line editing +commands are similar to those of Emacs. A vi-style line editing interface is also available. Line editing can be enabled at any time using the `-o emacs' or `-o vi' options to the `set' builtin command (*note The Set Builtin::), or disabled using the `+o emacs' or `+o vi' @@ -6802,6 +6797,11 @@ Variable Settings `.' must be supplied by the user in the filename to be completed. This variable is `on' by default. + `menu-complete-display-prefix' + If set to `on', menu completion displays the common prefix of + the list of possible completions (which may be empty) before + cycling through the list. The default is `off'. + `output-meta' If set to `on', Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape @@ -8341,7 +8341,8 @@ File: bashref.info, Node: Event Designators, Next: Word Designators, Up: Hist ----------------------- An event designator is a reference to a command line entry in the -history list. +history list. Unless the reference is absolute, events are relative to +the current position in the history list. `!' Start a history substitution, except when followed by a space, tab, @@ -8358,12 +8359,13 @@ history list. Refer to the previous command. This is a synonym for `!-1'. `!STRING' - Refer to the most recent command starting with STRING. + Refer to the most recent command preceding the current position in + the history list starting with STRING. `!?STRING[?]' - Refer to the most recent command containing STRING. The trailing - `?' may be omitted if the STRING is followed immediately by a - newline. + Refer to the most recent command preceding the current position in + the history list containing STRING. The trailing `?' may be + omitted if the STRING is followed immediately by a newline. `^STRING1^STRING2^' Quick Substitution. Repeat the last command, replacing STRING1 @@ -10137,6 +10139,8 @@ D.3 Parameter and Variable Index (line 177) * match-hidden-files: Readline Init File Syntax. (line 182) +* menu-complete-display-prefix: Readline Init File Syntax. + (line 189) * meta-flag: Readline Init File Syntax. (line 145) * OLDPWD: Bash Variables. (line 436) @@ -10147,9 +10151,9 @@ D.3 Parameter and Variable Index (line 38) * OSTYPE: Bash Variables. (line 443) * output-meta: Readline Init File Syntax. - (line 189) -* page-completions: Readline Init File Syntax. (line 194) +* page-completions: Readline Init File Syntax. + (line 199) * PATH: Bourne Shell Variables. (line 42) * PIPESTATUS: Bash Variables. (line 446) @@ -10169,17 +10173,17 @@ D.3 Parameter and Variable Index * READLINE_POINT: Bash Variables. (line 497) * REPLY: Bash Variables. (line 501) * revert-all-at-newline: Readline Init File Syntax. - (line 204) + (line 209) * SECONDS: Bash Variables. (line 504) * SHELL: Bash Variables. (line 510) * SHELLOPTS: Bash Variables. (line 515) * SHLVL: Bash Variables. (line 524) * show-all-if-ambiguous: Readline Init File Syntax. - (line 210) + (line 215) * show-all-if-unmodified: Readline Init File Syntax. - (line 216) + (line 221) * skip-completed-text: Readline Init File Syntax. - (line 225) + (line 230) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) * TIMEFORMAT: Bash Variables. (line 529) @@ -10187,7 +10191,7 @@ D.3 Parameter and Variable Index * TMPDIR: Bash Variables. (line 579) * UID: Bash Variables. (line 583) * visible-stats: Readline Init File Syntax. - (line 238) + (line 243) File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -10374,7 +10378,7 @@ D.5 Concept Index * functions, shell: Shell Functions. (line 6) * history builtins: Bash History Builtins. (line 6) -* history events: Event Designators. (line 7) +* history events: Event Designators. (line 8) * history expansion: History Interaction. (line 6) * history list: Bash History Facilities. (line 6) @@ -10456,133 +10460,133 @@ D.5 Concept Index Tag Table: -Node: Top1338 -Node: Introduction3169 -Node: What is Bash?3397 -Node: What is a shell?4510 -Node: Definitions7050 -Node: Basic Shell Features9968 -Node: Shell Syntax11187 -Node: Shell Operation12217 -Node: Quoting13511 -Node: Escape Character14814 -Node: Single Quotes15299 -Node: Double Quotes15647 -Node: ANSI-C Quoting16772 -Node: Locale Translation18016 -Node: Comments18912 -Node: Shell Commands19530 -Node: Simple Commands20402 -Node: Pipelines21033 -Node: Lists23727 -Node: Compound Commands25456 -Node: Looping Constructs26260 -Node: Conditional Constructs28719 -Node: Command Grouping36832 -Node: Coprocesses38311 -Node: GNU Parallel39976 -Node: Shell Functions42444 -Node: Shell Parameters47388 -Node: Positional Parameters49804 -Node: Special Parameters50704 -Node: Shell Expansions53668 -Node: Brace Expansion55593 -Node: Tilde Expansion58348 -Node: Shell Parameter Expansion60699 -Node: Command Substitution69834 -Node: Arithmetic Expansion71167 -Node: Process Substitution72017 -Node: Word Splitting73067 -Node: Filename Expansion74690 -Node: Pattern Matching76829 -Node: Quote Removal80468 -Node: Redirections80763 -Node: Executing Commands89288 -Node: Simple Command Expansion89958 -Node: Command Search and Execution91888 -Node: Command Execution Environment94225 -Node: Environment97211 -Node: Exit Status98871 -Node: Signals100492 -Node: Shell Scripts102460 -Node: Shell Builtin Commands104978 -Node: Bourne Shell Builtins107006 -Node: Bash Builtins124684 -Node: Modifying Shell Behavior150898 -Node: The Set Builtin151243 -Node: The Shopt Builtin160767 -Node: Special Builtins172722 -Node: Shell Variables173701 -Node: Bourne Shell Variables174141 -Node: Bash Variables176122 -Node: Bash Features201046 -Node: Invoking Bash201929 -Node: Bash Startup Files207693 -Node: Interactive Shells212705 -Node: What is an Interactive Shell?213115 -Node: Is this Shell Interactive?213764 -Node: Interactive Shell Behavior214579 -Node: Bash Conditional Expressions217859 -Node: Shell Arithmetic221607 -Node: Aliases224366 -Node: Arrays226938 -Node: The Directory Stack231053 -Node: Directory Stack Builtins231767 -Node: Printing a Prompt234659 -Node: The Restricted Shell237411 -Node: Bash POSIX Mode239243 -Node: Job Control248173 -Node: Job Control Basics248633 -Node: Job Control Builtins253350 -Node: Job Control Variables257714 -Node: Command Line Editing258872 -Node: Introduction and Notation260439 -Node: Readline Interaction262061 -Node: Readline Bare Essentials263252 -Node: Readline Movement Commands265041 -Node: Readline Killing Commands266006 -Node: Readline Arguments267926 -Node: Searching268970 -Node: Readline Init File271156 -Node: Readline Init File Syntax272303 -Node: Conditional Init Constructs287407 -Node: Sample Init File289940 -Node: Bindable Readline Commands293057 -Node: Commands For Moving294264 -Node: Commands For History295408 -Node: Commands For Text298563 -Node: Commands For Killing301236 -Node: Numeric Arguments303687 -Node: Commands For Completion304826 -Node: Keyboard Macros309018 -Node: Miscellaneous Commands309589 -Node: Readline vi Mode315395 -Node: Programmable Completion316302 -Node: Programmable Completion Builtins323512 -Node: Using History Interactively332648 -Node: Bash History Facilities333332 -Node: Bash History Builtins336246 -Node: History Interaction340103 -Node: Event Designators342808 -Node: Word Designators343823 -Node: Modifiers345462 -Node: Installing Bash346866 -Node: Basic Installation348003 -Node: Compilers and Options350695 -Node: Compiling For Multiple Architectures351436 -Node: Installation Names353100 -Node: Specifying the System Type353918 -Node: Sharing Defaults354634 -Node: Operation Controls355307 -Node: Optional Features356265 -Node: Reporting Bugs365824 -Node: Major Differences From The Bourne Shell367025 -Node: GNU Free Documentation License383712 -Node: Indexes408908 -Node: Builtin Index409362 -Node: Reserved Word Index416189 -Node: Variable Index418637 -Node: Function Index431591 -Node: Concept Index438600 +Node: Top1344 +Node: Introduction3181 +Node: What is Bash?3409 +Node: What is a shell?4522 +Node: Definitions7062 +Node: Basic Shell Features9980 +Node: Shell Syntax11199 +Node: Shell Operation12229 +Node: Quoting13523 +Node: Escape Character14826 +Node: Single Quotes15311 +Node: Double Quotes15659 +Node: ANSI-C Quoting16784 +Node: Locale Translation18028 +Node: Comments18924 +Node: Shell Commands19542 +Node: Simple Commands20414 +Node: Pipelines21045 +Node: Lists23739 +Node: Compound Commands25468 +Node: Looping Constructs26272 +Node: Conditional Constructs28731 +Node: Command Grouping36844 +Node: Coprocesses38323 +Node: GNU Parallel39988 +Node: Shell Functions42456 +Node: Shell Parameters47400 +Node: Positional Parameters49816 +Node: Special Parameters50716 +Node: Shell Expansions53680 +Node: Brace Expansion55605 +Node: Tilde Expansion58360 +Node: Shell Parameter Expansion60711 +Node: Command Substitution69846 +Node: Arithmetic Expansion71179 +Node: Process Substitution72029 +Node: Word Splitting73079 +Node: Filename Expansion74702 +Node: Pattern Matching76841 +Node: Quote Removal80480 +Node: Redirections80775 +Node: Executing Commands89300 +Node: Simple Command Expansion89970 +Node: Command Search and Execution91900 +Node: Command Execution Environment94237 +Node: Environment97223 +Node: Exit Status98883 +Node: Signals100504 +Node: Shell Scripts102472 +Node: Shell Builtin Commands104990 +Node: Bourne Shell Builtins107018 +Node: Bash Builtins124694 +Node: Modifying Shell Behavior150908 +Node: The Set Builtin151253 +Node: The Shopt Builtin160787 +Node: Special Builtins172752 +Node: Shell Variables173731 +Node: Bourne Shell Variables174171 +Node: Bash Variables176198 +Node: Bash Features201123 +Node: Invoking Bash202006 +Node: Bash Startup Files207770 +Node: Interactive Shells212791 +Node: What is an Interactive Shell?213201 +Node: Is this Shell Interactive?213850 +Node: Interactive Shell Behavior214665 +Node: Bash Conditional Expressions217945 +Node: Shell Arithmetic221693 +Node: Aliases224452 +Node: Arrays227024 +Node: The Directory Stack231139 +Node: Directory Stack Builtins231853 +Node: Printing a Prompt234745 +Node: The Restricted Shell237497 +Node: Bash POSIX Mode239329 +Node: Job Control247990 +Node: Job Control Basics248450 +Node: Job Control Builtins253167 +Node: Job Control Variables257531 +Node: Command Line Editing258689 +Node: Introduction and Notation260256 +Node: Readline Interaction261878 +Node: Readline Bare Essentials263069 +Node: Readline Movement Commands264858 +Node: Readline Killing Commands265823 +Node: Readline Arguments267743 +Node: Searching268787 +Node: Readline Init File270973 +Node: Readline Init File Syntax272120 +Node: Conditional Init Constructs287462 +Node: Sample Init File289995 +Node: Bindable Readline Commands293112 +Node: Commands For Moving294319 +Node: Commands For History295463 +Node: Commands For Text298618 +Node: Commands For Killing301291 +Node: Numeric Arguments303742 +Node: Commands For Completion304881 +Node: Keyboard Macros309073 +Node: Miscellaneous Commands309644 +Node: Readline vi Mode315450 +Node: Programmable Completion316357 +Node: Programmable Completion Builtins323567 +Node: Using History Interactively332703 +Node: Bash History Facilities333387 +Node: Bash History Builtins336301 +Node: History Interaction340158 +Node: Event Designators342863 +Node: Word Designators344085 +Node: Modifiers345724 +Node: Installing Bash347128 +Node: Basic Installation348265 +Node: Compilers and Options350957 +Node: Compiling For Multiple Architectures351698 +Node: Installation Names353362 +Node: Specifying the System Type354180 +Node: Sharing Defaults354896 +Node: Operation Controls355569 +Node: Optional Features356527 +Node: Reporting Bugs366086 +Node: Major Differences From The Bourne Shell367287 +Node: GNU Free Documentation License383974 +Node: Indexes409170 +Node: Builtin Index409624 +Node: Reserved Word Index416451 +Node: Variable Index418899 +Node: Function Index431994 +Node: Concept Index439003 End Tag Table diff --git a/doc/bashref.log b/doc/bashref.log index 8b8bc8b5..242e1f59 100644 --- a/doc/bashref.log +++ b/doc/bashref.log @@ -1,4 +1,4 @@ -This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 21 JUL 2010 08:54 +This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 25 OCT 2010 12:00 **/Users/chet/src/bash/src/doc/bashref.texi (/Users/chet/src/bash/src/doc/bashref.texi (./texinfo.tex Loading texinfo [version 2009-01-18.17]: @@ -260,7 +260,7 @@ rs@texttt ] [-p @textttsl prompt@texttt ] [-t @textttsl time- [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] Chapter 5 [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] Chapter 6 [72] -Overfull \hbox (51.96864pt too wide) in paragraph at lines 5483--5483 +Overfull \hbox (51.96864pt too wide) in paragraph at lines 5485--5485 []@texttt bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@t exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- @@ -273,7 +273,7 @@ exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- .etc. -Overfull \hbox (76.23077pt too wide) in paragraph at lines 5484--5484 +Overfull \hbox (76.23077pt too wide) in paragraph at lines 5486--5486 []@texttt bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@texttt ] [-O @textttsl shopt_option@texttt ] -c @textttsl string @texttt [@textttsl ar - @@ -287,7 +287,7 @@ Overfull \hbox (76.23077pt too wide) in paragraph at lines 5484--5484 .etc. -Overfull \hbox (34.72258pt too wide) in paragraph at lines 5485--5485 +Overfull \hbox (34.72258pt too wide) in paragraph at lines 5487--5487 []@texttt bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@text tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- @@ -300,7 +300,7 @@ tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- .etc. [73] [74] -Underfull \hbox (badness 2245) in paragraph at lines 5658--5660 +Underfull \hbox (badness 2245) in paragraph at lines 5660--5662 []@textrm When a lo-gin shell ex-its, Bash reads and ex-e-cutes com-mands from the file @@ -313,7 +313,7 @@ the file .etc. [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] -Underfull \hbox (badness 2521) in paragraph at lines 6834--6837 +Underfull \hbox (badness 2521) in paragraph at lines 6829--6832 @textrm `@texttt --enable-strict-posix-default[]@textrm '[] to @texttt configur e[] @textrm when build-ing (see Sec-tion 10.8 @@ -341,7 +341,7 @@ m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and .etc. [101] [102] [103] [104] [105] -Overfull \hbox (26.43913pt too wide) in paragraph at lines 888--888 +Overfull \hbox (26.43913pt too wide) in paragraph at lines 894--894 []@texttt Meta-Control-h: backward-kill-word Text after the function name is i gnored[] @@ -355,7 +355,7 @@ gnored[] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] -Overfull \hbox (12.05716pt too wide) in paragraph at lines 1809--1809 +Overfull \hbox (12.05716pt too wide) in paragraph at lines 1815--1815 []@texttt complete [-abcdefgjksuv] [-o @textttsl comp-option@texttt ] [-DE] [- A @textttsl ac-tion@texttt ] [- @@ -368,7 +368,7 @@ A @textttsl ac-tion@texttt ] [- .etc. [119] [120] -Underfull \hbox (badness 2753) in paragraph at lines 1919--1922 +Underfull \hbox (badness 2753) in paragraph at lines 1925--1928 @texttt hostname[]@textrm Hostnames, as taken from the file spec-i-fied by @hbox(7.60416+2.12917)x433.62, glue set 3.02202 @@ -381,7 +381,7 @@ Underfull \hbox (badness 2753) in paragraph at lines 1919--1922 [121]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9 [122] [123] [124] [125] [126]) Chapter 10 [127] [128] [129] [130] [131] -Underfull \hbox (badness 2772) in paragraph at lines 7435--7439 +Underfull \hbox (badness 2772) in paragraph at lines 7430--7434 []@textrm Enable sup-port for large files (@texttt http://www.sas.com/standard s/large_ @@ -401,10 +401,10 @@ s/large_ Here is how much of TeX's memory you used: 2081 strings out of 97980 28558 string characters out of 1221004 - 65605 words of memory out of 1500000 + 65620 words of memory out of 1500000 2897 multiletter control sequences out of 10000+50000 32127 words of font info for 112 fonts, out of 1200000 for 2000 51 hyphenation exceptions out of 8191 16i,6n,14p,315b,702s stack positions out of 5000i,500n,6000p,200000b,5000s -Output written on bashref.dvi (166 pages, 678492 bytes). +Output written on bashref.dvi (166 pages, 679016 bytes). diff --git a/doc/bashref.pdf b/doc/bashref.pdf Binary files differindex 6d41f10d..aa8cc7af 100644 --- a/doc/bashref.pdf +++ b/doc/bashref.pdf diff --git a/doc/bashref.ps b/doc/bashref.ps index beb50589..7a5bf81b 100644 --- a/doc/bashref.ps +++ b/doc/bashref.ps @@ -11,7 +11,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2010.07.21:0854 +%DVIPSSource: TeX output 2010.10.25:1200 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -3224,7 +3224,6 @@ end readonly def dup 11 /ff put dup 12 /fi put dup 14 /ffi put -dup 42 /asterisk put dup 45 /hyphen put dup 49 /one put dup 50 /two put @@ -3304,346 +3303,339 @@ EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850 4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5 7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40 30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9 -2E080C10DE923C195ED0A46BD535972F0A59D3977A0C4E4C413050044C486CCE -9413D853E3FDF83C84B0A7E5FC5AA859BD382DC2D94780F2B9FACCDD437183AF -E656EDA4147CB501BC39013529A953D6D78F640BD51EE6D1526D1D27F2538715 -2BFA7F33FC8CE7A1B811D7E4251EE8C0640097D655F9EBB15102F85DAFFAB797 -0E07D701E1BA93C6196EDE47DCF0491F102A3ADD983898E72900D1398033A2C1 -CB464B9EE9A47E7DE97F7D4ED4E99530C9A770F43EA6FFCBA27C41B4668C6047 -FD5DCECE8899E1603D3DEB282DFBEB30C8040E7EAAB83B8E78B2F7F61B7E8A77 -4C544F5ED83E5056EED08C1A29221D05A4949A0AD635D9C930F7FE8601D74FA5 -33B2F4FD4C29FAE4346FE914B123BA9CF5BA732FC430A128EDE270E3C60BD7AF -CF54674799A0DC1C214E10BA5511B29813AF2E3768AE494D240EC647D9851CB2 -EC38976C6D8763F8C413B8CBFCF8EDD0FAE02F72C6366F5CEC2715BB7C90440F -2D7BB30CD1F107CB2340075D2A0D9D4114D644A09003403685A7D466CF47362A -B3187106FB1E2B32D7FE26F9231BE1AA87C8556A5421528BF5FC0478AC567DDF -EC95E6151FB92C7986631F641E23CA968DBDDC42A5880B89CCC00F09B82ABF41 -F72B2F9F28806308176EA7081DAC3DE89BC389FBC54E60D2C6B666F18562BA0E -32B5906EF1C2B6A31FE0946E648C73142ADB3136E7D2BE4BCC42E08DE3A5F02C -4B8575B1A296F04735C0F30C32D3DB7423FBFE682109815234C88BE292C8F313 -F667207D842DE2052A8D3701AE71C44F6C4788AA08A967D66270C5EA7DDB61C7 -56D7BCBD106F1CF4EA7BC3A532CE23E29368899E7DE2175C4EB20802FAD3E840 -FD7B7B9956777195B646FCA2E5F4ABA05940E269858FDF5CBD236269C9FB0621 -C8224C63BC120EC8B8ECB643468C468CECAD06EA59C1CC6131F8091ECDD0D23A -419DA3F684B229B64CADEF0AD3314C91186EC445B596FD398F41880FECC56453 -6459474EAD902F020B750E99DE425498DB3ABFCEF48305FF9B0C412ACE5363C2 -75EEA02FC8395179DF95E2A257E273F07CB0B899EC5E5AC093C9EEC345F6FA2E -AF7A6FF8AC2786F25DFA834FDF023B1DA2C4301D807999010C5EFF3DEE1EEBD9 -F4D888F285847810A3DA48BE7B63D23D432231E1C3FD7D7F249A68DB43C0B439 -6EB0ACCE9083508830ED8BA1D9DC575938B07F07D9DAABA164281A09C7D00FDC -78DB17CF89185DFF736892A6741CAF6B3864E92E7DE32A677E64B10C9765F925 -CFF01D76799957C8E2A4789CF754E9352C4957520A1D5303E4DFC850A5918A9D -B90735BED913175122AAA4426917ABE09DC19218EABDE6FEF861669F60819DBF -6A76690FE9C9CD86851FE1D1AAD0219178779037A3C0C66589ACDDB712CD236F -DDC950DC13E099B747F7892B0B2DAB00161BA35240DD4CAE298B0EEAE5A4A2E5 -4DB38F070F3985205B2391FEDC8AF24256323A68AF8FD7A62BBA1A2F702F5402 -4EDC17889993E0D56817E6D2AE1469180286651F6C6643770D0251C8626A2A6E -2CC25B87A3A520335B2AB1544807683BD52C3B8C3DAE7AD46077BC08E91D0701 -387312C9481A4CE788A11DF9E94A5700EA62581EC3BC2D0DDC709ADF5ED14CD2 -6B23D4480BFFD15828AA39A5E6A9BD9ED07C03F3B9528FEC1328AC1B35B5A1EA -C0BBAB5E5ACEDE99FF0099625897168374623C391A76441CCB7ADA5B458D0EFA -B829328D3A34C297BC605B3979C7110C90FA41295C25F84616A8F79A31B4E6D5 -B6F443022FB9F3AE6A0C23DC97F1811F50E38C254126EC2B9DD3992A6F61DED7 -02C3535B414C33DA24D5F172A6B34AA29336AB5AD10EDE4DBCDF08574BAFCAB2 -25D741156747BA56BF1069EDF0EF8AEF00C0B98860E8928DD5FA7600B2068188 -CF933C1C23DE74BDA86B3680D1E81401FE2FFF2905DDB015ED31F68F57BFF691 -DBBD798632E85A68477BAA42755C34A14D063059F88F411A0FDF0DFADFDC2F7F -B77353A472CFF8B6C420C535288CB18B0B0CEE480DAB9A767F2F6C7C427310A9 -BB1FCBC48C194E91855E54CA50C1EEF64B1BE0F7C8CEE9E1EB620902FA40DE3E -96F962F6E38B2C64BB774F45BA51986434C8E25716EC38E320D0914F68645DCF -67454133BBFDD4AFFF0A8ADB82E9730F94B17964A5E8A4FC1D630D4C7A9CE970 -82C0B79D4E4B98CB3E173175CF1DDBD28A47FB67BAE582F9D072C1EA0B5A2B42 -988B173EFC21F67BE388BD8C9D1D83D4752DD5A6CC8DA57A86BEC2FE2B1E269C -DBEAED127C4526C27FD349564F988DAF675C80E491162FDD7BCEBD7F3B13153C -2AFD7F9D5CE941C6FCB0E585FF99D5706B3B90E630CF4985BD5CAE567CE919EB -2DF4C66A7F366F68009E80373C0A9C386C1D30CE77A112C2BC3C59A2EBE50225 -75B58ADCB776094FCCA56C3892D8FE0911361D3FB581A7F2B2DFCA79042BE3A5 -80AFA160903B86CD46C65BC4BD9487928B06F6E387E8069AFFE9B2F784C0F722 -53E3FAE45E96D993999645621D2633035DF829279F51E25161A7A48317C904EF -264642205EF3D61840425EDDF9B5B80D5F66D642F7C393CACEBC8DF6838E074F -FB1FEDE41F42726CFBCC96B5BEF17EC26B27EF29087A163F40E3A1A777D4352E -7E4E389F0685FDF4A6ACB6C88D997250104A35E879A0C0203BFC3BA7AE49AFCB -3E8DFE3ACCC3F4A7364514AC94346332EFF06D7199CC29F017D9A21AB8731ECD -1E01E0CC9B503C58A7093B2FE69282AAAF604849D7B916B477673CEB81C37AD7 -65B3CE3EA27E158868CF723F803409E48EE3B5B68D5116ED1276C95FA12C46F1 -EF8633329220C07A6C5830EF35E5F510F50A762EC69C0C4464175A7F8556860A -1D8C0CA834721A33CAF6CDAFD6658B8E0FFE72369B355AD2A854D6DF4D5E2922 -EDB5DDB055ED9E349AA71B211A6C07ABD6A9184CAD668AE16F0DE68D7ABDAC6E -1AD0A61EE9864500045F0F033303BBA2879BE36D4A52AEAF51CC1377A85D326D -424E03664C527F74CD4466987C232AAA468048E5B517B79E4276EFE4B9B881AC -E9BEC15016A207F3B270507EA8477A8F97E8E8B108733B4DC48505F14E93B75D -1AEB210FA5E55F8C6EA04AA441A385E336B9FCB337C53261659A7AE9F69489B0 -E4B38ADE248B90043A6EB0DFA3795DD111931CE6462CACAD0B69B185E627B156 -960F46F9031790770D6A8BD3FC3F535CE85FDA7E27629AA14B3D97DE676EB440 -DE7ABD25EE41CC51BEC18F707D35DAD24662EA4EEAC59FA0A8F8AE09CED2653B -013226BFFB578ABD5E2341759B229CA9D1882465784D5BCD351E3884620D0A9F -075F1EA689A99C7F24878E8F79ED2AE6A8536F9D1BA1C07A2DC05807C438CA44 -F3E9708C877AB2BDD3F6467C39419606083598F1BD22DEDE6CDECEA07A838249 -1D289F98A1108574C5F13B25E2545B7146CD9AF5D11BA3DB3140EFCC7365C143 -DE5C87525122EC71BD00E3ABF2939DA6BCE4EE64C4B56271B393F3CB00413620 -B4AB8AA010B38FF264E76A5E74F1EBAD812BF9E7E0188F3308D85434360F124F -8E9B24133BB853F4E64D973254E304BE6EAD60E2343DD994E61C26C496B4517E -69F577D13817EB375933FD3FA53C9A1BF02A89CDFC00296E2A2D2689CC850088 -73E181933D90A88078AB76EF5C50598AFC12CEEF15A2BFE3C87B773B7FF1B8DC -3F9A8D68908615F621BB695C57215308F69C069C24433349DFF17E8CA7273691 -845DE5B2B736CECA05A5BA8B3B61C04305C5CFB5E089FD4A8B9E6BAE31C4C5FF -A84FBCB040C72A8D453BE0B263B223A8A9D1B74AA175F9AE02F2F4C34BA87263 -830A03CF5D34E060ED148221E3C617D1D4C70003EA05623C4C1F2082DC633E79 -A1E9D57A4AC834BFED02856B32DC13A39F39139D59F9637B8470C944D03A8D97 -DF61859A53954B7DED4738BFB91165EC60A44BB69D607AC6B70F592224121960 -E56BE9A190DFEC3F07EE60AC62AB28678F8DCB6A77CCF44B153789AFDB28CBBE -BB99798FA478CEBF9C1BEDE10DCC704FC3FA0280EEABB6E909056242B7A2E193 -DCE348EC8587CF15D40C219251DAEA07854234A9EC835190EFD1CC69B3C7EC82 -AE57FEE324AA2F1A45EA3BDE5F60E1A232270C2105D57D3845A48837DFD389E1 -02293DC23B6E76AD95282017E91E7042D9734D82D46E3DBEE0CC790F4052E008 -B3792AD9822B94CC445AA1C9185466DD7D28A0F7D6A33D727A485F24E709DB18 -86AA1A798CC7758BE528C4300BA560FB89AD49AD57961E96799A1B31DEA2C715 -4E804BE9396A1AE54C7549E73B2ED2F548B042D8DED2B7C7BAA049C7D120149A -A90B7D458D15B8DA6F533CCDF7E82D64A7E0CDEDC2D281D6B7E470D93849CF17 -2A579C3403F6FD16EF49C6F136449EED08BAFC1E0D03CBA37B4765BCA1F26699 -17E542001E2614D83877E37EBAD25029B97B94AC1586BC42A0A0C49066708051 -0DBD7B46D45A02E2FDD9F2FEFC8B1217811A3BE709F392AAA03D2F7EAEC828C3 -3C5EE95A5E273702A176ABB4B2C4BA48EE7F16348F650D426BC71C3EB740323A -A8BEF22F6EBAADB73AD4C9883557AB33451A89DFBE25CA6C184A3C37F058C3A5 -4C6EFDA4E2B0354845CC6A38293891891FEF286712171E56FBD8B7A9EBFFF47E -FBD889E1EA7D08F7A06BAF9CD988773FCD4DAE43FC6A9F80F1D6A56E550CF799 -3BBAEE0303933E02D1427A5842C9272D3D0A0ED94ECEAA9B82E81EDC54560F8F -2A4C0D28B3264EA640491E24D3F7165A17725C28A6F153C742D01C7E95C79C1E -8229B8183B8C10F00DF68899914534C58E2DFBF7087D7B6A3A4BF875F5A754C3 -B4B8713DC4EB1682B84151887B8461EE05A0C9FFD6F619B83444BA9ECE1D0C7B -D17E96315220F7C341194994375CEA1AC7C061D9E7700B6B30B5F15A6A2A61E4 -25E6C3D0B1E13BCBE7FB89C24327AF46AC62B2EE332348B55D9E6D599D9FBD79 -E64E8BA6C960A598600EAEB080E08A0D9AF13FBC60218A9FB400D5CF3507DD38 -FE41BFBB0594F43F10EAE9CF159097226DE7706F34871A76661B6CB9EC1127DC -09651E98E34D3ECA5BA7D695B27645AC8C16364CA380D45524D700A460051B62 -A69ED221BDA45051C1723796A305A3A7C85A62F5DFF7F7ED690DEE4C0BE2571A -155ADB8BF7DD4E6B31AAD3D884337C1A2F99FAA44BFDA357966C77C35A435411 -2AF36766DC0BBEF0B50B742A9C9E8541C58AD964B26C47BED17B5BDD9C5520F5 -947E4B8017AFFF9FDD3BF15B2DDA6CD750E09222A3DF1D9ECE2AA6E22CC5FCD4 -C6746E58BD628558A7157B72F6370507AB0596FD4F4821A800A358BE7B62C7FD -92131D308957E99FE4408ECDC0F48F5C747680992721F9D96B41B956C14F8E13 -FB260376C508F88D30355C94D0208D419F81019EE01A114E20EC2438C3894C79 -62096B4A5F6288116308FB98EB0DDADDB259205A11C56C6AC6C5E1C8FF45A25A -F16596B76397BF54C3DBD0ACA1599AC886415E46EF99FD15C9218125CF0426CC -B6B5BC60C0A14CFD116DCDCC3CE7DA6962B972AE23BCBDC5F283A807A63C1C8C -9EDC5D95CBED7A9E1D63876A55C7A8878DBE0C66FAF5E7A680416840156FC63D -FD8FD7FD12F32245B3084FC3532F3883DEEEFD52325439EDADE56EC1B4845CCB -282FA0EDBC405ED2FC3B01FC93D1ABF06B64B2EF4D6FE40B6BC91D7540BDC5EB -F3681BA084FE84FA153E8E11442A7840C6F7FEF98E346601A67885B3B0AE2EF2 -E3703ED14AB786488C48CD937E9DE8B666CD25DFC9AA9351338605D653BA6EC8 -16A18D7181B2DB084BB1D3E75C84D8CD3533EB35F150F006C6047BFCABDE14EA -32FE9A0C1BACCBBAB3F6595E1D11D279A34CE66D0BDC09764436A23BAFC467E7 -A986D6947DE65B77BC8480B94E6F66F8B4D93FDB517FE1A6C2AE5FF3BDA37919 -6F34C72EDBD09CDA95D751CB5ADD93B422E98560EA03AFE810E1435490C19405 -C534026D001C4E2A86EFA7F342E3967059BE771E728361AA77E8C2F497442E24 -AB938CBA02C5FD0561A601BBA8AE96E8232212DB222C202C1AB4B4EDB4494CA2 -77221C9EE7810640B730DD31FFF60F2A05DB7FB80577A48513BB9A76B262EC6B -751157FA65B47B7CE97D61DC0161877F89210EF3C9A8CEC5DBC5EDA5B9A8770D -7643300C9C3A5D00F0FA18BCBED0295833612A57246D8184975ADF14D84C32F4 -BBF15E6BEBDA45A2E8BBA461D53C090C25BF7FD351CBF69CC904EEEF8D7802D5 -D14A4EBE6804075D2F742384749150174603F14519BAC00B220E83F7309D15BF -12A0DC08230DBE23EF40048A77ED17D9F931C817F780C67E59ECFEA62FD4D8E9 -DEB4D1A8D28643C4E476AFB2F86FE8E5C353F08B9D0F0C10035B1737A7D51F4A -6141D0000F04113A7FD710DFEAA16CED294E5AFC3856BB243E2A676794DE99EF -660C4B522E5A4EDAD43C3A0A359B4B34AA9A59A6E2D4E5217553B790ADF45A9A -7636529EF840879F18A34C3C2D5207B4D14C59E264A6415F142A7C0294597D64 -D02A28F126E774A31604FCC671E1BC0FF681082B2818792A60DAE56FFEDEE3B7 -6EA7A834D088E6D10B1673F3250D229F1BF59CE4D0AE3376E6FD99D883B2ED03 -71B72A3F679A5DBD76BD2FF6C04435D14364C4A61AFBC0D5B31E48BC631C0545 -DD3C1C0FBF3123EC3944C404D37398D05BE3756848E59FA54EE7C34D0D5382D8 -74DB6A6E70C7A5AAEC7B941B4F5D800B226D8976473FDABB34FDBFF2C6016FBC -5E34BAA392A29B7CA9F667D609EA7A391C6067566631FA910BF17DDC0CE56F37 -A2E6A22228A4A0AE138924F09275921C8DA60D818AAB8C2B06108DCB9A85D6B9 -DF6BF40ED6E86DEC75A2DB917E605C1735D5896F29D762C77AC212994AA2F9D3 -96857C5A2F3E86FBE7E34F34D8E0CAB1024AAF59699844CECB49D7A429F4BD02 -5567416D4D0152C3D0B6B77D7104B20EE19EDB264DF437E51F4BD92D21873FBF -3D35B2EFCDC5F146491099BCBD3B381AEE555FC25A7B0713FFB082389975552A -825B8762D630B204B99D97E0F0062B358E1E443D65CD8DF3CF8284CF38066DEF -3F130A06CCEA592955EA05F416E0F67AEEB690D626728426BA54BC4C4083CBD0 -F3F9A0E7EBF3B1489C019F7A29FA78F77D8A96251B66D73C7C858E2B7AA768C0 -31CCD34792D6D093643502BCB4453C3D5DEA5B577EF92D3EDAA22E90827F3573 -A811FF5C5F6697AB88C42291498BC348F4102BFBE007D68092C0057DD8576A9B -5BD032CF7196103028156CDFEA122F9A7101F0DFB1C73D3B5605A73C1B335EC8 -7DA6B4CD39E976F7DB91CDA187B1CB4E4338F7C72873F24D5C02934BDFDA019A -69FAD10C96BD82D12D07A2EF76D86C3082E1D68B0A4462D0635A8F15245EBDA4 -4EDBC69D510B12637F02ACEB3A1DF278C4055B98D77ECFF82BDDBEF4C5AFE2B0 -B88A9EB5333AE842093A80E2064BD36D5D81AAB9D80CAA04B55943FF5A1DDE94 -CF3CA32648BDCFAAC88E72CD3ACE65C880FD8BB75B11A8A6ED351524E1DA35F3 -13466B349A3E4CEEF0C1160B1F95643B500A171B33ADE7D55F4EEE1934952333 -2CBD044D07A12985D93FE51C93EC8F629DC423458C1B631A7364E17B07E89C40 -256DEF8A88897ACA388014A2C6969ACB9B3AE6925B4B4543BC924061EDCF86E7 -F51F447A7FB62E03A05EA6FA2DA1CD76615680FE009621148647C7C74E4BC6E0 -B34B356A3CB8947E0F775AE6079FC4594F39A4B8218E5D27DDA4583D9D5BAF07 -009CA08E3E08E407D0AA9EE80E3B0B049F37DC38FE8F7FD055CE316D72A6993D -60CAAB09DB8A899E5EBD8AF11BBB8B2EA8E644D2B6CB4D9EED9266EDDC3A7ECC -FBEBADD9506987DE2945A65D027DE828D5A12FB0D6AEF5D6A2035421DB46313A -9CB95EEABB6F5A87013C3F3130DB32B3D955D22C9F3095A19715D341FD118259 -C661FC30E9D781B32396A8A2EA06122045D98EC5FCC6CFE11AF9B2A2FBBC99CE -45925EDE91D6A964B68EE20032B96A71B48DACDBFC145B6F6DEA7F011DD7B246 -D9DBC3CC6B1EB35F471FFC463E8444F1E1CE43D3D41A113D9601C12FDD755E34 -86B8202134691C4DA22717CD3F9F958CC6E7BE20CFAE9F10EB67C0BB58E40F17 -5E3A142AE71E3619B1B61F706F611496EF29DC07111BEAFCF4D2979D39660C0D -05A8A2BA5D2E0BBE2F522B6BA0A39B27AFB2FD2DD4666A0F895F49F7833C2661 -88D28BFD7522A9CE8EA109E1B8273A1295F4982907109518E82A156A9C4D7F27 -9B7EA2CAD89D22A3D56637D5427AEDEDA98A6D9257B419D761C8AC925B61C93D -5E4C47DA6EFCC66A6A4D3B7FC1DF27C6F5C7919E34E9E7CA982C0D40C5D53F0D -0A09C57FF29657A7FA230102C9487A8D68F93F278BFF94E6CFE8E5E3BA38A082 -744F9D018A6D7452D2BF0D06BB61D72F7767A4E9936DDB660C8CA18468262471 -3C81A68BCC375326C935B90D02F80B704F479DD7F030B089685F091B3144E794 -11D284BF2B8502964E4F6C7B79FC2C37197D52166E377D66AD0E7D0325909D46 -E0F8A35807DFB8C8208BA672EC21188149F3155027F16A23AAEFDD2F3AD642F9 -310D631E07655AB6885C6C3882CCC8690D05D96779CC83A117D946E2F9F6521F -B8F4458B8E01FC30CF59ACDB52DAEAD21F7B7F490D74898F2570C6FA5B4DB522 -C077FF694CBEF398F0207C708D7C3E4F8EF42FAB91ADB4CEACB592E56035DA1D -E8C44FE37116712D588C873D8C2C51B960E97D07651D611AB133D950258F0A2A -D8C4557DE5EC6D98E1298B71FF08B5F59C6619AEA88CEA839A16B9C810438B78 -060594A85095D525246CA31DB045C2BEEBC0B1F8262C59F9A687951AD2A1A5E1 -3049E4BC2CF76E90956DC45670A6A7A6A4A07983758BA4887552CB30DDCFDB02 -090E12B56D356EBA8E7AEED14E4EA4C36A528A7F5105A545BD9EA5BDFD1F04E6 -C65428A54A41C5977142EBEB7F49D65F1FAB9FBBC2C283EC7AAB8562047E013D -369A009127BAE150E7822A278BB3638BDEDE5A1985DD3081F08EDE5E0EC8C4EE -56AAA592D3EB3BAA1CFFCE3AC23854790D0B648E83E2FE3C2CF7A14ED0601761 -E5A377DD4CFAAAA59D375499CF40DFC355D344AE50DFC65E4E5AEDC0ABB48A2D -12DCA4C33F9671CBE7CBFF6D302805F433F581B4A6B1E4537EFE9C11F8C808F1 -F9C56321C402BA29DA2BDA3D2468CF3A26276929980D53E3BED09C5D9C2FAED6 -DBF053142E82A04F618CED7F51D09C28A1885DA028F275B85D3BF5DB6D20FCAC -6202ED88D2DFC36D642FCB236F51B4016D7380CB85FC2306D986345F8A127EB8 -E32C7118C0F77B1B668D54FC2E8A4C70A681535A5117DB2E3D9ECD1B59A476CC -8BE712591E1135B8E05652849F3A0737EDAA98E160D39A1C83AB9E586DE2524F -C22C5BAB3075D6198C15F9E6EC9C066B085B532B8B1ACD16EDBA42DDA0C6E2C7 -DA50A742E55A1C4B86332FC7406BEE517373BD0E5A252763DF5886F433E60A64 -7BC6B0E70FB998C448F7C2D431249B581BF20680572405853CFB5CCAA1DE68B9 -D6AB0E0FE7E0C4D9DF2444267C6428C6D5CFAE69D651651FBF84C606282B4F95 -0C81904C77350ECA5B82128A4BD281C9889912ECB461D651652986EFA8B701F1 -4B721AFE6AD536CB1968FE14D0BADCBBDF798D11F4DC6A3EF533B3BB8A236595 -B70C4A03E6E33A6D44F93FB54A63063328305D2193E012D24E4D31E62CAE4DE2 -87D59D842475522204CEBB88D08AB0DD5DF57B6F165C693DD0AD34B87F89AAA4 -9F7B7A880BC3A5DBDFD9FD9C3D3B9DA30B132CA968A216BB52434FD3FE77BA51 -A70210B1ACFD28B81BDB75F97712DF6F7297F34A59A393006A881E2B3CCC3F7B -B39C8D6E99AAAC39B071B7F383F9E8EC407118C5DC17BEB0D737059ED7DCE758 -83EE43E0514015D490C2271FA5463B93EAEF9B3BD3C88CD74A19D9DC95660C96 -0A38B26D3B023FFDD27FF6E9D98ADDADB54825D2B555206F0E7C889DB55347DA -9A4C9519C0C8A8D3ACDC06AB3069268BA83984376BFED1CFE3B1417845911CAC -5428A0800146CF549EE78C263F36DDD8A04A75BFBA4534A78412B7C2B6EC47DC -49223DB72FCDC5E88839709D704C196133A3032149AD0AE29950C8D6509F877E -04B849B5AC09421BB33B658D30CE6E04DA1A35862043BDEAB7BC684E1A6DE8E5 -CAF33EFC866D6D075C269693690750D526B801DBAF5099A04BD3E911135B118D -EF01207599588E25EDE475FA428E67AD93FFF63682A9B1F9ED495C7AD50EB96E -836A965C2B27CAC71CE79170C4F56E0497F0F6CA9041E92E1D01078FC922DDD7 -3F79147EA667173AB4E64AB4E3664054547AFC2E2E1382FE059C37B352120D69 -6A15BBA8670CAE7E310B03C2A4B12FB33617C17CB9D992AFE2DB2A1BC1DA806B -1B82DACB2C1157A8D3F5D86353C12F474078418FAE22EB4213FBDFED904F0156 -C17A9C5205DE359694C899E992E40C2B54A565F4777C0147E864F25FD4C487ED -6CB1C1BDD93702AEBC7278FD7E62A79A28F7E3A16E763F154471E001D21D4FE3 -2FD8ACBBCF301995528042E861A9830ACACB99669EABA851FF2A8609D30B9775 -A048BEA2E1B538D9865A8A646E907407EEBFAB32F76BDF132E905764EAF10891 -907EC36BDB2D8F89CDCF5365D2FDEF131B23A8308E05A696E5FF6EC44066FA26 -9348C4249B64F87D71C552F9CEE2AD126AB9A9B6FBFCC58438C6248A7C0962C5 -6D7622CF440288F906566E4947699270D4E5BB1E9D80E10C17A7147852495892 -707F47DD09B09802B37B1D40F848BB9C732941996EBF595184E4F484BE6561EE -9BA94C00F1AA76BCBF817C814CDD4ED94F025A31765A118C75E6F3B2C6C2767A -090D5389DCCB5A0ACCC67CB1B1DA2EB5B4B3EEAF5A4D7F390BC83A0C1B2B0910 -C180698E9E7F9D288C3BDEBD37D74CB5710AAACD2FAA4686A9A750064F6B306B -F86C9F4BB77ED693419232AF4C1D897A6A5B737B41647A7E37350BC7853FBA31 -C5CA92ED67367D9858919229645A81EC6E30BE97FFF25AE6FE8CB16709D4550C -DD5B4098ADD0D4D60ECE796384C007203A2B00595CB4608AB8C265C4E67FEAAD -7B5AEDADDE94CCB6FFC545A9E3C47B8B911110EDCAF2160135492B722879C62A -6A8FBB02BE4AC067194682264771595601859CDF549C3BD7A3DBF7F681D01F2A -1FF5329CE52A00E9FB7F76E7F50A2B37AD1DF467A7B63EE8555FCFEC2A8C42CF -C2297EF18EE8D49B0FAE5FE08857F0E0424FFCC5804D3063715F039C7F87396D -579C57944840382C2A9524DDA1BB3C87866EF386581F2B1ABC18BD49490EC9DE -5D184B752A976528892A0401AB4F165BEDA7597236C6A5433D7B8486FB007DF5 -A0A8503322639EA7916CE8D727284E90CD3F657E07C10370B3D8708B26AB933E -DAF9BC060C2DE8345802CB0A3FF962FCA229295E15A02FB35D15476EFD85EB05 -AB102C504AC86BDFC3613EC7E947D5411CBE0A66AFC012115334ECA15BB0A353 -EAD3C33090046DD5FE981BE10A7EE6FEB747178AB6357EE22F6BE81D0FD617D7 -ABBA0F7ED0CB5E14F213A96854FE0FB0FAD0C3469A9590BCF9E7076BDC8BDF20 -933DE9DD6E99EA0C7DF1D28114B7EAD10367BD28A82314829E4FAB344F3A8882 -080BD2A920FBBD2227D2DA1FD6AF21E538DC10E50648535187EFAE304D0F72E5 -0746BE1853D59A1FC89BC3847BB8A0EB5A1BFD83B6E465D79012A80E27AE7BDA -590BCDFDAA602DDD8D596F3B57490A564120EAEBCDCE0EA0000C572266CAA363 -536E654DEB595B137CB03701ABF08EC994B2D48622DCF99E137BB27DF2FC85B3 -FFFB9D781ED87B39054756B9B9AE7A13978E8EABD8F30804031CF77E698F8852 -F26626A3D817D3A3234475A80C1768CABAE431CC6E552596818F9B47161B8C67 -CFB0618039025E0B76E95B770BD302F3EE622C5E0898B34027932498345DF0D8 -32C65257F9DB75D158EF0081911CFBFD8E73BCC7F254C17C0B72AB39CE7EEDC8 -8ADD52AEB813C016D982BA5F10268E28466947C765F65C80E2595B2F732D4E68 -D69A757D8230F6ADEB79D31EEAEE284EBEE7E40A99C422050B338A07564BF7CB -EBDB383FB6E5F632A972450E4F88241F4C7CA492A860822054E41BEEB3A59E7B -6D6E769894FD8FE20B47D25F43809077696F516DE603D4EF1D683FC9895B9C4F -00D38E738BC1899C9403F9BD7D861B0FB18AE11BBAF4438303AF6D1942A41DA0 -29FB10183B46BAC9AB9E858D95CD54DE11D3167B94F0642E89BB08082A3E589B -33797A5B481669A45C76463B69BB4EF884CE76812BA488BD8A32DEE0AD6E9762 -10DE07FF0216F6B88AECD07E5A1DFE60801607FDC4F03D9A5B074E59A2EB23B8 -D85503FA1D12A6717FDC69220E31B04911E249446AF19FF550B09DBE833AE75D -6BE48EB06866CDFB7999E9FCD923E5CAC8286D638C643AC161A80B1FF87A44AB -6181929F69A6795591D319879BE5999F200F0556650475472F9863BE3525F6B3 -9DE2D2CD94229A257602F4956A0018A4211324E3ECEABE650EEA36D34A77E5D3 -DCA8AC728A71377A9E7A9B12E58492196C852303B9DD4EAE6983066C6ABD4D9C -7787C837EFAA2F9D3FDE032665323585D4450A9D3E8C7E8FB2FBC87234CAF228 -B5C1654EB2B36AA06224C22A33C7E0300ABA12825C47D2F20BD71C03D546E4FB -2FDD37D7069C6A8EE431A45D810E52CF05A478945988DF389AC0DC8C807CD51F -EB049AC262A09D5355907421A5D3A5903A67C79F2F82BC62EAA06EFF45872229 -1E9AE5A761FBE2BAE8276314A1ABB109FCD681A0E339182720A41099D77C47EE -7B6586829BC6728C44BA90D2A259130B78EA3648EAADF62B501D8482D7A0955C -C7972E5C22435AE131CC837EA6481371E79535B455861023D881FFE838FEAAEB -CA47DDB85DAF8FEBE91A5897CBCFC4E2E49213855ABFE6FBB558A9E27AA46244 -49FD8FABD897417E0008B57675283EFA92780046E5A1D41B3FFB3399518EB86F -4D110EAA5C0AF45563103B89A9388929E719EF8FE2794B8BD18388DD66F2EF1E -8C4206510EB7BE863F23D255C45B40CCCFCA951EF67582C00AFFF61C2199B046 -5D7C463F3AD70446A29F899E95EB6898721C737850E4350FD3660BE1FF7B317F -E2F170120F972AE9923F79D453B5E51845E6264A41E1CD7545C35BC1AAAAA545 -BDF3D419D9D2E6B1F8DC295004689506BDBF6BF47BAC17CFEBB565C41700E784 -70BA1163B66A4FA197EF0D2868B1FC46E0E8695F8C92BBECE917C792442AE284 -A2F859DE93424F51D52D5D1C00DEF99BD1F1160EC2F94F84C3BB59C1EE56CA69 -A6616AD396B9469FBECB6B4986EAF6E439441CCDED87607BDDA10757BD4B439D -28ABDB82D4CC8D4095831509F1087252BBB1DF0557B2F6275F7CC610E8742C01 -ACD9F985641A3C16A8BE1B172BFDFD36115855AC40A04C6C26060D6D95A10707 -B1F56D0DEDA7A48E25D9281790D3A2FFDDD479F24A3A0E68FD097448CF500597 -B662EF8DD419AE338D4C81859547CB86FABDD162907034D2ED814895115E76F5 -B8BA5DF352CBC93260002C3D72015180067F1A74ACB5A6BC48225E116395EA43 -65C12774423923E4859AF3374456F204E0FDC9460E8EE2E87098B9E7A3977992 -F106D0A8C542DED8B2E4C67527810CD19E03275998684483F33E9A6242ED0330 -EC553A673B1B34C89057D5972BE82AED5E88B5619C748DEBF6EE02489C51D3C5 -6DA3478C65521B8FFCADFA3E569963649019CF46AEA9357B5EDBA74A43A4A199 -A132885B74D5879BD2DDD2E444187737BE8CDEC939500F1CFF538BC8373266F9 -2E91BFCEDF58A2CC1F197EA1A941E85E021AAD4F94AB54986AA42E138BF54E26 -78BC33104EDD4E86565FF8456CD151FA2ECCEFC15943B7F0F23C359608D48D79 -B1BDE2A0308CD359089009E0B39CBC21FA4B337E7F502595D6B22CB92C096709 -EEB2B4D1D8F697EDA69C13EABAC0FAC550C5A15D1018B6DD4D740EDB2F9C700E -9383D7307D0F6CB98006B0453EEFF884949DE1CDB38A681B412E2A98312C3A8E -FCDB7080BBCAD61746027D3261389CCC55A6159B18B3B29B36C5071846117431 -C67079CDF2E5DC78EE02F82716E31D6B63AE901E7BFA1EE86F3858FBA107B735 -D42155673489A7714B683D2BC5D630D492F1537823001E70EF18242F06F52F38 -80901A5EF067BE5F2473DBE171E8D85A89796C98074424D384F01DE987F5544F -118527F4C19427E8338B8CC7050DC48AC4BDB23C160EC2918EDD2AFD17B4DB92 -7B9736676D6AC40AF23A6541AA47141C047D0BFECF7DE8BC917FD34A13F2EB7A -28A0EA62137A8A1CE7BC5F1439242084A4DF8DFEEF495D308830F04DD7D2286A -499E3802995BEE8D3236511C1C2F6B5CF4668857386AA2AA42872E5769B49F66 -61F058103691825DCDEF5AA4554F4DA460FACBF69DD8956FE3F1766A72143EEB -80D4F8D3A109C2277C620322B6B33C62382F4AC88E8A49451914A5FDC69E33FF -3C65D1FF4A193AEDCA633FC5BAE6D10D63A98E0A2596B6E65456327E59EFBD37 -B5C45EDC86A4BBD9072061856C4FA228250640406F9976645171978F6DFF12B2 -C7946FF5FB10F4532F4A780BA48F5B203B223AF1043646A484CF7B4DB3628B9C -B06DC7D8847A42F21328BC90A7BD8131B330D9EA2F513C564EB8B4B0EB3E404C -13069D6ED4599EE4DCCD36A4178007D1AE551FC0863FBDE1CD639F05484598BD -33325BBE61C5B10EF6A89886D854D6AD643005210262770A6F4D92E7328BB00C -9E2D4DF7F41D941952F9A08D318EC90A5A6E0EA95DA7F21BBE72DBEA4BBD0002 -C7677F14F2DEFA91794674B4C06696C5D11C1350CFBD4F56FEDB1EFBAF120B6D -D6CEF9ED27A6BDB215C4D25A0973CDFFDDEE574D4BEFA05AD9EF3BC70129B888 -84B6160AA09A3C2DDF44283511B376658B9985732F27A8B60CB60B87D8BE7383 -6A2EE83043FB5390E0CE89D7CE02E9C0B90183E959CB233AF3754C137962563D -253B70B07A45DE56E476437DE41DBF7D178A902E899021E822C511CCD4EAA212 -4687E475F6817C093719800AC5E9B6F6F80C7A275DED35E7E8F35D365C070654 -DC5ABEC55536DC085808CE8B657711B9CE5F2347A5F99808EDFC577E587A6878 -DEC190AFFBB5E443EF719E72A8B5541EEE670E90B36042712FBB0AEED585B70F -4260EC637590AECC2407A7DAB5D789AACC819C3460881FCBD0BDE3DA20E5A62B -3B021CAC46DC9557559B483AB41ABD4B0EA498F483730454826891EB93523F32 -C07794BE2DEC3A86F0ADE128E9FAAE879A961B04C12F1F0E65CB869DF7C6A79F -C7CE635163CBE878B3E8723706AB83A9334F4C67F72D28BD1D02F9600BEED3D0 -B4DBC423710CDE7FFD92C96E5B80D79E2142EBF216F4F10A857A744DC7BCFD44 -CA57CC9ACC7726B1A8F09039F77F0B1CD29FD64DFCD6A179961CA869E3AF0A63 -C1D1 +2E080C10DE923C195F9FB3A03CAAEEA6A78E5994B2DC3A318F06679925ABB1AB +5BEEBB2591961C13F25248DF7E43D2F7D8EF2DFE0C9F6332503E58DFFC63582F +A120BF80E4342491BFE3833012907CFD93A90AA3E216D6D4DC0EB815173DDE5C +1B9B2AB54706738CD00FEE5539B6BAFA1957F5A9BF70EEBCCE9CC306B11E36D8 +D00BF55A9FA5CFB32E7CDCA2DD37A5BB2D1F9A8EC0B5C1FB6EB83ACA9BD33028 +7F991C4E7C1BA5427C9D4463C864B44A0A8ABE45F89E3AC2EF454AF0ADD564EB +8A3B841717842866E2EA6A60AD1926E861C6311C58B110EFA8911575FFEC54CB +14C69B630B15EB96B1310195FB1274EAA3F3C603FBA6DE75B66E47556197AD6B +FD13D8BAA3135913B0A7C692238A0450F7734D408552ABC33EF3AA89B7D1C8AC +1D74CF4703117DD038CC44E24325F00B3A67598BE2A6A218553A744BC88AC513 +AF9FB3489FBF50078B4948BF637F7D458D558E8DA8DDF2F2A5498E52A3AFBE84 +50F28EA42228C1CB07B5DA81C34D733F6DA3BD02224AA73F1AA7FDF92ED9FF0D +AD7277231AF2BBD9575C73DADAA9A9113DF3899C43C972750B18809815979408 +B477D75F9BAD6DE0339A2DFD07B42A84FDA822D31AB47096B8505F9FA2079B80 +10DD05033A17149C3B7A34BEE8E0962214393A269DF2F2CA131F367DED66320D +79A03AE8239B8E5A095BB7FC90C1DA766880D29AFD86B9E7F61A3F7A406DD78C +02CCF7AB8521C47FA61BCC7CFFC45CEDA072972A3F5F5C9FF09C5AF9F00F9DD3 +D77EA32D12371C2377FD2249C74E8FCDC1E389322E7A0616A99C14A352ECDA21 +E6CE1BFA9098C23A7BE5063C4654AB93338B46015B05C850EA549BAC9FF23959 +91966A4F50C5FE67C4D5657632BCEA14D9E226A78F13705282ABFEF36D4327CD +811B421B12E319356136394B13B1D1C2A0AE9C62D37FA9DE80A00AC25CDEB3BD +BF74FC8D4AC35C5EF6876D5C0E267847106FE804A1909728A6D75542ECA271A7 +3B4F5C761D3E195E5DE6BB53598EC77322A22AAFF7C39649DE9133EEFA9B3654 +5D0951EC63A5CFAF33DAF36D7778DFC3AC9914919288E3C470FE6D43917D0731 +2BAA724A14C2DE535ABA30380CAE8B192D0AC98FEC1F93A497754B2D3AF768EB +A990CD19A702C770B7B6DB0615AC790F28CD55B3EB1C810ABB629EAB912AF685 +03D98799716FC3E69B3A6FE4640FE4D2169249A5989C068AAD5A6C185C70E3B6 +4845B07E3CD5C3C340C29F3FBB3FBBA8C4F408089F54FE801A67D0D320946DE0 +CF81EC5D4FFE38CF5C2F8DD4D505F668F45561DF35B6117A7AEAABD46CD3CB83 +26F2A8E51AC3A5F9BA131810FE9D548F0AB54D20FB4FE8B184864720D26F4D44 +43BFCC6070FB83466F17247665E982315994821DE0E6924D4F2DE3621FE25EA2 +D1FE7C26315203C2919AEADF40CC210ECEA00E2AEA76FCA5F38BE974B163D109 +48BA098253209538DC5B4BC02EEE99E68E234C2300E7EA7277524C6D8A92B6B8 +7169F198C9CE8FC862467B5283EE850FEC268A39656C395B34ECD2A990022935 +5673077EC8AD9833E6874C8C992149A836D32729A16984B5D8A18A3DD7A7A04C +F657CB45A5C00B967B26864BC028D6E84DEAE880C6C5212D5F4FC2929C4BC816 +607556E9618828F6B462CD5D487F281B44A711A37B52685F0EB881742E9C9483 +CBDA125B50585CC0A4FCF825D738CC46B5F1D693ECFD11638D697FC16E2D2C52 +7B99F63D4456A9BA07FFD4F5D49B2862567EFB7BC7C33A3835E7252075245CFA +4BCD96142A2185E73B1649A348DD67440444D2ABC80573D476624221862F4F1D +4C8AFC555B65708F031581438B9B658A0269310ED50820E38B3B8725A6A97B29 +98B04F1247FEC25DCBF3C97DA581C98C45185C5343A357952B16ADE3893437E1 +FDEBF35BF4F7A2D5AF54492A9FA18A7F7A97F8BE69DEA33D57752946D89FBEAE +0BAD1D1C4B0FAAD7CEAECB26F232DA0314C01DE27B0E5DA9565775DED6FC769D +A6CFFF4E9DAF2F4C6FE1D4FFE3EEF0A1AD8B9A7962A56652361B0DB3B27C4E52 +437E044630C93B67BF1D60CF28886BAF465AA6F44E4B5BE901D83C7FBCC8BF47 +9C5DFD55E6B9BF3520E8598D588B1992ABDDAF159BF48DEFB2C393A6144CFB59 +15DCE0EF0EC32BD5E1B1A0C7C2DF6B28F14D9FF169474F7551E9759012C80C71 +45838DAEE81AEB19C0DCDFF69DBAF8B277A414E34069EDB972D462662A05D562 +C52F89CD26B4F7ABA626E3594428C7CD338715681868D211C58C8AB4A8A1D3AF +D97A8E0CC1F06443A0244F605408283A34E01BD7898F7DB44E550896B3C20E29 +C0EC3C0666BA33CB37FC2AB60CBDACFBC7F031E04FE1E2BDD8B66AAE5CFAC42F +59AF8143DEFFD1A0AF78BD4B0F308C2B3678939C1101D6C9CFDAC360D9990043 +3E89501BBD512C9CD8321FB4A61AB75ACD70B5060498E0243199AB40035E46EC +BF87BE3FB31DDB23C348B7208715DC69DB525C4A85F65F579D3DB1DC207574EC +EC90C6B0D5837C6384AF77127529778C0579C0379E24194BC97BEAF77A08A5E8 +D70A830D279733FF0F7FDCF0137A40FE0555DB9F7177F84120805F60D120D08F +720445A8BE8CB8F54AA91BA20DAA3BAEFAD8BBD5B5A6086BB3B52379477466F8 +957F0F061F919355CBD428C5D5027780EC29962567BC8F5E8CC16DA90D8A02F7 +4D7A02FEB05F30838FF1358C9245130DEF0F9D6786ED2CC21394DC92D782F260 +1E755FDF36380FF3FAFF86B0AFE6EC3C6F7F0646B1E967688A2F9088AF47A34E +C55CF8B4C448E1E3A34987FAB1A7D18AC65B2D18B672D88D9C82D38D73D3B76D +BAD7C8431F0F3A7D24A3D118D14AA60345C87AF92D7BF9C1BFE9BAC5B8EBA3BF +E62C289C768895CA437C4F1FE179C12EC83221DBEDF80F46763A0B891E0917B5 +0B214D274B6681AE254721172BA7AECBF10CEFD6CF71F97F43310AE31A411303 +18DBBC4DD143326A22B0D5DA01FD32627383C958BF352C77854BCD6B5AE52D4A +36D850C91CAC38632EB80396E677513731164ACC3A7198056B46B02A8171EFC0 +E19C4E05A9214566DD5C358A2EE6F22DD401B33D99BF5F8B8BD0DEAB0C6C544A +D2CAD78521B69F58B7321C18C4E0E97FE1684716D485B12C980C4A263466B42C +2A01BDDF7A5D0FC8DD75A83959DAFB9B7BC87D1B5F6171B5914878B34CDFD463 +3FBAF3758FD63E5ECE0E86EF5F3AE1A465947ABF33421E111C5C76E28D94A4DA +B255FC172AC45D34E52AD3F719591A2BD58AED84C1A906F80211D4AAB8189838 +313B39AA70C044C01CB09DF64CCB426480FC60050C965FD05184C0923BD8387C +93976A1BB5E3049CBDA89307EB9487BEC4C946F537FD278D5CC0764B927AD35C +249B3D925C0434F55D799D2F42FD6A8379DCAB9350025F6138ED5BC4AB033DC0 +02445CEF7DF52B42B3D841E32A957104B3CDA0A86348886701A39763C5B9B745 +6C24642787F4CCB9593D181D40721161778D65EB8895184EB658CC267824978D +28EECBDAC4BFD429B2FA117B9FD2AA37BBA522D1CD3C0D027D0FE11D2DA19FA8 +BBEAF201A8DB15CD18B88DBFCCAE92051B80F905B6257C39395D6B792DC549E5 +7CAD489D79059242D71F57CA1C13ADF5A2BC8EE437EAEA7889B1583FB6DB65D4 +0B4B8B27F71F4221DC637479B69BCB071C8619A071D8A19EA1F86408104800A8 +3C08A2E55BC78A48F416CED858B29EE15569EE23824F7474B2154C022B4A029C +A6B398D15EC7A352C90EEF8F2C946293AAE238113A242A378EB407EFB3C91930 +5F96B9A93C320648C8EA0ABFD072F92B954B64E84EE8B5822A8B8E9C2E672D03 +9CA1CA795CE1F2B6F345926E475BD47C48E4ED0ED7010DFA44C14D8BCDEC0C7F +BFA4732A73975F1C9C4838EA438149CE62DB2DD99935283572372039E094E691 +74F8801AA0E414783E957B5DE99E55DE8B99A0D53D1C725D7B469587C7A27250 +71708ABA923B08B37F0147364D9C8EEF74FE7EBC06C647E2CEEE77EEEAE97C13 +AA0B25568EF8FCF971CB5AA2DF05D2CD2B03C79350C3ED3EBEA8408253A1E76D +9B646DB119AA2BC1FFDD56CDA020BB3E08AE16AB0AB41932538CE4F38C69455F +FA9CFD80CDF8F178C402A6B328F182AF842D7C489191B1C55DC833C414D2641C +3E0770D4F3C41383F2689DC49E9F560BFEED8E9388CB8C042BF52A9121F4578D +F2B957786C1252422BC65EB930E13BE614416344C817FD40E9DB6B539279B90D +0D865F83C0CB1AD567B1B6339C0C5F47C6DBD456CB45B4D27768E71BA3BE6212 +46D0239D970B4D6EBEE52C4A0DDB9F07D69CDF193569688754834BE42624416C +27135FE152A2FEAC9CB98F3041675B4A4C321E3B2A8681E76A0160644D5B2FF9 +970D2035C3C2AE3E0C6176C7DF7B46BC8286F2959D5DD190061395B58FCA8A0C +35E3CE3E56B5E7504EBCC9F64221CC07056D3B7BA81E93365A20EA592A853A82 +E261A4CC7F2A6BBD366BA051837BD3ABB5DA5D7B700BECE6E9CB296DFE877E0A +2EAE61B3898ED4BCA46A06D6E30670E6BD4B8749D993419688C430BADC1963A8 +1F10B657CDBD25653A9F33401688478E9FB00309B756AF05C6F3D0E9E2F3726C +12DF044561F0878C812A9B55830BEB0CED4858618FCC235FD6C7D1F6198E278B +0D4A12C2B6994EB41D688BD7D06CFCEED043D0544A8295F811B89E006E470440 +4C8BC39A21A5E00C26D07C37DA951EA36F9CF2BF4473F4449BE816EB733DCF25 +99220E9B3F8E083FE2A7A7F28D5FA867B8562991A543F64D323ECAD370DCF8FB +94E3A1221C12C84D6ECAF55AE55B5920F60F2051DE3C3179DB49C3E44A6D4687 +FBFECC7A026F590806041DB8B5E2699A2768A8E4B39B4CC3C8A28937C7D264F0 +0A155696106FF74E604B262147CDF20AC9C310644F46544D983501838A56A5B2 +AC1AB33F40572F1DD11775C2F056F19CCCD2CBC45234742DB65D1DF2D3CE370E +4F3B64283BFDDBCFA51331415CB78E03A73B3E592764F9CACE7BCD69C4B47714 +FDF3E3AE384DA9051DF522A59E3D9499C5DE0C352A880650348D18EAE23A737B +39840E5B56127C297CDEF537241FC1A53AFF283F6393E74E1F02BEDFCDFD0667 +0BA98DEEE0CFDB5E0C03CA1CF5D2720283EB01CEFB1B79976D6F406FA389B59C +789559CE3BF2ECB4A5CCFF2CFA855EA2FE6917ECCAC25438DADEC709706E0726 +772AB15D6DCAE1F36AB91EB583D1CFCBE8E007C04366CEFA905E9783C00D4B99 +CA4DE0AC8792A6585B8D471240B51F5BB638B2D63CD5AD9C13ECBDE314F28EF6 +4A4B32D3679BC0009B7845194BD0905712923F88555B9BB80E1957D9CF6378F3 +31AB292B0920D7A7F4D519F8C9A7CBE4988D1C26F9DA61BFD392CB474B4BB668 +FE77DCF953DE8B9DD1608CEC4A26F1AC5DF2C09873CC61B68850D29761D727E9 +912B5EBF7E6E57C503C22F18AB4FC094E3CA7DB7B0345276166EC5CF38C27DC1 +1F337229BA53EB197028FE6829933278953ADCD6FE73AA13204EC1795F25F477 +75A23ECC18D554268467EDF71A3E4642564F3FDC622B23D590994A4DACE02B6D +0591E13AF6FA382313601A6FD7B6CFEF0179270D75C40635A064B255C14C8B85 +8DB554B30A064B7B7FAE922523E519AC871629C2A73F98EE0184306CE9609C7B +FF06283A051E48D6E8EFC6B62FC1012264CBFC274C9BC28B12CAD77B43391514 +E3FC9EBA95ADD2481B8949EF4DCE0585BE0E8DCC3F564E4A2B5A00DCE2329377 +149933D27D2AC192CA70F4C78D759854BAADF229D20264E725D886263375CDE1 +7FC3C2FA2AEF0583BE68AC6C694E9C1D5D76273C9ED4786A6F0B0F4CB670F2E1 +05EB78958B038CBBE0BF6926DA3412FAA53269FA60C45E352E2F66000F9CF179 +570D01B796CAF9B2DEBCF35A759E102F589038EB06BC5D7047B9234FFC84C57D +4710DC3148954E27A3EC7BB7D306943B0DEA92A21B52D33937ACAE51A7DA1C79 +9FED622157B532784C158D9B137741D3B32C70028FE99E54CAA98602E603692D +E3FFDD148431BDFF8AFFC5FBB10F7F304A42410FB54868B41B2104A8500FFD64 +3437AFF9717E4814F90F742833EE0E9601ED93EFEA6CC174A07F57B7727D6AEF +6C94EF4905258729023703188A6B69004D25EEA6F2FDA6357A0A83DD49FA3B1D +6529FDDD8576C8D249B87A00994F315B2ADE21214AA9642A58D2331ED4B2A633 +4325503E9E4D98934EFB374CB5A1D9C76D03AFDE9829F5EA3B21CD685044AE1D +26FBFAC83068B2AF4BB93841F1CE89A92BA7DCD5C58A020C003D01B389B302F3 +CE95588EDDBD8E6F2AD1FE66B1A27C9ECBBF0AB4A4E470CE288B7599DAD31E08 +C752251C2102B9B78DE589E2E0914A4DC2DF0BAD66A79B444DFA4624C9FED940 +9C49AF5127B6A534928ADA9E971B07245E3E7A5C4B34A30CA7A703BEE659CBA0 +E7ADB8EEC843BAAD46B8681AF4098DEADBE7B56ACC2C5187A961F105AFF18251 +5CB8C886FAEA453F6B9DAFF8AE2CF0FB6ACFDFC8726B657BC13C93F4F4AF0E5F +1FD259DD724D7A4A9DEBE844A3E8AADCAB1A437DEC6A42BC0FA6CF19C0DA7777 +9393FE650CFEA5761EF824E946BCDE69B6B9DC72F228C34BF2D3A275FE1AB3C4 +B76649FE1791E3124858F8B634D0CC4C68E50CEFAF96C936F16270891BEACD72 +1A804EECD7AA06D8CF90D1FDDDB412B980CA2B8268EFA49328BC7E7C7AE016C4 +4E1DC48118D635CFE7FDBFE223B4A631A94645CE522988621B26858ECA7DC122 +3A1FC1B14750990FF721F1EB7ED1D8B447A51A0DB2C721409707245BC1BB6ADA +9303713CBA7FA185052BBF254F5613EEFB5A8279212ABC39E340CDB7844459D2 +5DFB805531A4E1BFE7A377A0395FAFEB8CEBFFF8809EC547404986B6D7876752 +C9181E07C84E0114588452844020CF1028E5B782F7D3F2B716836B66C8E68A22 +F55EE41606E0A035FC109AB7A294EA3D504285F28D2B9054B9ADAE04093CCA6E +3F768CE4E587F85E29496708CADA5BD7719D4650C67FB1458353687DFCFE3B6A +7868B4BC7B9825A6372B13F455C454DC37B6807A9069D17E7E336360B10CCE14 +83861D6131993FE148A9BB9F7681DCFA477D5E3A3E82CE00650FCE40639992A6 +4D1206C42BB1A87BB3ABE72966C48F85F5237A7A1ACF7E4FD71105A65F0D1F01 +E01C7B7DEDC88198C7CCE8617E109080BFE1F2AAE6AFD476A71F4EE67EFB5692 +8F35045C3DFA8B18957D87923C66951080414A229F8C83B72A85CD060C6971B8 +1EB996B4E8F13536E3903BC49EEB3E736D5DC41C63356F0FE468CC0B872E44E5 +E7B78DAEF8C0F79D26F3EA6F08C80258429F21394937B03421F39035666B2A9F +4EB75DFC2909F60D19669AEAF8933E1D5A7E9CC45ECC34D68854124B62D0FCC1 +05946FE9C0E872380756DFE431EE8B5941F03C7832C1BD08E8174216E4018821 +3EEC3E49097E8421D92785868785C6D883EA8181E820BEC8C39E30386B59F099 +B8BC4FBC1D22608FFA88C4DB42D79290FDCE5A68AE57F751CD8CC5AE6CD9181D +C11FC078DF2933CE800AF554C9D857A58E29B60E01E77AB1703188488E4CBB01 +BC821D7254B0AE1B3DE113CD6584C18D89472BE9EBD1DFCCA15CE83F7C8D195E +EA75DCA5316CE3CE6087F85B895F7DF73D15ABAB6DB710B478C17F1C17F7C770 +32A1E39FF1EAB4734D2BA37AED9A296BB5FE06E220871FEE08CB67E5F429930C +84F23DCE0F3F0415775CA86C871CEB7BEBE68DA4D39780B12D11E2A8A49F2724 +95FCFB836C880BB3BD3EEAD4A4BD4416CE9EDBEAB4AFF4E0494EC8A4228A4BDA +7B2DED10F7B1C46D13C121CC6ACB12664E492E8025C344A5F71A7B8B3BF099E3 +5BD0A9C72BCD1297C634CE18E5B7B857902EE403CB275AF0A6F0B986ED8B01ED +3A9418AB0EC6386EBD13A3608BC0FD8DC7D55F7134CCE3C62BD499655DD03FBC +FE82A10C9D4B9FADF7FF06A62A1C5FD3C6F4AD8195551F82D960062FF58B29E5 +ADE3A77BD9AD07A277DE8333DC431C18FB39FC035ACEA068170181DC571C374A +69D5F07D0B64BFF4C3B79DE152A055A0EE5A18522D74E59FBF796017E9B4EC86 +6B108A9CA1386458B2B6AAB7909794942E70AE15D9543A87F2A8715A639BD2F8 +3EC20F8DCDD32D2228DB053BA5B1F54A733965332DF51F44C6B6291609E2CC46 +D80C8759EB5E1CE7FE3E945C2892FC1396AEA8BE5501AF3DEE22DAD887E7BB49 +2AC303D5A1009869E4ECC7F2C9B759BB1C2B441C866473C67B6F246E5E81EC55 +6C0E1E117440A4C71ED8F77FF9FE77601C8B1BD1331EC06157FBDC52DBC85A9A +8B6F0A7D578DBA4923CABB923D6E87A6AFEEAD714AEB730930B1A08C3368CEC0 +6811253A57630C1B25C4148FDBEF94F6B5DF38EBB862651780AF468127EB084A +914BE8CBD4E96557B2718F1F2623DA3DCC3391CC68D71CC1545F8D3082736969 +D8501656BA4A689D41D2310F4B7B36F271EF16927CC828C1A8B5467D26250BED +A1C8A8BAE59B5C657BCDB7350D728B21DDF1E848D9482228CD120C85FC9ACDDB +978AC509F933470EDB1A31CDA4850C368D8FF7C1669CC62C286979AE74F07FFB +E2FDA0869C0D5884B9E48457EC19EE3E95B4DA9605D611DB1A5CDC2487A7CD0A +7A0CCDB7BDF4B032B62E8551C4B948025F22404CCB18801CF9FDAE0C9C777B73 +A25008CF809712EBCBB770B250EA9347C864064AA88F942286FE1BD04E99A385 +B2DE0EFA3DC20FA84E15AF6B4CD6ACDAF67717827CAFB6BEC5C23552566C4B3E +2DF783F09EE7E9872D1892ADC49BF9103E1B705EBCE07F7041BB29C0950CE6C1 +BC719ADAFAB7BA379DC44BF0EB42A306384BEE1C2266F509063A91F989AFF994 +DC94290DDCE511D731F2D1016D2076377CD41A44EBB569AE1E01D5B8253F58B6 +1D834CF2437B10CF22F9EE9BAC3C942D5565E8807C5C0005E9C764531DA374A0 +D3D6343FCAAC903C5F6845ABF15651D91EAF66463ED51E098BF31C911050A7EA +826B8FCCA42C2664FD31F2D37A930F6BCCA2BBAEE925B232C005107628BCCC2F +D8EC132E205A888D79ACC0BF5651EF2BC73003144DCA4D30F2E3FCD80B1A93F1 +D177C1F556BFB1A925F52E82B9E3CFFCA4C6683F5EA237AB81DF8C533DEB2EA6 +6263DF951938A62AF2B05BF8D1A5644DAE0125899B6438D5223944C9FCC8076A +5CAB809BEC2EA32016FFF0A2D69EAA2F0E85ABA5116D3A18E6A2D01A1F525144 +94502CFF746D8CC1201EEEAEE04885C15D66F62E54ADEAA008C53F5550F76C94 +62BE7AC0BFD4DA723E8A6291B14E2CFF4F59965A39EA256726D296F1DA987995 +2E1BF72D17924B88BC285F1799C930FDE1C701ACF32E3EFAB5CBF14084DBEDBD +FDE3711FF58C0B7DBDAAEACAE9869559767C4AD35820D2B2569E8A7E1884E363 +E597F6956A036C65BD1F36085743AAF8400F3028CE806F4BA722300DA8C16ED0 +2561339100E28E07F7F372FA9676047B471777292045AECB35471BFB02EE0754 +FD2B321388A7D1EBE5DBCF70E9A1F144C80BEC5FA78277C16A9073C6D83B19FC +1B2817027169660B8BA2EB08445BE1C66EF2135E453F41FA094E6AB4D505187E +C67821FA59C9322253100E4422D593627BEFC4C30296ABEACC704FCFEB7EA562 +12C4D93839F26DD0133DF5E839C8D32AC273B2923B29EDED7436FA9DE8F907FF +B6C1A15248DA6548C53C2506CD9E99B627BED7C518988ADAEB7BDF5233DD9DC0 +F68608079220AC2BF3AC730605E782132640BF4C869A9983AA3861C474DF9F46 +5A0644313917D426B1408AB392199A758DB4A15FC2AA965BFB0854F4698E3347 +368E40396715620B5D7A21FFE9C7636DAAC7E4B0DD44D9D6EE6FFAE47B99661F +7CD3601FCCCB4F0489996F6E1F510F79192F50CABB38C51A6A3F954C2748A0AD +A69221E7ACAB681AC81AB52EC969D5B8DA96BD6B34145E52DFE419BA5A825561 +4D2B2D8B32376D17DE4AAFD72BB54955F68BA791E01957FFD02BEE0F4BEB00E9 +C829B6682E6B6F4454FD3B79C102C2CC60BB384878DA057CDD1493E0F8A5A15F +8000295338DDCFFFBCFC44F27C2DFB07FD0ECB0018C192EFC34A6DC1F9176851 +3E0328B62E589154241721E0541962765F0190A9D17CF219F663125288AE196E +CF6F784A7A635D8CFF6A76D0E11465EB8A63C2A4D4E9A5C283EDDAA489C7FBD2 +73CF2C91A0A1C33110F88D5B6D27A0B352A6B9E10EBEBDB3B826EEB50841554C +8B69094C65555429252AF4D3B924CF411BEB9AEB235429DE4936E7798A8D610C +377E294A19B1DBD9CDF8A63F6D7CDCE28B72DB4C7F0F6EA1F6DC8F4686B3F1E3 +B8C67AA7370D607DB6DD0263393E6486AC09CF6B489C45C9B2E8B2C72891D307 +488A58E440B956317C1D5FB8F98930AF076818780D25EA2C0D0819CD7E5CEB7C +497981D54B1D8F8E62BB07B2F5242883CF314331A81BE11DB375B895212B5A83 +4E68377DC532DE6C9F639474F518B60CDB5CFB9CD3DD963BD720CDAABC82E7FD +0D540442FA9763488B77A0592FEF7AFFBB40B80CD0F42CE73615D7190219ACB5 +1BDABAFD4E51DEB4AB0C296738AFCAD36E57ACA30CCDA22B79E67C3CD89AF603 +5EDAC77A324B6A0BB4C89B7BB17EF43A1BAACDCC8A3E626B8B11E8DE73BFFE07 +45210F8BE4E530623890F4039B65117F0523D9261988F1EDA864AEB2B37528C4 +D5C6A0BE0BBD170E505451C53B381FBD3ECB7A329F7E6501BEBDA228440CFE12 +768F5FC9DD948C6E92060B64465DF451ABA0BBEFA8D8C1CEC434AB82FA978967 +3A01813BBC9147105F2C49504CF9AA9CFCEE4A976DA3ADA0D6207DF43501E06F +5226B6B90433790AB24009ED005F5CC228F05E221485E475389A253124A49074 +2C3983517CB731B50F2E4003B1E25F648794A9AD8E64BFEE2DA083B32EE2D0F9 +2CE8820EEBA9B91E7D1561D8B4FC45ED66C95D364524FE7CBCF7B16EE97DB739 +B9B45DDB8C45918B0664F6BE537AE14671D8AEC2F4807341ABBFEA7A1CD63CDC +CFDCEED3DE1035AC803AF46305983BD156B089ADD0A81CD9988280A9E16BD900 +A65A332DE5F3A2E2433DB662255FD31580C88854E754817125B059F10000A1CE +441E40ED502BA7F620E21F6FA85F011F281DB3CB63723A8A66C4F1288170351A +042CEDD611AF550E235E9ED1BB2E878655D68BA7F7602E84237C52F99D95DBF9 +FF8F68E98C081209390368B65E4F94587F9E0DD527146A592D807DA4D377C0C9 +F2DBA29080842E6D3F7F34E11454BF54BD9F312308A73CBF464C0758E517DB00 +73F494D29CF03D40FB6842E2CA8C8E7309500F35F47DF50847CF47AE5FA60225 +F468DB13E79532AAA4272A45F1A55CBF7E0C01B7A54D5AD1186BD1D73E602162 +01E24798F5BFA86787A5DA2695E3354EB25B7DB726FAB3A17FA09A6B212F051F +F6FB3215A24A05B3D3F4F93634B4FFF4960BE17644A981B9FE17B586F952E4C8 +7506F4F0590EC85128AFF5C7CEFFD6BCA39261E0C5275D8C8B03A5CB52C7D5CF +B9183782E12AA1184373C41EF0E5E759EFF61EB627ABFCA8C90D2A1DAEDD7422 +1CFFDAE95479ED216468ADB29ECD32654FF799C1EB92C64A844A55BC52D513C4 +DB2794F2D436D4F9A224CB760781143C61A92161D563F0AFA6842D61E96D8FC4 +8353102B2520DD96B25E41F968CDE061E80BD0FA0820D7B98471FAB1889293E8 +5A0D903B6572B1163998B02432AE8D020304F200FE743B5AA6E0C0B7730CB260 +06B5EE9FCDF4A4BFF2C8E523703565EC7DD6CF077A0CF27A80C6ADF54148F28F +2B774E35E1FEF541418F38DD2556FA01BC257076AA9872B6456C6F5C959BE404 +CB6673B29D63868CDBD199D643EEF0D59DB858FBFD759C812C7EEC46720217EC +295543072288962D4063A1F08030BCC6EA1EFA3DA5FF240F216C90322D34FCBA +9522FF5623A082B828AC9C2EA9666A1C0C33725502F86AEF34E884E17160291C +8659DF678716331930EFAA7096AA26E6285BD4CA81B8890D48378B62867F7928 +3D78C20B5655BC15C81961A0238043EE85E09247E1847E4534F0ADAB4B51D39A +99944191109D0FFD4809343E39FBE36B05B947C4EFF2CB26CAB8C540C7D215D4 +D3E4B0C116851A9B4858DBE7BF9E19975757A59AFD6DDE4285B546020123D0AA +C03A073004396E54571D0DBB593DCE2E4C29A375B8001970CB88E500E6AC8628 +B0D0E414CDCD7F5AC164D1B03795442B7DEC0FEFE0318C327E766DB06B112BDB +18B06908B760B4804A5F55881AEEBA79704454852D7EF4C75A58BE0F02CA46B2 +E4183D4326AE732D5105DBD50E55DE2BC2406B66589F711A7CCF4CBC3C95AE62 +BCBCA54F63440A6A2EF1F7897FFFA4D1D479769137E06EDA52707ED2536359DC +D7A54EF6E1BF5FF917AC2E499AD9C4EA1B7D81D03C9F14AAA9D85E6951712E3D +8E9CB2370FF6D068A9D80203247AE015E4E1C9A8C252DF6F287A1B2AE74607DC +96A63A846C24F3465CDE3D7C54A11D35A15EB5BA9943AFDBF9414CF00CC1C3AC +512787218DE526D4549F4506279CD297DBC84A5CCF67BC922C4F158810558805 +344A7F209E977E13E700387ABDEBD9C26155747A9679E5D0B15A8820FD1E97F4 +478DCEA900DAC3751439EB73DE0D0AF49F1AF0606511E3812D81AD585AA7EEAA +13CD7EC33D9F6A90370D5198184F47B75E6F0DFE40F0AFD2BFDBE46B2F4AA233 +47622B9B863E728096BDC9559CF0FF5F1796C50258E75D90A4AFBAC4A17EB9C4 +466C58C9618BDA37967F172EF7DFA4614B41F05838AFC2E31DB21A8ABBB903E8 +7F5BCF4E4A1E0BB48BA96C999483054FAA7086EED4F329B15C73AF7A48B4E046 +54DBE0B7BDBB377D74CF97B8184B10D3EAE35665140702D3FDC76F25DDABA545 +54B2A10C965315DDC1F4BAF074984881FBF5EAA91355FAAB57CD2B35A009FAAF +B509C32E0DE465688F55A4BD86295B4CF8DE632D1CF1ED8FC9A3B443BB11B2C4 +26D566465ADD22C061EABD8C48430BA23290DC8A22FE12A49EF82C560EC2790A +9C87CA983B173A5CAF4B89EA9700A751546CEFAEA91F7FDD678CB77929DDD5B9 +4A405EC6BC3A4823915A3CC58400966A64B92D23DDF891EC8D0AAAF2A4AA6CC0 +0AC53F6FD876A44CC621307CB9F34F0380B991A55FFE1C9FA8775BB842B0C89F +DAF0D32FE956947EBE97D5703582AAEF3D4DFA918F028636F80920DDE2D3FEBF +ED998E530D59CC919A2DBF6DF91192097B160C6168310BCD1F8600C18B3DC46E +A899979F762C1426ED046D94486A149B08B476A2A67DAFFE87C812CC84A5A7F2 +FFA96E4712592AE0F3AEF41983B19FEDAC029EB6E99D130856B2E7516F192783 +9A57B32A047C95CFDEEF612FB006C07E49AA0A9052232BE5CB243C8D9078B077 +0BD19CDB8AF2C7F56FDF7BD826E1D8ED52D7D994EAAE31661302651651EAAAED +DB4C8E62F9793539BC54E33E682268A10190A1AD8C30359821A26C178E3EFE20 +8BB0F168DFBAADFD297737640B7CEE6BD6AD96AF38570490AD7C7479D2A42296 +9BE596CB48A0DDE1EDF46FCBEE7C62C3F2B3FC989371D057EFE951AFCCC84CD6 +BA834EEFD27B14F9BE22BE047892D9DB051A11756ECEBB27CB8F1A1C516F0B27 +EDE6A8FFC9645B383C6B9F2C5D1EF5C6B9D21450BB199F99B611A6124E1868CE +7CAFA0A287ADFFD2C8F28A8E68DE6F77FAA0256F6D3432FC886BD17658F0C0C7 +26879EBDD3D021D6FD5C20DB7DE49CB11E85F727C6CFFD188563874473D3E90B +6171BE1A410B74BEA342360C0C95D8963E03C1F1816CE5E75531FFD42D9EB334 +CC2118C94269E229AA825E1750DFC6CA12F62875E3CFA4883B28E307EDC2DE52 +10EC5F0C2CD03A0B796E34D71CE901438D59288ED1A4BF063B2BB042DD9A0863 +F356D1AE896CA6C9DE32D0717E880AAD1440E8E1C34E7BA81DD4C65290638369 +6E37E74BDA09AE2AB1FA8DE2CB27A88D43DCEF77DABE29526C006541EB2843BB +E83ECED0E872136662D81295D55F860A6C2183DCEA90D9FE702F510C5B62BAD3 +8834110293318956D1724C07794A6F8D6A312118333B5DA3AE05DB7C773EE7AD +EA36A38FC4EBB21CF46E16A33B76D50CA6789AC16117CB1254C1FDFE5F51662F +E442D9C52AA971C031FE337741E63DA8C1D544E68F0F80CC6D2CF141EA89638F +9D14F1A63DA1503AB23BF1D7B19E5E0E543660F3ABACBCF3D0FD3F288A8EB696 +B1EF39C30042BFC4A899E4B528B38E8EEF04DBDBF072C31FF0D7A4F8A406F6F9 +6D40D86C613305B82BC1BCE1D29152D63FF0277248E618C42AE5F35B02293F3A +981ABB4CF0D5349944F5EA5AC9BE4D7F86E18AED6548B98AB6F63E046ED4D1A4 +98BD87B5CFC7C541E3DC974554EF88290E00FF088A42363A74B6B2B5CD073C72 +917AB7C15AC443337F5552C183AC8271D7584E952E3C83A2205AB00E16A974B7 +0D4B908402BC16FDE747592952B5D2105E223428F1DAF74C85879CF74CA6D181 +7722E820B30CE7FC492E67C3D29B22D998AEEADDD054674D71C98E720CFEDCFE +165BD34889992AF05778FE73C99087C7CC6288847D879EC77C21C73E5AEC1D05 +08BCEB3689CC9D7E197F95087AF8B16DBFD1BDC1CD450948237C54C409A9FE85 +BF0385545954105364DF6AFE293C36E236616A981C2B1A2311F9338426256A69 +F7A896D9BA6530622D1191E82317DCAAD8622B51DA357014203665315E09406A +691EE4D94B6D84589DD8D3A8B594455F66A74824F4739C5F5D8E956525CF9273 +05E3094E4CC0FE16FC5F0D68556CB0120AA431737837CF774B06BD17D6287781 +350DB06055A3BFA5E7A0253136CFC871A26F1477B3C6AC4D0C54DBB2D5BEFDE6 +A7E4914ED195CEBBFF8E1445C7EA36875770631D5E417E7CD6EAE8C1B13441EC +F62CE056CFB2DC8368F4C0B2D65AFACD82E07324C3F8904CB71AF2E85CC98116 +9A7F9394ADAD6B8107D6358E7B465E454D058B78BE2A55D0B937561535265BB1 +4184F8D7723BC0F7CA7B5334009C7624D30E846B3DA4CC77CF54364B34B2F25E +77664C76F12462C5B2D2EC2178BDAA2C35011DCA5E094DBEA5BFB8342BBD9677 +FF493BA9B30F2F8D1250D4B1D5B51BB6219C673FD0145DD86900398F796B8AE8 +5868D33B8E71ADB374DA3D312FAABE8B32276D537966758C57A18AD3A8890806 +1FAB4F9F6A5FC613EF38CE39A1567E520F779E98 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -4293,27 +4285,27 @@ rf /Fn 197[33 58[{}1 119.552 /CMMI12 rf /Fo 134[85 85 21[91 17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fq 134[48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 8[68 93 1[68 66 51 67 1[62 71 68 83 -57 71 1[33 68 71 59 62 69 66 64 68 13[45 45 45 3[30 2[45 -27[76 1[51 53 11[{}54 90.9091 /CMSL10 rf /Fr 134[71 71 -97 71 75 52 53 55 1[75 67 75 112 37 71 41 37 75 67 41 -61 75 60 75 65 3[37 1[37 1[102 102 139 102 103 94 75 -100 101 92 101 105 128 81 105 69 50 105 106 85 88 103 -97 96 102 105 64 4[37 67 67 67 67 67 67 67 67 67 67 1[37 -45 37 1[67 5[67 112 1[41 20[75 78 11[{}73 119.552 /CMBX12 -rf /Fs 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48 +57 71 1[33 68 71 59 62 69 66 64 68 13[45 45 45 3[30 30[76 +1[51 53 11[{}53 90.9091 /CMSL10 rf /Fr 134[71 71 97 71 +75 52 53 55 1[75 67 75 112 37 71 41 37 75 67 41 61 75 +60 75 65 3[37 1[37 1[102 102 139 102 103 94 75 100 101 +92 101 105 128 81 105 69 50 105 106 85 88 103 97 96 102 +105 64 4[37 67 67 67 67 67 67 67 67 67 67 1[37 45 37 +1[67 5[67 112 1[41 20[75 78 11[{}73 119.552 /CMBX12 rf +/Fs 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 33[{}93 90.9091 /CMTT10 rf /Ft -131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 -48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 -68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 -59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 -45 45 45 45 45 25 30 25 2[35 35 25 71 76 45 1[45 25 18[76 -51 51 53 11[{}88 90.9091 /CMR10 rf /Fu 138[108 1[76 79 -3[108 1[54 3[108 1[59 88 1[86 1[94 14[144 4[184 10[138 -66[{}13 172.154 /CMBX12 rf end +48 48 48 48 48 48 48 33[{}93 90.9091 /CMTT10 rf /Ft 131[91 +45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 +25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 +68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 +69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45 +45 45 45 25 30 25 2[35 35 25 71 76 45 1[45 25 18[76 51 +51 53 11[{}88 90.9091 /CMR10 rf /Fu 138[108 1[76 79 3[108 +1[54 3[108 1[59 88 1[86 1[94 14[144 4[184 10[138 66[{}13 +172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi @@ -4327,7 +4319,7 @@ letter TeXDict begin 1 0 bop 150 1318 a Fu(Bash)64 b(Reference)j(Man)-5 b(ual)p 150 1385 3600 34 v 2361 1481 a Ft(Reference)31 b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(4.2,)g(for)f -Fs(Bash)g Ft(V)-8 b(ersion)31 b(4.2.)3367 1697 y(July)f(2010)150 +Fs(Bash)g Ft(V)-8 b(ersion)31 b(4.2.)3217 1697 y(Octob)s(er)f(2010)150 4935 y Fr(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 @@ -4335,21 +4327,21 @@ b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 2889 a Ft(This)35 b(text)h(is)g(a)g(brief)f (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f -(the)h(Bash)f(shell)h(\(v)m(ersion)150 2999 y(4.2,)c(21)f(July)f -(2010\).)150 3133 y(This)35 b(is)h(Edition)g(4.2,)j(last)d(up)s(dated)f -(21)i(July)e(2010,)k(of)d Fq(The)g(GNU)g(Bash)g(Reference)h(Man)m(ual)p -Ft(,)h(for)150 3243 y Fs(Bash)p Ft(,)29 b(V)-8 b(ersion)31 -b(4.2.)150 3377 y(Cop)m(yrigh)m(t)602 3374 y(c)577 3377 -y Fp(\015)f Ft(1988{2010)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 -b(oundation,)31 b(Inc.)150 3512 y(P)m(ermission)h(is)h(gran)m(ted)g(to) -f(mak)m(e)i(and)d(distribute)h(v)m(erbatim)h(copies)g(of)f(this)g(man)m -(ual)h(pro)m(vided)f(the)150 3621 y(cop)m(yrigh)m(t)g(notice)f(and)f -(this)g(p)s(ermission)g(notice)h(are)g(preserv)m(ed)f(on)h(all)g -(copies.)390 3756 y(P)m(ermission)k(is)h(gran)m(ted)f(to)h(cop)m(y)-8 -b(,)38 b(distribute)d(and/or)g(mo)s(dify)f(this)h(do)s(cumen)m(t)g -(under)390 3866 y(the)j(terms)g(of)g(the)g(GNU)h(F)-8 -b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8 b(ersion)39 -b(1.3)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28 +(the)h(Bash)f(shell)h(\(v)m(ersion)150 2999 y(4.2,)c(20)f(Octob)s(er)f +(2010\).)150 3133 y(This)35 b(is)g(Edition)h(4.2,)i(last)f(up)s(dated)d +(20)i(Octob)s(er)g(2010,)j(of)c Fq(The)h(GNU)g(Bash)f(Reference)i(Man)m +(ual)p Ft(,)150 3243 y(for)30 b Fs(Bash)p Ft(,)g(V)-8 +b(ersion)31 b(4.2.)150 3377 y(Cop)m(yrigh)m(t)602 3374 +y(c)577 3377 y Fp(\015)f Ft(1988{2010)35 b(F)-8 b(ree)31 +b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)150 3512 +y(P)m(ermission)h(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d(distribute)h +(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro)m(vided)f(the)150 +3621 y(cop)m(yrigh)m(t)g(notice)f(and)f(this)g(p)s(ermission)g(notice)h +(are)g(preserv)m(ed)f(on)h(all)g(copies.)390 3756 y(P)m(ermission)k(is) +h(gran)m(ted)f(to)h(cop)m(y)-8 b(,)38 b(distribute)d(and/or)g(mo)s +(dify)f(this)h(do)s(cumen)m(t)g(under)390 3866 y(the)j(terms)g(of)g +(the)g(GNU)h(F)-8 b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8 +b(ersion)39 b(1.3)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28 b(published)d(b)m(y)j(the)f(F)-8 b(ree)29 b(Soft)m(w)m(are)f(F)-8 b(oundation;)30 b(with)d(no)g(In)m(v)-5 b(arian)m(t)28 b(Sections,)390 4085 y(with)i(the)h(F)-8 b(ron)m(t-Co)m(v)m(er)33 @@ -5750,14 +5742,14 @@ Fq(NAME)5 b Ft([1].)150 3659 y(This)31 b(pip)s(e)g(is)h(established)g b(page)e(27\).)39 b(The)21 b(\014le)h(descriptors)g(can)g(b)s(e)f (utilized)i(as)f(argumen)m(ts)h(to)f(shell)g(commands)150 3878 y(and)30 b(redirections)h(using)f(standard)f(w)m(ord)h -(expansions.)275 4019 y(The)f(pro)s(cess)h(id)f(of)h(the)g(shell)h(spa) -m(wned)e(to)i(execute)g(the)f(copro)s(cess)h(is)f(a)m(v)-5 -b(ailable)32 b(as)e(the)g(v)-5 b(alue)31 b(of)150 4128 -y(the)26 b(v)-5 b(ariable)26 b Fq(NAME)p 931 4128 28 -4 v 46 w Ft(PID.)g(The)f Fs(wait)g Ft(builtin)g(command)g(ma)m(y)h(b)s -(e)f(used)g(to)i(w)m(ait)f(for)g(the)g(copro)s(cess)150 -4238 y(to)31 b(terminate.)275 4378 y(The)e(return)h(status)g(of)h(a)g -(copro)s(cess)f(is)h(the)f(exit)i(status)e(of)h Fq(command)t +(expansions.)275 4019 y(The)d(pro)s(cess)h(ID)h(of)f(the)h(shell)f(spa) +m(wned)g(to)h(execute)h(the)e(copro)s(cess)h(is)f(a)m(v)-5 +b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 4128 +y(the)d(v)-5 b(ariable)26 b Fq(NAME)p 931 4128 28 4 v +46 w Ft(PID.)g(The)f Fs(wait)g Ft(builtin)g(command)g(ma)m(y)h(b)s(e)f +(used)g(to)i(w)m(ait)f(for)g(the)g(copro)s(cess)150 4238 +y(to)31 b(terminate.)275 4378 y(The)e(return)h(status)g(of)h(a)g(copro) +s(cess)f(is)h(the)f(exit)i(status)e(of)h Fq(command)t Ft(.)150 4583 y Fj(3.2.6)63 b(GNU)41 b(P)m(arallel)150 4730 y Ft(GNU)36 b(P)m(arallel,)k(as)c(its)g(name)g(suggests,)i(can)e (b)s(e)f(used)g(to)h(build)f(and)g(run)g(commands)g(in)h(parallel.)150 @@ -6003,23 +5995,24 @@ b(ariable)31 b(or)150 3557 y(arra)m(y)f(index)g(\(see)h(Section)g(6.7)g (can)h(b)s(e)e(used)g(to)i(app)s(end)d(to)150 3667 y(or)36 b(add)g(to)h(the)f(v)-5 b(ariable's)37 b(previous)f(v)-5 b(alue.)59 b(When)36 b(`)p Fs(+=)p Ft(')g(is)g(applied)g(to)h(a)g(v)-5 -b(ariable)37 b(for)f(whic)m(h)g(the)150 3777 y(in)m(teger)k(attribute)e -(has)g(b)s(een)g(set,)j Fq(v)-5 b(alue)44 b Ft(is)38 -b(ev)-5 b(aluated)39 b(as)g(an)f(arithmetic)h(expression)f(and)g(added) -150 3886 y(to)e(the)f(v)-5 b(ariable's)36 b(curren)m(t)f(v)-5 -b(alue,)37 b(whic)m(h)e(is)g(also)h(ev)-5 b(aluated.)56 -b(When)35 b(`)p Fs(+=)p Ft(')g(is)h(applied)f(to)g(an)g(arra)m(y)150 -3996 y(v)-5 b(ariable)26 b(using)e(comp)s(ound)f(assignmen)m(t)j(\(see) -f(Section)h(6.7)f([Arra)m(ys],)i(page)f(82\),)h(the)e(v)-5 -b(ariable's)25 b(v)-5 b(alue)150 4105 y(is)32 b(not)f(unset)h(\(as)g -(it)g(is)f(when)g(using)g(`)p Fs(=)p Ft('\),)i(and)e(new)g(v)-5 -b(alues)32 b(are)g(app)s(ended)d(to)k(the)f(arra)m(y)g(b)s(eginning)150 -4215 y(at)27 b(one)f(greater)i(than)e(the)g(arra)m(y's)h(maxim)m(um)f -(index)g(\(for)g(indexed)g(arra)m(ys\),)i(or)e(added)g(as)g(additional) -150 4325 y(k)m(ey-v)-5 b(alue)35 b(pairs)e(in)g(an)g(asso)s(ciativ)m(e) -j(arra)m(y)-8 b(.)51 b(When)33 b(applied)g(to)h(a)g(string-v)-5 -b(alued)34 b(v)-5 b(ariable,)35 b Fq(v)-5 b(alue)39 b -Ft(is)150 4434 y(expanded)30 b(and)f(app)s(ended)g(to)i(the)g(v)-5 +b(ariable)37 b(for)f(whic)m(h)g(the)150 3777 y Fq(in)m(teger)46 +b Ft(attribute)38 b(has)f(b)s(een)g(set,)k Fq(v)-5 b(alue)43 +b Ft(is)38 b(ev)-5 b(aluated)39 b(as)f(an)f(arithmetic)i(expression)f +(and)f(added)150 3886 y(to)f(the)f(v)-5 b(ariable's)36 +b(curren)m(t)f(v)-5 b(alue,)37 b(whic)m(h)e(is)g(also)h(ev)-5 +b(aluated.)56 b(When)35 b(`)p Fs(+=)p Ft(')g(is)h(applied)f(to)g(an)g +(arra)m(y)150 3996 y(v)-5 b(ariable)26 b(using)e(comp)s(ound)f +(assignmen)m(t)j(\(see)f(Section)h(6.7)f([Arra)m(ys],)i(page)f(82\),)h +(the)e(v)-5 b(ariable's)25 b(v)-5 b(alue)150 4105 y(is)32 +b(not)f(unset)h(\(as)g(it)g(is)f(when)g(using)g(`)p Fs(=)p +Ft('\),)i(and)e(new)g(v)-5 b(alues)32 b(are)g(app)s(ended)d(to)k(the)f +(arra)m(y)g(b)s(eginning)150 4215 y(at)27 b(one)f(greater)i(than)e(the) +g(arra)m(y's)h(maxim)m(um)f(index)g(\(for)g(indexed)g(arra)m(ys\),)i +(or)e(added)g(as)g(additional)150 4325 y(k)m(ey-v)-5 +b(alue)35 b(pairs)e(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8 +b(.)51 b(When)33 b(applied)g(to)h(a)g(string-v)-5 b(alued)34 +b(v)-5 b(ariable,)35 b Fq(v)-5 b(alue)39 b Ft(is)150 +4434 y(expanded)30 b(and)f(app)s(ended)g(to)i(the)g(v)-5 b(ariable's)31 b(v)-5 b(alue.)150 4645 y Fj(3.4.1)63 b(P)m(ositional)41 b(P)m(arameters)150 4792 y Ft(A)28 b Fq(p)s(ositional)h(parameter)35 b Ft(is)28 b(a)g(parameter)g(denoted) @@ -6328,14 +6321,14 @@ b(ariable;)34 b(this)e(v)-5 b(ariable)33 b(is)g(then)f(expanded)f(and)h 3272 y(of)h(the)f(substitution,)i(rather)e(than)g(the)h(v)-5 b(alue)34 b(of)g Fq(parameter)40 b Ft(itself.)51 b(This)33 b(is)g(kno)m(wn)g(as)h Fs(indirect)150 3381 y(expansion)p -Ft(.)45 b(The)32 b(exceptions)i(to)g(this)e(are)h(the)g(expansions)g -(of)g($)p Fs({)p Ft(!)p Fq(pre\014x*)8 b Fs(})31 b Ft(and)i($)p -Fs({)p Ft(!)p Fq(name)5 b Ft([)p Fs(@)p Ft(])p Fs(})33 -b Ft(de-)150 3491 y(scrib)s(ed)h(b)s(elo)m(w.)56 b(The)35 -b(exclamation)j(p)s(oin)m(t)d(m)m(ust)g(immediately)i(follo)m(w)g(the)e -(left)i(brace)e(in)g(order)g(to)150 3601 y(in)m(tro)s(duce)30 -b(indirection.)275 3748 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo) -m(w,)i Fq(w)m(ord)h Ft(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j +Ft(.)k(The)30 b(exceptions)h(to)h(this)e(are)h(the)f(expansions)g(of)h +($)p Fs({)p Ft(!)p Fq(pre\014x)150 3491 y Fs(})36 b Ft(and)f($)p +Fs({)p Ft(!)p Fq(name)5 b Ft([)p Fs(@)p Ft(])p Fs(})37 +b Ft(describ)s(ed)e(b)s(elo)m(w.)58 b(The)36 b(exclamation)i(p)s(oin)m +(t)e(m)m(ust)g(immediately)h(follo)m(w)h(the)150 3601 +y(left)31 b(brace)g(in)f(order)g(to)h(in)m(tro)s(duce)f(indirection.) +275 3748 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m(w,)i +Fq(w)m(ord)h Ft(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j (parameter)e(expansion,)150 3857 y(command)30 b(substitution,)g(and)g (arithmetic)i(expansion.)275 4004 y(When)h(not)h(p)s(erforming)e (substring)h(expansion,)h(using)f(the)h(form)f(describ)s(ed)g(b)s(elo)m @@ -7663,7 +7656,7 @@ b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)630 Fs(getopts)39 b Ft(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 3821 y(greater)32 b(than)e(zero.)41 b Fs(OPTIND)29 b Ft(is)h(set)h(to)g(the)g(index)f(of)g(the)h(\014rst)f(non-option)g -(argumen)m(t,)630 3931 y(and)g Fs(name)f Ft(is)h(set)h(to)g(`)p +(argumen)m(t,)630 3931 y(and)g Fq(name)35 b Ft(is)c(set)g(to)g(`)p Fs(?)p Ft('.)630 4064 y Fs(getopts)c Ft(normally)j(parses)e(the)i(p)s (ositional)g(parameters,)g(but)e(if)i(more)f(argumen)m(ts)h(are)630 4174 y(giv)m(en)h(in)f Fq(args)t Ft(,)h Fs(getopts)e @@ -8708,9 +8701,9 @@ b Fs(set)35 b Ft(allo)m(ws)j(y)m(ou)e(to)h(c)m(hange)150 (p)s(ositional)h(parameters,)h(or)e(to)h(displa)m(y)f(the)g(names)h (and)150 665 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150 834 y Fs(set)870 972 y(set)47 b([--abefhkmnptuvxBCEHPT])41 -b([-o)47 b Fi(option)11 b Fs(])46 b([)p Fi(argument)55 -b Fs(...])870 1082 y(set)47 b([+abefhkmnptuvxBCEHPT])42 -b([+o)47 b Fi(option)11 b Fs(])45 b([)p Fi(argument)56 +b([-o)47 b Fi(option-name)11 b Fs(])44 b([)p Fi(argument)56 +b Fs(...)o(])870 1082 y(set)47 b([+abefhkmnptuvxBCEHPT])42 +b([+o)47 b Fi(option-name)11 b Fs(])43 b([)p Fi(argument)56 b Fs(...)o(])630 1219 y Ft(If)22 b(no)h(options)g(or)g(argumen)m(ts)g (are)g(supplied,)g Fs(set)f Ft(displa)m(ys)g(the)h(names)g(and)f(v)-5 b(alues)23 b(of)g(all)630 1329 y(shell)j(v)-5 b(ariables)27 @@ -9024,26 +9017,27 @@ b(This)30 b(allo)m(ws)i(easy)g(re-editing)g(of)f(m)m(ulti-line)1110 894 y(commands.)630 1052 y Fs(compat31)96 b Ft(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i(that)f(of)f(v) m(ersion)h(3.1)h(with)e(resp)s(ect)1110 1161 y(to)k(quoted)g(argumen)m -(ts)f(to)h(the)g(conditional)h(command's)e(=)p Fs(~)g -Ft(op)s(erator.)630 1319 y Fs(compat32)96 b Ft(If)27 +(ts)f(to)h(the)g(conditional)h(command's)e(`)p Fs(=~)p +Ft(')g(op)s(erator.)630 1319 y Fs(compat32)96 b Ft(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i(that)f(of)f(v) m(ersion)h(3.2)h(with)e(resp)s(ect)1110 1428 y(to)22 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f(using)g(the)i -(conditional)g(com-)1110 1538 y(mand's)30 b Fs(<)g Ft(and)f -Fs(>)h Ft(op)s(erators.)630 1695 y Fs(compat40)96 b Ft(If)27 -b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i(that)f(of)f(v) -m(ersion)h(4.0)h(with)e(resp)s(ect)1110 1805 y(to)22 -b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f(using)g(the)i -(conditional)g(com-)1110 1914 y(mand's)j Fs(<)g Ft(and)g -Fs(>)g Ft(op)s(erators)h(and)f(the)g(e\013ect)i(of)f(in)m(terrupting)f -(a)h(command)1110 2024 y(list.)630 2181 y Fs(compat41)96 -b Ft(If)27 b(set,)i(Bash,)g(when)e(in)g(p)s(osix)g(mo)s(de,)h(treats)h -(a)f(single)g(quote)h(in)e(a)h(double-)1110 2291 y(quoted)46 -b(parameter)h(expansion)f(as)g(a)h(sp)s(ecial)f(c)m(haracter.)90 -b(The)45 b(single)1110 2400 y(quotes)34 b(m)m(ust)g(matc)m(h)h(\(an)f -(ev)m(en)h(n)m(um)m(b)s(er\))e(and)g(the)h(c)m(haracters)h(b)s(et)m(w)m -(een)1110 2510 y(the)40 b(single)g(quotes)g(are)g(considered)g(quoted.) -69 b(This)38 b(is)i(the)g(b)s(eha)m(vior)g(of)1110 2619 +(conditional)g(com-)1110 1538 y(mand's)30 b(`)p Fs(<)p +Ft(')g(and)g(`)p Fs(>)p Ft(')g(op)s(erators.)630 1695 +y Fs(compat40)96 b Ft(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha) +m(vior)f(to)i(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect)1110 +1805 y(to)22 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f +(using)g(the)i(conditional)g(com-)1110 1914 y(mand's)33 +b(`)p Fs(<)p Ft(')h(and)f(`)p Fs(>)p Ft(')h(op)s(erators)g(and)f(the)h +(e\013ect)h(of)f(in)m(terrupting)g(a)g(com-)1110 2024 +y(mand)c(list.)630 2181 y Fs(compat41)96 b Ft(If)27 b(set,)i(Bash,)g +(when)e(in)g(p)s(osix)g(mo)s(de,)h(treats)h(a)f(single)g(quote)h(in)e +(a)h(double-)1110 2291 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h +(sp)s(ecial)f(c)m(haracter.)90 b(The)45 b(single)1110 +2400 y(quotes)34 b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s +(er\))e(and)g(the)h(c)m(haracters)h(b)s(et)m(w)m(een)1110 +2510 y(the)40 b(single)g(quotes)g(are)g(considered)g(quoted.)69 +b(This)38 b(is)i(the)g(b)s(eha)m(vior)g(of)1110 2619 y Fl(posix)f Ft(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110 2729 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 @@ -9256,65 +9250,66 @@ eop end %%Page: 63 69 TeXDict begin 63 68 bop 150 -116 a Ft(Chapter)30 b(5:)41 b(Shell)30 b(V)-8 b(ariables)2459 b(63)150 299 y Fo(5)80 -b(Shell)53 b(V)-13 b(ariables)150 559 y Ft(This)21 b(c)m(hapter)i +b(Shell)53 b(V)-13 b(ariables)150 541 y Ft(This)21 b(c)m(hapter)i (describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.) 37 b(Bash)23 b(automatically)h(assigns)f(default)150 -668 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 -b(ariables.)150 914 y Fr(5.1)68 b(Bourne)45 b(Shell)g(V)-11 -b(ariables)150 1073 y Ft(Bash)30 b(uses)g(certain)h(shell)g(v)-5 +651 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 +b(ariables.)150 888 y Fr(5.1)68 b(Bourne)45 b(Shell)g(V)-11 +b(ariables)150 1047 y Ft(Bash)30 b(uses)g(certain)h(shell)g(v)-5 b(ariables)31 b(in)f(the)g(same)h(w)m(a)m(y)g(as)g(the)f(Bourne)g -(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1183 y(assigns)f(a)f +(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1157 y(assigns)f(a)f (default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150 -1355 y Fs(CDPATH)192 b Ft(A)39 b(colon-separated)i(list)e(of)g +1320 y Fs(CDPATH)192 b Ft(A)39 b(colon-separated)i(list)e(of)g (directories)h(used)f(as)g(a)g(searc)m(h)h(path)e(for)h(the)g -Fs(cd)f Ft(builtin)630 1464 y(command.)150 1632 y Fs(HOME)288 +Fs(cd)f Ft(builtin)630 1430 y(command.)150 1592 y Fs(HOME)288 b Ft(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g (for)f(the)h Fs(cd)f Ft(builtin)g(command.)38 b(The)630 -1742 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 +1702 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 b(is)g(also)g(used)e(b)m(y)h(tilde)h(expansion)f(\(see)i(Section)f -(3.5.2)h([Tilde)630 1852 y(Expansion],)30 b(page)h(20\).)150 -2020 y Fs(IFS)336 b Ft(A)25 b(list)i(of)e(c)m(haracters)i(that)f +(3.5.2)h([Tilde)630 1811 y(Expansion],)30 b(page)h(20\).)150 +1973 y Fs(IFS)336 b Ft(A)25 b(list)i(of)e(c)m(haracters)i(that)f (separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e -(as)i(part)630 2129 y(of)31 b(expansion.)150 2297 y Fs(MAIL)288 -b Ft(If)26 b(this)f(parameter)i(is)f(set)g(to)h(a)g(\014lename)f(and)f -(the)h Fs(MAILPATH)e Ft(v)-5 b(ariable)27 b(is)f(not)g(set,)i(Bash)630 -2407 y(informs)i(the)g(user)g(of)g(the)h(arriv)-5 b(al)31 -b(of)f(mail)h(in)f(the)h(sp)s(eci\014ed)f(\014le.)150 -2575 y Fs(MAILPATH)96 b Ft(A)33 b(colon-separated)i(list)f(of)f +(as)i(part)630 2083 y(of)31 b(expansion.)150 2245 y Fs(MAIL)288 +b Ft(If)44 b(this)g(parameter)h(is)g(set)g(to)g(a)f(\014lename)h(or)f +(directory)h(name)g(and)f(the)g Fs(MAILPATH)630 2355 +y Ft(v)-5 b(ariable)32 b(is)e(not)h(set,)h(Bash)f(informs)f(the)h(user) +f(of)h(the)g(arriv)-5 b(al)31 b(of)g(mail)g(in)g(the)g(sp)s(eci\014ed) +630 2464 y(\014le)f(or)h(Maildir-format)g(directory)-8 +b(.)150 2627 y Fs(MAILPATH)96 b Ft(A)33 b(colon-separated)i(list)f(of)f (\014lenames)h(whic)m(h)f(the)g(shell)g(p)s(erio)s(dically)h(c)m(hec)m -(ks)g(for)f(new)630 2684 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g +(ks)g(for)f(new)630 2736 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g (can)g(sp)s(ecify)f(the)h(message)h(that)f(is)g(prin)m(ted)f(when)f -(new)h(mail)630 2794 y(arriv)m(es)29 b(in)g(the)g(mail)g(\014le)g(b)m +(new)h(mail)630 2846 y(arriv)m(es)29 b(in)g(the)g(mail)g(\014le)g(b)m (y)g(separating)g(the)g(\014le)g(name)g(from)f(the)h(message)h(with)e -(a)i(`)p Fs(?)p Ft('.)630 2903 y(When)i(used)f(in)h(the)g(text)i(of)e +(a)i(`)p Fs(?)p Ft('.)630 2955 y(When)i(used)f(in)h(the)g(text)i(of)e (the)g(message,)i Fs($_)e Ft(expands)f(to)i(the)f(name)g(of)h(the)f -(curren)m(t)630 3013 y(mail)f(\014le.)150 3181 y Fs(OPTARG)192 +(curren)m(t)630 3065 y(mail)f(\014le.)150 3227 y Fs(OPTARG)192 b Ft(The)30 b(v)-5 b(alue)31 b(of)f(the)h(last)g(option)g(argumen)m(t)g (pro)s(cessed)f(b)m(y)g(the)g Fs(getopts)f Ft(builtin.)150 -3349 y Fs(OPTIND)192 b Ft(The)30 b(index)g(of)g(the)h(last)g(option)g +3389 y Fs(OPTIND)192 b Ft(The)30 b(index)g(of)g(the)h(last)g(option)g (argumen)m(t)g(pro)s(cessed)f(b)m(y)g(the)g Fs(getopts)f -Ft(builtin.)150 3517 y Fs(PATH)288 b Ft(A)32 b(colon-separated)i(list)f +Ft(builtin.)150 3552 y Fs(PATH)288 b Ft(A)32 b(colon-separated)i(list)f (of)f(directories)h(in)e(whic)m(h)h(the)g(shell)g(lo)s(oks)h(for)f -(commands.)45 b(A)630 3626 y(zero-length)e(\(n)m(ull\))g(directory)f +(commands.)45 b(A)630 3661 y(zero-length)e(\(n)m(ull\))g(directory)f (name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Fs(PATH)f Ft(indicates)i(the)f -(curren)m(t)630 3736 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f +(curren)m(t)630 3771 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f (directory)i(name)e(ma)m(y)i(app)s(ear)e(as)h(t)m(w)m(o)h(adjacen)m(t)g -(colons,)g(or)f(as)g(an)630 3846 y(initial)f(or)e(trailing)h(colon.)150 -4014 y Fs(PS1)336 b Ft(The)35 b(primary)f(prompt)h(string.)55 +(colons,)g(or)f(as)g(an)630 3880 y(initial)f(or)e(trailing)h(colon.)150 +4042 y Fs(PS1)336 b Ft(The)35 b(primary)f(prompt)h(string.)55 b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Fs(\\s-\\v\\$)28 -b Ft('.)56 b(See)36 b(Section)g(6.9)630 4123 y([Prin)m(ting)28 +b Ft('.)56 b(See)36 b(Section)g(6.9)630 4152 y([Prin)m(ting)28 b(a)g(Prompt],)g(page)h(84,)g(for)e(the)h(complete)h(list)g(of)e(escap) -s(e)h(sequences)g(that)h(are)630 4233 y(expanded)h(b)s(efore)g -Fs(PS1)f Ft(is)h(displa)m(y)m(ed.)150 4401 y Fs(PS2)336 +s(e)h(sequences)g(that)h(are)630 4262 y(expanded)h(b)s(efore)g +Fs(PS1)f Ft(is)h(displa)m(y)m(ed.)150 4424 y Fs(PS2)336 b Ft(The)30 b(secondary)g(prompt)g(string.)41 b(The)29 b(default)i(v)-5 b(alue)31 b(is)f(`)p Fs(>)g Ft('.)150 -4646 y Fr(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4805 +4661 y Fr(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4820 y Ft(These)45 b(v)-5 b(ariables)46 b(are)g(set)g(or)f(used)f(b)m(y)h (Bash,)50 b(but)44 b(other)i(shells)f(do)h(not)f(normally)h(treat)g -(them)150 4915 y(sp)s(ecially)-8 b(.)275 5058 y(A)24 +(them)150 4929 y(sp)s(ecially)-8 b(.)275 5067 y(A)24 b(few)g(v)-5 b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f (in)h(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25 -b(for)f(con)m(trolling)150 5168 y(the)31 b(job)f(con)m(trol)h +b(for)f(con)m(trolling)150 5176 y(the)31 b(job)f(con)m(trol)h (facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8 b(ariables],)32 b(page)g(94\).)150 5340 y Fs(BASH)288 b Ft(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t) @@ -9334,20 +9329,20 @@ b(ariable)36 b(is)f(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)630 737 y(starts)25 b(up,)f(eac)m(h)i(shell)e(option)h(in)e(the)i(list)g (will)f(b)s(e)g(enabled)g(b)s(efore)g(reading)g(an)m(y)g(startup)630 847 y(\014les.)41 b(This)29 b(v)-5 b(ariable)31 b(is)g(readonly)-8 -b(.)150 998 y Fs(BASHPID)144 b Ft(Expands)36 b(to)j(the)f(pro)s(cess)g -(id)f(of)h(the)g(curren)m(t)g(Bash)g(pro)s(cess.)63 b(This)37 -b(di\013ers)g(from)h Fs($$)630 1107 y Ft(under)31 b(certain)j +b(.)150 998 y Fs(BASHPID)144 b Ft(Expands)35 b(to)i(the)f(pro)s(cess)f +(ID)i(of)f(the)g(curren)m(t)g(Bash)g(pro)s(cess.)58 b(This)35 +b(di\013ers)h(from)g Fs($$)630 1107 y Ft(under)31 b(certain)j (circumstances,)h(suc)m(h)e(as)g(subshells)f(that)i(do)f(not)g(require) g(Bash)g(to)h(b)s(e)630 1217 y(re-initialized.)150 1367 y Fs(BASH_ALIASES)630 1477 y Ft(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d (v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f -(in)m(ternal)h(list)630 1587 y(of)g(aliases)h(as)f(main)m(tained)g(b)m -(y)g(the)f Fs(alias)g Ft(builtin)g(\(see)h(Section)h(4.1)f([Bourne)g -(Shell)630 1696 y(Builtins],)36 b(page)e(37\).)53 b(Elemen)m(ts)35 -b(added)e(to)i(this)e(arra)m(y)i(app)s(ear)e(in)h(the)g(alias)h(list;)i -(un-)630 1806 y(setting)31 b(arra)m(y)g(elemen)m(ts)h(cause)f(aliases)h -(to)f(b)s(e)f(remo)m(v)m(ed)h(from)f(the)h(alias)g(list.)150 -1956 y Fs(BASH_ARGC)630 2066 y Ft(An)f(arra)m(y)h(v)-5 +(in)m(ternal)h(list)630 1587 y(of)c(aliases)h(as)f(main)m(tained)g(b)m +(y)g(the)g Fs(alias)e Ft(builtin.)59 b(\(see)37 b(Section)h(4.1)f +([Bourne)g(Shell)630 1696 y(Builtins],)f(page)e(37\).)53 +b(Elemen)m(ts)35 b(added)e(to)i(this)e(arra)m(y)i(app)s(ear)e(in)h(the) +g(alias)h(list;)i(un-)630 1806 y(setting)31 b(arra)m(y)g(elemen)m(ts)h +(cause)f(aliases)h(to)f(b)s(e)f(remo)m(v)m(ed)h(from)f(the)h(alias)g +(list.)150 1956 y Fs(BASH_ARGC)630 2066 y Ft(An)f(arra)m(y)h(v)-5 b(ariable)31 b(whose)f(v)-5 b(alues)31 b(are)g(the)f(n)m(um)m(b)s(er)g (of)g(parameters)h(in)f(eac)m(h)h(frame)g(of)630 2176 y(the)26 b(curren)m(t)f(bash)g(execution)i(call)g(stac)m(k.)41 @@ -9559,9 +9554,9 @@ b(.)47 b(If)32 b Fs(DIRSTACK)e Ft(is)i(unset,)g(it)h(loses)g(its)g(sp)s 1718 y(subsequen)m(tly)d(reset.)150 1880 y Fs(EMACS)240 b Ft(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f -(v)-5 b(alue)630 1990 y(`)p Fs(t)p Ft(',)38 b(it)e(assumes)g(that)g -(the)h(shell)f(is)g(running)e(in)i(an)g(emacs)g(shell)h(bu\013er)e(and) -g(disables)630 2099 y(line)c(editing.)150 2261 y Fs(ENV)336 +(v)-5 b(alue)630 1990 y(`)p Fs(t)p Ft(',)36 b(it)f(assumes)f(that)h +(the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) +h(disables)630 2099 y(line)d(editing.)150 2261 y Fs(ENV)336 b Ft(Similar)35 b(to)g Fs(BASH_ENV)p Ft(;)h(used)e(when)g(the)h(shell)g (is)g(in)m(v)m(ok)m(ed)h(in)e Fl(posix)h Ft(Mo)s(de)g(\(see)g(Sec-)630 2371 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(86\).)150 @@ -10247,24 +10242,25 @@ Ft(v)-5 b(ariable)150 3007 y(and)30 b(commands)g(are)g(read)h(and)e (read.)150 3343 y Fj(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h (daemon)150 3490 y Ft(Bash)36 b(attempts)h(to)g(determine)f(when)f(it)i (is)f(b)s(eing)g(run)e(with)i(its)g(standard)g(input)f(connected)i(to)g -(a)150 3600 y(a)e(net)m(w)m(ork)h(connection,)h(as)e(if)g(b)m(y)g(the)g -(remote)g(shell)g(daemon,)i(usually)d Fs(rshd)p Ft(,)h(or)g(the)g -(secure)g(shell)150 3709 y(daemon)41 b Fs(sshd)p Ft(.)70 -b(If)40 b(Bash)h(determines)f(it)h(is)g(b)s(eing)f(run)f(in)i(this)f -(fashion,)j(it)e(reads)g(and)f(executes)150 3819 y(commands)26 -b(from)f(`)p Fs(~/.bashrc)p Ft(',)g(if)i(that)f(\014le)g(exists)h(and)f -(is)g(readable.)40 b(It)26 b(will)g(not)g(do)g(this)g(if)g(in)m(v)m(ok) -m(ed)150 3929 y(as)g Fs(sh)p Ft(.)39 b(The)25 b(`)p Fs(--norc)p -Ft(')g(option)h(ma)m(y)g(b)s(e)f(used)g(to)i(inhibit)e(this)h(b)s(eha)m -(vior,)h(and)e(the)h(`)p Fs(--rcfile)p Ft(')e(option)150 -4038 y(ma)m(y)33 b(b)s(e)g(used)f(to)h(force)h(another)f(\014le)g(to)g -(b)s(e)g(read,)g(but)f Fs(rshd)g Ft(do)s(es)h(not)g(generally)h(in)m(v) -m(ok)m(e)h(the)e(shell)150 4148 y(with)d(those)h(options)g(or)f(allo)m -(w)i(them)e(to)h(b)s(e)f(sp)s(eci\014ed.)150 4374 y Fj(In)m(v)m(ok)m -(ed)40 b(with)g(unequal)h(e\013ectiv)m(e)e(and)i(real)g -Fg(uid/gid)p Fj(s)150 4521 y Ft(If)34 b(Bash)h(is)g(started)g(with)f -(the)h(e\013ectiv)m(e)i(user)d(\(group\))h(id)f(not)h(equal)g(to)g(the) -g(real)g(user)f(\(group\))h(id,)150 4631 y(and)26 b(the)i +(a)150 3600 y(net)m(w)m(ork)h(connection,)j(as)c(when)g(executed)h(b)m +(y)f(the)h(remote)g(shell)g(daemon,)h(usually)e Fs(rshd)p +Ft(,)h(or)g(the)150 3709 y(secure)c(shell)f(daemon)h +Fs(sshd)p Ft(.)49 b(If)33 b(Bash)g(determines)h(it)g(is)f(b)s(eing)g +(run)f(in)i(this)f(fashion,)h(it)g(reads)g(and)150 3819 +y(executes)42 b(commands)e(from)g(`)p Fs(~/.bashrc)p +Ft(',)h(if)g(that)g(\014le)f(exists)i(and)e(is)g(readable.)72 +b(It)40 b(will)h(not)g(do)150 3929 y(this)35 b(if)g(in)m(v)m(ok)m(ed)i +(as)f Fs(sh)p Ft(.)55 b(The)34 b(`)p Fs(--norc)p Ft(')g(option)i(ma)m +(y)g(b)s(e)f(used)f(to)i(inhibit)f(this)g(b)s(eha)m(vior,)i(and)e(the) +150 4038 y(`)p Fs(--rcfile)p Ft(')25 b(option)i(ma)m(y)g(b)s(e)f(used)g +(to)i(force)f(another)g(\014le)g(to)g(b)s(e)f(read,)i(but)e +Fs(rshd)f Ft(do)s(es)i(not)g(generally)150 4148 y(in)m(v)m(ok)m(e)32 +b(the)f(shell)f(with)h(those)f(options)h(or)f(allo)m(w)i(them)f(to)g(b) +s(e)e(sp)s(eci\014ed.)150 4374 y Fj(In)m(v)m(ok)m(ed)40 +b(with)g(unequal)h(e\013ectiv)m(e)e(and)i(real)g Fg(uid/gid)p +Fj(s)150 4521 y Ft(If)34 b(Bash)h(is)g(started)g(with)f(the)h +(e\013ectiv)m(e)i(user)d(\(group\))h(id)f(not)h(equal)g(to)g(the)g +(real)g(user)f(\(group\))h(id,)150 4631 y(and)26 b(the)i Fs(-p)e Ft(option)h(is)g(not)h(supplied,)e(no)h(startup)g(\014les)g (are)g(read,)h(shell)f(functions)g(are)g(not)g(inherited)150 4740 y(from)41 b(the)g(en)m(vironmen)m(t,)j(the)d Fs(SHELLOPTS)p @@ -10574,30 +10570,31 @@ b(is)g(ev)-5 b(aluated)38 b(as)e(an)g(arithmetic)h(expression)f(when)f (it)h(is)g(referenced,)i(or)150 1909 y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m(en)j(the)e Fq(in)m(teger)40 b Ft(attribute)33 b(using)f(`)p Fs(declare)d(-i)p -Ft(')i(is)i(assigned)150 2019 y(a)k(v)-5 b(alue.)58 b(A)36 -b(n)m(ull)g(v)-5 b(alue)37 b(ev)-5 b(aluates)38 b(to)f(0.)58 -b(A)36 b(shell)h(v)-5 b(ariable)36 b(need)g(not)h(ha)m(v)m(e)g(its)g -(in)m(teger)g(attribute)150 2128 y(turned)29 b(on)h(to)i(b)s(e)d(used)h -(in)g(an)g(expression.)275 2256 y(Constan)m(ts)41 b(with)g(a)h(leading) -f(0)h(are)g(in)m(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72 -b(A)41 b(leading)h(`)p Fs(0x)p Ft(')f(or)g(`)p Fs(0X)p -Ft(')150 2366 y(denotes)31 b(hexadecimal.)42 b(Otherwise,)30 -b(n)m(um)m(b)s(ers)f(tak)m(e)j(the)f(form)f([)p Fq(base)5 -b Fs(#)p Ft(])p Fq(n)p Ft(,)31 b(where)f(the)g(optional)i -Fq(base)150 2476 y Ft(is)d(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m -(een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and) -g Fq(n)g Ft(is)g(a)g(n)m(um)m(b)s(er)150 2585 y(in)41 -b(that)i(base.)74 b(If)42 b Fq(base)5 b Fs(#)41 b Ft(is)h(omitted,)k -(then)41 b(base)h(10)g(is)g(used.)74 b(The)41 b(digits)h(greater)h -(than)e(9)i(are)150 2695 y(represen)m(ted)38 b(b)m(y)f(the)h(lo)m(w)m -(ercase)j(letters,)g(the)d(upp)s(ercase)f(letters,)k(`)p -Fs(@)p Ft(',)f(and)d(`)p Fs(_)p Ft(',)j(in)d(that)i(order.)62 -b(If)150 2804 y Fq(base)28 b Ft(is)22 b(less)h(than)f(or)h(equal)f(to)i -(36,)h(lo)m(w)m(ercase)g(and)c(upp)s(ercase)h(letters)i(ma)m(y)f(b)s(e) -e(used)h(in)m(terc)m(hangeably)150 2914 y(to)31 b(represen)m(t)g(n)m -(um)m(b)s(ers)d(b)s(et)m(w)m(een)j(10)h(and)d(35.)275 -3042 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h -(precedence.)85 b(Sub-expressions)44 b(in)g(paren)m(theses)i(are)150 +Ft(')i(is)i(assigned)150 2019 y(a)j(v)-5 b(alue.)58 b(A)36 +b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 b(aluates)37 b(to)g(0.)57 +b(A)36 b(shell)g(v)-5 b(ariable)37 b(need)e(not)h(ha)m(v)m(e)h(its)f +Fq(in)m(teger)44 b Ft(attribute)150 2128 y(turned)29 +b(on)h(to)i(b)s(e)d(used)h(in)g(an)g(expression.)275 +2256 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are)g(in)m(terpreted) +f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72 b(A)41 b(leading)h(`)p +Fs(0x)p Ft(')f(or)g(`)p Fs(0X)p Ft(')150 2366 y(denotes)31 +b(hexadecimal.)42 b(Otherwise,)30 b(n)m(um)m(b)s(ers)f(tak)m(e)j(the)f +(form)f([)p Fq(base)5 b Fs(#)p Ft(])p Fq(n)p Ft(,)31 +b(where)f(the)g(optional)i Fq(base)150 2476 y Ft(is)d(a)h(decimal)g(n)m +(um)m(b)s(er)e(b)s(et)m(w)m(een)h(2)h(and)e(64)i(represen)m(ting)g(the) +f(arithmetic)i(base,)e(and)g Fq(n)g Ft(is)g(a)g(n)m(um)m(b)s(er)150 +2585 y(in)41 b(that)i(base.)74 b(If)42 b Fq(base)5 b +Fs(#)41 b Ft(is)h(omitted,)k(then)41 b(base)h(10)g(is)g(used.)74 +b(The)41 b(digits)h(greater)h(than)e(9)i(are)150 2695 +y(represen)m(ted)38 b(b)m(y)f(the)h(lo)m(w)m(ercase)j(letters,)g(the)d +(upp)s(ercase)f(letters,)k(`)p Fs(@)p Ft(',)f(and)d(`)p +Fs(_)p Ft(',)j(in)d(that)i(order.)62 b(If)150 2804 y +Fq(base)28 b Ft(is)22 b(less)h(than)f(or)h(equal)f(to)i(36,)h(lo)m(w)m +(ercase)g(and)c(upp)s(ercase)h(letters)i(ma)m(y)f(b)s(e)e(used)h(in)m +(terc)m(hangeably)150 2914 y(to)31 b(represen)m(t)g(n)m(um)m(b)s(ers)d +(b)s(et)m(w)m(een)j(10)h(and)d(35.)275 3042 y(Op)s(erators)44 +b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h(precedence.)85 +b(Sub-expressions)44 b(in)g(paren)m(theses)i(are)150 3152 y(ev)-5 b(aluated)32 b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g (the)g(precedence)g(rules)f(ab)s(o)m(v)m(e.)150 3371 y Fr(6.6)68 b(Aliases)150 3531 y Fq(Aliases)41 b Ft(allo)m(w)d(a)f @@ -11103,136 +11100,129 @@ b(redirection)d(errors,)i(v)-5 b(ariable)41 b(assignmen)m(t)g(errors)e b(name,)h(and)f(so)g(on.)p eop end %%Page: 88 94 TeXDict begin 88 93 bop 150 -116 a Ft(88)2572 b(Bash)31 -b(Reference)g(Man)m(ual)154 299 y(23.)61 b(If)34 b Fs(CDPATH)f -Ft(is)h(set,)i(the)f Fs(cd)f Ft(builtin)g(will)g(not)h(implicitly)h -(app)s(end)c(the)j(curren)m(t)f(directory)h(to)g(it.)330 -408 y(This)29 b(means)g(that)h Fs(cd)f Ft(will)h(fail)g(if)g(no)f(v)-5 -b(alid)30 b(directory)g(name)f(can)h(b)s(e)f(constructed)h(from)f(an)m -(y)h(of)330 518 y(the)i(en)m(tries)g(in)f Fs($CDPATH)p -Ft(,)e(ev)m(en)j(if)g(the)f(a)h(directory)g(with)f(the)g(same)h(name)f -(as)h(the)g(name)f(giv)m(en)330 628 y(as)g(an)f(argumen)m(t)h(to)g -Fs(cd)f Ft(exists)h(in)f(the)g(curren)m(t)g(directory)-8 -b(.)154 762 y(24.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h -(with)e(an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 -b(assignmen)m(t)g(error)e(o)s(ccurs)330 871 y(when)38 -b(no)h(command)g(name)g(follo)m(ws)i(the)e(assignmen)m(t)h(statemen)m -(ts.)69 b(A)39 b(v)-5 b(ariable)40 b(assignmen)m(t)330 -981 y(error)30 b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g +b(Reference)g(Man)m(ual)154 299 y(23.)61 b(A)31 b(non-in)m(teractiv)m +(e)j(shell)d(exits)h(with)e(an)h(error)g(status)g(if)g(a)g(v)-5 +b(ariable)32 b(assignmen)m(t)g(error)e(o)s(ccurs)330 +408 y(when)38 b(no)h(command)g(name)g(follo)m(ws)i(the)e(assignmen)m(t) +h(statemen)m(ts.)69 b(A)39 b(v)-5 b(ariable)40 b(assignmen)m(t)330 +518 y(error)30 b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g (assign)f(a)h(v)-5 b(alue)31 b(to)g(a)g(readonly)f(v)-5 -b(ariable.)154 1115 y(25.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e -(exits)h(with)f(an)f(error)h(status)g(if)g(the)g(iteration)h(v)-5 -b(ariable)44 b(in)f(a)g Fs(for)330 1224 y Ft(statemen)m(t)32 +b(ariable.)154 645 y(24.)61 b(A)28 b(non-in)m(teractiv)m(e)j(shell)e +(exists)f(with)g(an)g(error)g(status)h(if)f(a)g(v)-5 +b(ariable)29 b(assignmen)m(t)g(error)f(o)s(ccurs)330 +755 y(in)i(an)g(assignmen)m(t)i(statemen)m(t)g(preceding)e(a)h(sp)s +(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f(other)h(simple)330 +864 y(command.)154 991 y(25.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell) +e(exits)h(with)f(an)f(error)h(status)g(if)g(the)g(iteration)h(v)-5 +b(ariable)44 b(in)f(a)g Fs(for)330 1101 y Ft(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 b(ariable)32 b(in)e(a)g Fs(select)f Ft(statemen)m(t)j(is)f(a)f(readonly)h(v)-5 -b(ariable.)154 1358 y(26.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not) -f(a)m(v)-5 b(ailable.)154 1492 y(27.)61 b(Assignmen)m(t)23 +b(ariable.)154 1228 y(26.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not) +f(a)m(v)-5 b(ailable.)154 1354 y(27.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e Fl(posix)f Ft(sp)s(ecial)i(builtins)f(p)s -(ersist)g(in)f(the)i(shell)f(en)m(vironmen)m(t)330 1602 -y(after)31 b(the)f(builtin)g(completes.)154 1736 y(28.)61 +(ersist)g(in)f(the)i(shell)f(en)m(vironmen)m(t)330 1464 +y(after)31 b(the)f(builtin)g(completes.)154 1591 y(28.)61 b(Assignmen)m(t)35 b(statemen)m(ts)h(preceding)f(shell)f(function)g (calls)i(p)s(ersist)e(in)g(the)h(shell)f(en)m(vironmen)m(t)330 -1845 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h +1700 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h Fl(posix)e Ft(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g -(executed.)154 1979 y(29.)61 b(The)38 b Fs(export)f Ft(and)g +(executed.)154 1827 y(29.)61 b(The)38 b Fs(export)f Ft(and)g Fs(readonly)f Ft(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in) -g(the)h(format)g(re-)330 2089 y(quired)30 b(b)m(y)g Fl(posix)p -Ft(.)154 2223 y(30.)61 b(The)30 b Fs(trap)f Ft(builtin)h(displa)m(ys)g +g(the)h(format)g(re-)330 1937 y(quired)30 b(b)m(y)g Fl(posix)p +Ft(.)154 2064 y(30.)61 b(The)30 b Fs(trap)f Ft(builtin)h(displa)m(ys)g (signal)i(names)e(without)g(the)h(leading)g Fs(SIG)p -Ft(.)154 2357 y(31.)61 b(The)39 b Fs(trap)e Ft(builtin)i(do)s(esn't)g +Ft(.)154 2191 y(31.)61 b(The)39 b Fs(trap)e Ft(builtin)i(do)s(esn't)g (c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e -(signal)i(sp)s(eci\014cation)330 2466 y(and)30 b(rev)m(ert)i(the)e +(signal)i(sp)s(eci\014cation)330 2300 y(and)30 b(rev)m(ert)i(the)e (signal)i(handling)e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g -(is,)g(unless)f(that)h(argumen)m(t)330 2576 y(consists)e(solely)g(of)g +(is,)g(unless)f(that)h(argumen)m(t)330 2410 y(consists)e(solely)g(of)g (digits)g(and)f(is)g(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 b(If)28 b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 -2685 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s +2519 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s (osition,)f(they)g(should)f(use)h(`)p Fs(-)p Ft(')g(as)g(the)g(\014rst) -f(argumen)m(t.)154 2819 y(32.)61 b(The)21 b Fs(.)h Ft(and)f +f(argumen)m(t.)154 2646 y(32.)61 b(The)21 b Fs(.)h Ft(and)f Fs(source)f Ft(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f (directory)h(for)g(the)g(\014lename)f(argumen)m(t)330 -2929 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g -Fs(PATH)p Ft(.)154 3063 y(33.)61 b(Subshells)20 b(spa)m(wned)h(to)h +2756 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g +Fs(PATH)p Ft(.)154 2883 y(33.)61 b(Subshells)20 b(spa)m(wned)h(to)h (execute)g(command)g(substitutions)f(inherit)g(the)g(v)-5 b(alue)22 b(of)g(the)f(`)p Fs(-e)p Ft(')g(option)330 -3173 y(from)34 b(the)h(paren)m(t)g(shell.)55 b(When)34 +2992 y(from)34 b(the)h(paren)m(t)g(shell.)55 b(When)34 b(not)i(in)e Fl(posix)g Ft(mo)s(de,)i(Bash)f(clears)h(the)f(`)p -Fs(-e)p Ft(')f(option)i(in)e(suc)m(h)330 3282 y(subshells.)154 -3416 y(34.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i(enabled,)e -(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)154 3550 +Fs(-e)p Ft(')f(option)i(in)e(suc)m(h)330 3102 y(subshells.)154 +3229 y(34.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i(enabled,)e +(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)154 3356 y(35.)61 b(When)43 b(the)g Fs(alias)f Ft(builtin)g(displa)m(ys)i(alias) g(de\014nitions,)i(it)d(do)s(es)g(not)g(displa)m(y)h(them)f(with)g(a) -330 3660 y(leading)31 b(`)p Fs(alias)e Ft(')i(unless)f(the)g(`)p -Fs(-p)p Ft(')g(option)h(is)g(supplied.)154 3794 y(36.)61 +330 3465 y(leading)31 b(`)p Fs(alias)e Ft(')i(unless)f(the)g(`)p +Fs(-p)p Ft(')g(option)h(is)g(supplied.)154 3592 y(36.)61 b(When)40 b(the)g Fs(set)f Ft(builtin)h(is)g(in)m(v)m(ok)m(ed)h (without)f(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g -(function)330 3903 y(names)30 b(and)g(de\014nitions.)154 -4037 y(37.)61 b(When)36 b(the)g Fs(set)g Ft(builtin)g(is)g(in)m(v)m(ok) +(function)330 3702 y(names)30 b(and)g(de\014nitions.)154 +3829 y(37.)61 b(When)36 b(the)g Fs(set)g Ft(builtin)g(is)g(in)m(v)m(ok) m(ed)i(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 -b(v)-5 b(alues)37 b(without)330 4147 y(quotes,)26 b(unless)d(they)i +b(v)-5 b(alues)37 b(without)330 3938 y(quotes,)26 b(unless)d(they)i (con)m(tain)g(shell)f(metac)m(haracters,)k(ev)m(en)d(if)f(the)g(result) -g(con)m(tains)i(nonprin)m(ting)330 4256 y(c)m(haracters.)154 -4390 y(38.)61 b(When)35 b(the)g Fs(cd)f Ft(builtin)h(is)g(in)m(v)m(ok)m +g(con)m(tains)i(nonprin)m(ting)330 4048 y(c)m(haracters.)154 +4175 y(38.)61 b(When)35 b(the)g Fs(cd)f Ft(builtin)h(is)g(in)m(v)m(ok)m (ed)i(in)d Fq(logical)41 b Ft(mo)s(de,)36 b(and)f(the)g(pathname)g -(constructed)g(from)330 4500 y Fs($PWD)i Ft(and)h(the)h(directory)f +(constructed)g(from)330 4284 y Fs($PWD)i Ft(and)h(the)h(directory)f (name)h(supplied)e(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g -(an)f(existing)330 4609 y(directory)-8 b(,)32 b Fs(cd)d +(an)f(existing)330 4394 y(directory)-8 b(,)32 b Fs(cd)d Ft(will)i(fail)g(instead)g(of)f(falling)h(bac)m(k)h(to)f -Fq(ph)m(ysical)j Ft(mo)s(de.)154 4743 y(39.)61 b(When)20 -b(the)h Fs(pwd)e Ft(builtin)h(is)g(supplied)g(the)g(`)p -Fs(-P)p Ft(')g(option,)j(it)e(resets)g Fs($PWD)e Ft(to)i(a)g(pathname)f -(con)m(taining)330 4853 y(no)30 b(symlinks.)154 4987 -y(40.)61 b(The)36 b Fs(pwd)f Ft(builtin)h(v)m(eri\014es)h(that)g(the)f -(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren) -m(t)f(directory)-8 b(,)330 5096 y(ev)m(en)31 b(if)f(it)h(is)g(not)f -(ask)m(ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f(system)h(with)f(the)h(`)p -Fs(-P)p Ft(')f(option.)154 5230 y(41.)61 b(When)35 b(listing)g(the)g +Fq(ph)m(ysical)j Ft(mo)s(de.)154 4521 y(39.)61 b(The)36 +b Fs(pwd)f Ft(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5 +b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren)m(t)f +(directory)-8 b(,)330 4631 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m +(ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f(system)h(with)f(the)h(`)p +Fs(-P)p Ft(')f(option.)154 4757 y(40.)61 b(When)35 b(listing)g(the)g (history)-8 b(,)36 b(the)f Fs(fc)g Ft(builtin)f(do)s(es)g(not)h -(include)g(an)f(indication)i(of)f(whether)f(or)330 5340 -y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)p -eop end +(include)g(an)f(indication)i(of)f(whether)f(or)330 4867 +y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 +4994 y(41.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g +Fs(fc)g Ft(is)g Fs(ed)p Ft(.)154 5121 y(42.)61 b(The)37 +b Fs(type)g Ft(and)g Fs(command)f Ft(builtins)i(will)g(not)g(rep)s(ort) +f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 +5230 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g +(execute)g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named) +g(\014le)330 5340 y(found)i(in)h Fs($PATH)p Ft(.)p eop +end %%Page: 89 95 TeXDict begin 89 94 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(89)154 299 y(42.)61 -b(The)30 b(default)g(editor)h(used)f(b)m(y)g Fs(fc)g -Ft(is)g Fs(ed)p Ft(.)154 433 y(43.)61 b(The)37 b Fs(type)g -Ft(and)g Fs(command)f Ft(builtins)i(will)g(not)g(rep)s(ort)f(a)i -(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 -543 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g(execute) -g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named)g(\014le) -330 653 y(found)i(in)h Fs($PATH)p Ft(.)154 787 y(44.)61 +b(Bash)30 b(F)-8 b(eatures)2484 b(89)154 299 y(43.)61 b(The)33 b Fs(vi)f Ft(editing)i(mo)s(de)f(will)g(in)m(v)m(ok)m(e)i(the) e Fs(vi)g Ft(editor)h(directly)f(when)f(the)i(`)p Fs(v)p -Ft(')f(command)g(is)g(run,)330 897 y(instead)e(of)f(c)m(hec)m(king)i -Fs($VISUAL)d Ft(and)g Fs($EDITOR)p Ft(.)154 1031 y(45.)61 +Ft(')f(command)g(is)g(run,)330 408 y(instead)e(of)f(c)m(hec)m(king)i +Fs($VISUAL)d Ft(and)g Fs($EDITOR)p Ft(.)154 543 y(44.)61 b(When)41 b(the)g Fs(xpg_echo)e Ft(option)i(is)g(enabled,)j(Bash)d(do)s (es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 -1141 y(gumen)m(ts)35 b(to)g Fs(echo)e Ft(as)i(options.)54 +653 y(gumen)m(ts)35 b(to)g Fs(echo)e Ft(as)i(options.)54 b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e) -g(c)m(haracters)h(are)330 1250 y(con)m(v)m(erted.)154 -1385 y(46.)61 b(The)30 b Fs(ulimit)f Ft(builtin)g(uses)h(a)h(blo)s(c)m +g(c)m(haracters)h(are)330 762 y(con)m(v)m(erted.)154 +897 y(45.)61 b(The)30 b Fs(ulimit)f Ft(builtin)g(uses)h(a)h(blo)s(c)m (k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h(`)p Fs(-c)p -Ft(')f(and)g(`)p Fs(-f)p Ft(')g(options.)154 1519 y(47.)61 +Ft(')f(and)g(`)p Fs(-f)p Ft(')g(options.)154 1031 y(46.)61 b(The)39 b(arriv)-5 b(al)41 b(of)f Fs(SIGCHLD)e Ft(when)h(a)h(trap)g (is)g(set)h(on)f Fs(SIGCHLD)e Ft(do)s(es)h(not)h(in)m(terrupt)g(the)g -Fs(wait)330 1629 y Ft(builtin)c(and)h(cause)g(it)h(to)f(return)f +Fs(wait)330 1141 y Ft(builtin)c(and)h(cause)g(it)h(to)f(return)f (immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j -(for)f(eac)m(h)330 1738 y(c)m(hild)31 b(that)g(exits.)275 -1898 y(There)j(is)g(other)h Fl(posix)f Ft(b)s(eha)m(vior)h(that)g(Bash) +(for)f(eac)m(h)330 1250 y(c)m(hild)31 b(that)g(exits.)275 +1410 y(There)j(is)g(other)h Fl(posix)f Ft(b)s(eha)m(vior)h(that)g(Bash) g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m(en)i(when)d(in) -150 2007 y Fl(posix)d Ft(mo)s(de.)40 b(Sp)s(eci\014cally:)199 -2142 y(1.)61 b(The)30 b Fs(fc)f Ft(builtin)h(c)m(hec)m(ks)i +150 1519 y Fl(posix)d Ft(mo)s(de.)40 b(Sp)s(eci\014cally:)199 +1654 y(1.)61 b(The)30 b Fs(fc)f Ft(builtin)h(c)m(hec)m(ks)i Fs($EDITOR)c Ft(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h -(if)f Fs(FCEDIT)f Ft(is)h(unset,)330 2252 y(rather)g(than)g(defaulting) +(if)f Fs(FCEDIT)f Ft(is)h(unset,)330 1763 y(rather)g(than)g(defaulting) h(directly)g(to)g Fs(ed)p Ft(.)40 b Fs(fc)30 b Ft(uses)g -Fs(ed)g Ft(if)g Fs(EDITOR)f Ft(is)h(unset.)199 2386 y(2.)61 +Fs(ed)g Ft(if)g Fs(EDITOR)f Ft(is)h(unset.)199 1898 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g Fs(xpg_echo)e Ft(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g -Fs(echo)f Ft(builtin)330 2496 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 -2655 y(Bash)66 b(can)h(b)s(e)f(con\014gured)g(to)i(b)s(e)e +Fs(echo)f Ft(builtin)330 2007 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 +2167 y(Bash)66 b(can)h(b)s(e)f(con\014gured)g(to)i(b)s(e)e Fl(posix)p Ft(-conforman)m(t)h(b)m(y)f(default,)77 b(b)m(y)66 -b(sp)s(ecifying)h(the)150 2765 y(`)p Fs(--enable-strict-posix-def)o +b(sp)s(ecifying)h(the)150 2276 y(`)p Fs(--enable-strict-posix-def)o (ault)o Ft(')i(to)76 b Fs(configure)c Ft(when)i(building)g(\(see)i -(Section)f(10.8)150 2874 y([Optional)31 b(F)-8 b(eatures],)32 +(Section)f(10.8)150 2386 y([Optional)31 b(F)-8 b(eatures],)32 b(page)f(131\).)p eop end %%Page: 90 96 TeXDict begin 90 95 bop eop end @@ -11535,9 +11525,9 @@ Fs(--noediting)p Ft(')d(option)k(is)e(supplied)g(at)h(shell)g(in)m(v)m (o)s(cation.)42 b(Line)26 b(editing)150 1078 y(is)i(also)h(used)e(when) h(using)f(the)h(`)p Fs(-e)p Ft(')g(option)h(to)g(the)f Fs(read)f Ft(builtin)h(command)f(\(see)i(Section)g(4.2)h([Bash)150 -1188 y(Builtins],)37 b(page)f(43\).)57 b(By)36 b(default,)h(the)e(line) -h(editing)g(commands)f(are)h(similar)f(to)i(those)e(of)h(emacs.)150 -1297 y(A)f(vi-st)m(yle)h(line)f(editing)g(in)m(terface)h(is)e(also)i(a) +1188 y(Builtins],)36 b(page)f(43\).)52 b(By)35 b(default,)g(the)f(line) +h(editing)f(commands)g(are)h(similar)f(to)h(those)f(of)g(Emacs.)150 +1297 y(A)h(vi-st)m(yle)h(line)f(editing)g(in)m(terface)h(is)e(also)i(a) m(v)-5 b(ailable.)55 b(Line)34 b(editing)h(can)g(b)s(e)f(enabled)g(at)h (an)m(y)g(time)150 1407 y(using)28 b(the)i(`)p Fs(-o)g(emacs)p Ft(')d(or)i(`)p Fs(-o)h(vi)p Ft(')f(options)g(to)h(the)f @@ -12046,239 +12036,244 @@ Ft(',)i(the)e(leading)g(`)p Fs(.)p Ft(')f(m)m(ust)g(b)s(e)g(supplied)f Fs(on)p Ft(')g(b)m(y)1110 5340 y(default.)p eop end %%Page: 102 108 TeXDict begin 102 107 bop 150 -116 a Ft(102)2527 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y Fs(output-meta)1110 -408 y Ft(If)k(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g(displa)m -(y)f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 -518 y(set)h(directly)g(rather)f(than)g(as)h(a)g(meta-pre\014xed)f -(escap)s(e)h(sequence.)59 b(The)1110 628 y(default)31 -b(is)f(`)p Fs(off)p Ft('.)630 800 y Fs(page-completions)1110 -909 y Ft(If)j(set)i(to)f(`)p Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in) -m(ternal)h Fs(more)p Ft(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 -1019 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) +b(Reference)g(Man)m(ual)630 299 y Fs(menu-complete-display-pr)o(efix) +1110 408 y Ft(If)i(set)h(to)g(`)p Fs(on)p Ft(',)h(men)m(u)e(completion) +i(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 +518 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)s +(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 628 y(through)30 +b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fs(off)p +Ft('.)630 784 y Fs(output-meta)1110 894 y Ft(If)35 b(set)h(to)g(`)p +Fs(on)p Ft(',)h(Readline)f(will)g(displa)m(y)f(c)m(haracters)i(with)e +(the)h(eigh)m(th)g(bit)1110 1003 y(set)h(directly)g(rather)f(than)g(as) +h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59 b(The)1110 +1113 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 1270 +y Fs(page-completions)1110 1379 y Ft(If)j(set)i(to)f(`)p +Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in)m(ternal)h +Fs(more)p Ft(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 +1489 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) 47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fs(on)p Ft(')1110 -1129 y(b)m(y)e(default.)630 1301 y Fs(print-completions-horizo)o(ntal)o -(ly)1110 1410 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g +1598 y(b)m(y)e(default.)630 1755 y Fs(print-completions-horizo)o(ntal)o +(ly)1110 1864 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g (will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 -1520 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c -(than)g(do)m(wn)g(the)h(screen.)1110 1630 y(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)630 1802 y Fs(revert-all-at-newline)1110 -1911 y Ft(If)e(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(will)g(undo)f +1974 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c +(than)g(do)m(wn)g(the)h(screen.)1110 2084 y(The)30 b(default)g(is)h(`)p +Fs(off)p Ft('.)630 2240 y Fs(revert-all-at-newline)1110 +2350 y Ft(If)e(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(will)g(undo)f (all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 -2021 y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41 -b(By)29 b(default,)g(history)g(lines)1110 2131 y(ma)m(y)42 +2459 y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41 +b(By)29 b(default,)g(history)g(lines)1110 2569 y(ma)m(y)42 b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h -(across)g(calls)h(to)1110 2240 y Fs(readline)p Ft(.)38 -b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2412 -y Fs(show-all-if-ambiguous)1110 2522 y Ft(This)f(alters)i(the)f +(across)g(calls)h(to)1110 2679 y Fs(readline)p Ft(.)38 +b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2835 +y Fs(show-all-if-ambiguous)1110 2945 y Ft(This)f(alters)i(the)f (default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40 -b(If)29 b(set)1110 2632 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h) +b(If)29 b(set)1110 3054 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h) g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) -1110 2741 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i -(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2851 y(The)30 +1110 3164 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i +(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 3273 y(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Fs(off)p Ft('.)630 -3023 y Fs(show-all-if-unmodified)1110 3133 y Ft(This)38 +3430 y Fs(show-all-if-unmodified)1110 3540 y Ft(This)38 b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h -(functions)e(in)h(a)1110 3242 y(fashion)25 b(similar)g(to)h +(functions)e(in)h(a)1110 3649 y(fashion)25 b(similar)g(to)h Fq(sho)m(w-all-if-am)m(biguous)t Ft(.)41 b(If)24 b(set)i(to)f(`)p -Fs(on)p Ft(',)i(w)m(ords)d(whic)m(h)1110 3352 y(ha)m(v)m(e)32 +Fs(on)p Ft(',)i(w)m(ords)d(whic)m(h)1110 3759 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s -(ossible)f(par-)1110 3461 y(tial)43 b(completion)h(\(the)f(p)s(ossible) -f(completions)h(don't)f(share)g(a)h(common)1110 3571 +(ossible)f(par-)1110 3868 y(tial)43 b(completion)h(\(the)f(p)s(ossible) +f(completions)h(don't)f(share)g(a)h(common)1110 3978 y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g -(immediately)i(instead)e(of)h(ring-)1110 3680 y(ing)g(the)f(b)s(ell.)41 +(immediately)i(instead)e(of)h(ring-)1110 4088 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fs(off)p -Ft('.)630 3853 y Fs(skip-completed-text)1110 3962 y Ft(If)i(set)i(to)f +Ft('.)630 4244 y Fs(skip-completed-text)1110 4354 y Ft(If)i(set)i(to)f (`)p Fs(on)p Ft(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s -(eha)m(vior)f(when)f(in-)1110 4072 y(serting)d(a)h(single)g(matc)m(h)f +(eha)m(vior)f(when)f(in-)1110 4463 y(serting)d(a)h(single)g(matc)m(h)f (in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s -(erform-)1110 4181 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f +(erform-)1110 4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f (w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110 -4291 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h -(that)f(matc)m(h)g(c)m(haracters)1110 4401 y(after)c(p)s(oin)m(t)g(in)g +4682 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h +(that)f(matc)m(h)g(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g (the)g(w)m(ord)f(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g -(w)m(ord)1110 4510 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g +(w)m(ord)1110 4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g (duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110 -4620 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g -(after)h(the)g(`)p Fs(e)p Ft(')f(in)1110 4729 y(`)p Fs(Makefile)p +5011 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g +(after)h(the)g(`)p Fs(e)p Ft(')f(in)1110 5121 y(`)p Fs(Makefile)p Ft(')c(will)i(result)f(in)g(`)p Fs(Makefile)p Ft(')f(rather)h(than)h(`) -p Fs(Makefilefile)p Ft(',)1110 4839 y(assuming)d(there)g(is)h(a)f +p Fs(Makefilefile)p Ft(',)1110 5230 y(assuming)d(there)g(is)h(a)f (single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 -b(alue)1110 4949 y(is)30 b(`)p Fs(off)p Ft('.)630 5121 -y Fs(visible-stats)1110 5230 y Ft(If)h(set)i(to)f(`)p -Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s -(e)g(is)g(app)s(ended)e(to)j(the)1110 5340 y(\014lename)e(when)e -(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)p eop end +b(alue)1110 5340 y(is)30 b(`)p Fs(off)p Ft('.)p eop end %%Page: 103 109 TeXDict begin 103 108 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(103)150 299 y(Key)30 -b(Bindings)630 408 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h(k)m -(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75 -b(First)43 b(y)m(ou)630 518 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h +b(Command)29 b(Line)i(Editing)2062 b(103)630 299 y Fs(visible-stats) +1110 408 y Ft(If)31 b(set)i(to)f(`)p Fs(on)p Ft(',)h(a)f(c)m(haracter)i +(denoting)e(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the) +1110 518 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 +b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)150 675 +y(Key)f(Bindings)630 784 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h +(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75 +b(First)43 b(y)m(ou)630 894 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h (the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 -b(The)27 b(follo)m(wing)630 628 y(sections)37 b(con)m(tain)g(tables)g +b(The)27 b(follo)m(wing)630 1003 y(sections)37 b(con)m(tain)g(tables)g (of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an) -m(y)-8 b(,)630 737 y(and)30 b(a)h(short)f(description)g(of)h(what)f -(the)g(command)h(do)s(es.)630 867 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g +m(y)-8 b(,)630 1113 y(and)30 b(a)h(short)f(description)g(of)h(what)f +(the)g(command)h(do)s(es.)630 1246 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g (name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g -(the)g(init)630 977 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou) -g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)630 -1087 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 +(the)g(init)630 1356 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m +(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then) +630 1465 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g -(and)630 1196 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m +(and)630 1575 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m (terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72 -b(The)40 b(name)h(of)630 1306 y(the)35 b(k)m(ey)g(can)g(b)s(e)f +b(The)40 b(name)h(of)630 1684 y(the)35 b(k)m(ey)g(can)g(b)s(e)f (expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h -(what)h(y)m(ou)g(\014nd)e(most)630 1415 y(comfortable.)630 -1545 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h +(what)h(y)m(ou)g(\014nd)e(most)630 1794 y(comfortable.)630 +1927 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h (k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 -1655 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g -(\(a)h Fq(macro)5 b Ft(\).)630 1785 y(The)42 b Fs(bind)30 +2037 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g +(\(a)h Fq(macro)5 b Ft(\).)630 2170 y(The)42 b Fs(bind)30 b(-p)42 b Ft(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and) -f(bindings)g(in)h(a)630 1895 y(format)37 b(that)h(can)f(put)f(directly) +f(bindings)g(in)h(a)630 2279 y(format)37 b(that)h(can)f(put)f(directly) i(in)m(to)g(an)f(initialization)j(\014le.)60 b(See)38 -b(Section)f(4.2)i([Bash)630 2004 y(Builtins],)31 b(page)g(43.)630 -2155 y Fq(k)m(eyname)5 b Ft(:)42 b Fq(function-name)35 -b Ft(or)c Fq(macro)1110 2265 y(k)m(eyname)k Ft(is)29 +b(Section)f(4.2)i([Bash)630 2389 y(Builtins],)31 b(page)g(43.)630 +2545 y Fq(k)m(eyname)5 b Ft(:)42 b Fq(function-name)35 +b Ft(or)c Fq(macro)1110 2655 y(k)m(eyname)k Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g(English.)39 -b(F)-8 b(or)30 b(example:)1350 2395 y Fs(Control-u:)45 -b(universal-argument)1350 2504 y(Meta-Rubout:)f(backward-kill-word)1350 -2614 y(Control-o:)h(">)i(output")1110 2744 y Ft(In)38 +b(F)-8 b(or)30 b(example:)1350 2788 y Fs(Control-u:)45 +b(universal-argument)1350 2898 y(Meta-Rubout:)f(backward-kill-word)1350 +3007 y(Control-o:)h(">)i(output")1110 3140 y Ft(In)38 b(the)h(ab)s(o)m(v)m(e)h(example,)h Fi(C-u)d Ft(is)h(b)s(ound)d(to)k -(the)e(function)h Fs(universal-)1110 2854 y(argument)p +(the)e(function)h Fs(universal-)1110 3250 y(argument)p Ft(,)f Fi(M-DEL)e Ft(is)i(b)s(ound)e(to)i(the)g(function)g -Fs(backward-kill-word)p Ft(,)1110 2963 y(and)g Fi(C-o)g +Fs(backward-kill-word)p Ft(,)1110 3360 y(and)g Fi(C-o)g Ft(is)h(b)s(ound)e(to)j(run)d(the)j(macro)f(expressed)g(on)f(the)i -(righ)m(t)f(hand)1110 3073 y(side)30 b(\(that)i(is,)e(to)h(insert)g +(righ)m(t)f(hand)1110 3469 y(side)30 b(\(that)i(is,)e(to)h(insert)g (the)f(text)i(`)p Fs(>)e(output)p Ft(')f(in)m(to)i(the)g(line\).)1110 -3203 y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)g(c)m(haracter)i -(names)e(are)g(recognized)h(while)f(pro-)1110 3313 y(cessing)22 +3602 y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)g(c)m(haracter)i +(names)e(are)g(recognized)h(while)f(pro-)1110 3712 y(cessing)22 b(this)g(k)m(ey)g(binding)e(syn)m(tax:)37 b Fq(DEL)p Ft(,)22 b Fq(ESC)8 b Ft(,)20 b Fq(ESCAPE)5 b Ft(,)21 -b Fq(LFD)5 b Ft(,)22 b Fq(NEW-)1110 3422 y(LINE)5 b Ft(,)31 +b Fq(LFD)5 b Ft(,)22 b Fq(NEW-)1110 3821 y(LINE)5 b Ft(,)31 b Fq(RET)7 b Ft(,)29 b Fq(RETURN)10 b Ft(,)30 b Fq(R)m(UBOUT)7 b Ft(,)31 b Fq(SP)-8 b(A)m(CE)5 b Ft(,)31 b Fq(SPC)8 -b Ft(,)29 b(and)h Fq(T)-8 b(AB)5 b Ft(.)630 3573 y Fs(")p +b Ft(,)29 b(and)h Fq(T)-8 b(AB)5 b Ft(.)630 3978 y Fs(")p Fq(k)m(eyseq)r Fs(")p Ft(:)41 b Fq(function-name)36 b -Ft(or)30 b Fq(macro)1110 3682 y(k)m(eyseq)k Ft(di\013ers)d(from)f +Ft(or)30 b Fq(macro)1110 4088 y(k)m(eyseq)k Ft(di\013ers)d(from)f Fq(k)m(eyname)37 b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f -(denoting)g(an)g(en-)1110 3792 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s +(denoting)g(an)g(en-)1110 4197 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s (e)f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in) -1110 3902 y(double)29 b(quotes.)41 b(Some)29 b Fl(gnu)h +1110 4307 y(double)29 b(quotes.)41 b(Some)29 b Fl(gnu)h Ft(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as) -1110 4011 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s -(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 4121 y(recognized.)1350 -4251 y Fs("\\C-u":)46 b(universal-argument)1350 4361 -y("\\C-x\\C-r":)f(re-read-init-file)1350 4470 y("\\e[11~":)g("Function) -h(Key)g(1")1110 4600 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 +1110 4416 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s +(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 4526 y(recognized.)1350 +4659 y Fs("\\C-u":)46 b(universal-argument)1350 4769 +y("\\C-x\\C-r":)f(re-read-init-file)1350 4878 y("\\e[11~":)g("Function) +h(Key)g(1")1110 5011 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fi(C-u)64 b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -4710 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fi(C-x)1110 4819 +5121 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g +(the)f(\014rst)g(example\),)49 b(`)p Fi(C-x)1110 5230 y(C-r)p Ft(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f Fs(re-read-init-file)p Ft(,)c(and)j(`)p Fs(ESC)h([)g(1)g(1)1110 -4929 y(~)p Ft(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p -Fs(Function)e(Key)g(1)p Ft('.)630 5080 y(The)g(follo)m(wing)i -Fl(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 -b(ailable)32 b(when)d(sp)s(ecifying)630 5189 y(k)m(ey)i(sequences:)630 -5340 y Fi(\\C-)336 b Ft(con)m(trol)32 b(pre\014x)p eop -end +5340 y(~)p Ft(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p +Fs(Function)e(Key)g(1)p Ft('.)p eop end %%Page: 104 110 TeXDict begin 104 109 bop 150 -116 a Ft(104)2527 b(Bash)31 -b(Reference)g(Man)m(ual)630 299 y Fi(\\M-)336 b Ft(meta)31 -b(pre\014x)630 461 y Fi(\\e)384 b Ft(an)30 b(escap)s(e)h(c)m(haracter) -630 622 y Fi(\\\\)384 b Ft(bac)m(kslash)630 784 y Fi(\\)p -Fs(")g(")p Ft(,)30 b(a)h(double)f(quotation)i(mark)630 -946 y Fi(\\')384 b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s -(ostrophe)630 1108 y(In)d(addition)h(to)g(the)g Fl(gnu)f -Ft(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g -(bac)m(kslash)630 1217 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 -1379 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 1541 -y Fs(\\b)384 b Ft(bac)m(kspace)630 1703 y Fs(\\d)g Ft(delete)630 -1864 y Fs(\\f)g Ft(form)30 b(feed)630 2026 y Fs(\\n)384 -b Ft(newline)630 2188 y Fs(\\r)g Ft(carriage)32 b(return)630 -2350 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)630 2511 -y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 2673 y Fs(\\)p +b(Reference)g(Man)m(ual)630 299 y(The)e(follo)m(wing)i +Fl(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 +b(ailable)32 b(when)d(sp)s(ecifying)630 408 y(k)m(ey)i(sequences:)630 +578 y Fi(\\C-)336 b Ft(con)m(trol)32 b(pre\014x)630 748 +y Fi(\\M-)336 b Ft(meta)31 b(pre\014x)630 918 y Fi(\\e)384 +b Ft(an)30 b(escap)s(e)h(c)m(haracter)630 1087 y Fi(\\\\)384 +b Ft(bac)m(kslash)630 1257 y Fi(\\)p Fs(")g(")p Ft(,)30 +b(a)h(double)f(quotation)i(mark)630 1427 y Fi(\\')384 +b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s(ostrophe)630 +1597 y(In)d(addition)h(to)g(the)g Fl(gnu)f Ft(Emacs)h(st)m(yle)h(escap) +s(e)f(sequences,)h(a)f(second)f(set)h(of)g(bac)m(kslash)630 +1706 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 1876 +y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 2046 y Fs(\\b)384 +b Ft(bac)m(kspace)630 2215 y Fs(\\d)g Ft(delete)630 2385 +y Fs(\\f)g Ft(form)30 b(feed)630 2555 y Fs(\\n)384 b +Ft(newline)630 2724 y Fs(\\r)g Ft(carriage)32 b(return)630 +2894 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)630 3064 +y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 3234 y Fs(\\)p Fi(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fq(nnn)e -Ft(\(one)i(to)1110 2783 y(three)c(digits\))630 2945 y +Ft(\(one)i(to)1110 3343 y(three)c(digits\))630 3513 y Fs(\\x)p Fi(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e (v)-5 b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 b(alue)40 -b Fq(HH)1110 3054 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 -3216 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e +b Fq(HH)1110 3622 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 +3792 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e (or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 -3326 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 +3902 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f(name.)38 -b(In)630 3435 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23 +b(In)630 4011 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m(e)j -(are)e(expanded.)37 b(Bac)m(kslash)630 3545 y(will)j(quote)h(an)m(y)f +(are)e(expanded.)37 b(Bac)m(kslash)630 4121 y(will)j(quote)h(an)m(y)f (other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p Ft('.)69 b(F)-8 -b(or)630 3654 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i +b(or)630 4231 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i (mak)m(e)h(`)p Fi(C-x)j Fs(\\)p Ft(')c(insert)f(a)h(single)h(`)p -Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 3790 y Fs("\\C-x\\\\":)45 -b("\\\\")150 3992 y Fj(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) -150 4139 y Ft(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f +Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 4370 y Fs("\\C-x\\\\":)45 +b("\\\\")150 4580 y Fj(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) +150 4727 y Ft(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f (in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150 -4248 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g +4836 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g (bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s -(erformed)f(as)i(the)150 4358 y(result)f(of)h(tests.)41 +(erformed)f(as)i(the)150 4946 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150 -4521 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h +5121 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h (bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 4630 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g +(the)630 5230 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g (application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test) -630 4740 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m -(haracters)i(are)f(required)e(to)i(isolate)i(it.)630 -4902 y Fs(mode)288 b Ft(The)20 b Fs(mode=)g Ft(form)g(of)h(the)g -Fs($if)f Ft(directiv)m(e)j(is)e(used)f(to)h(test)h(whether)e(Readline) -1110 5011 y(is)29 b(in)h Fs(emacs)e Ft(or)h Fs(vi)g Ft(mo)s(de.)40 -b(This)29 b(ma)m(y)h(b)s(e)e(used)h(in)g(conjunction)h(with)f(the)1110 -5121 y(`)p Fs(set)h(keymap)p Ft(')c(command,)i(for)f(instance,)i(to)f -(set)g(bindings)f(in)g(the)h Fs(emacs-)1110 5230 y(standard)23 -b Ft(and)h Fs(emacs-ctlx)f Ft(k)m(eymaps)i(only)g(if)g(Readline)h(is)f -(starting)h(out)1110 5340 y(in)k Fs(emacs)f Ft(mo)s(de.)p -eop end +630 5340 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m +(haracters)i(are)f(required)e(to)i(isolate)i(it.)p eop +end %%Page: 105 111 TeXDict begin 105 110 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(105)630 299 y Fs(term)288 -b Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e(used)g(to)i -(include)f(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 -408 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f -(output)g(b)m(y)g(the)g(terminal's)1110 518 y(function)24 +b(Command)29 b(Line)i(Editing)2062 b(105)630 299 y Fs(mode)288 +b Ft(The)20 b Fs(mode=)g Ft(form)g(of)h(the)g Fs($if)f +Ft(directiv)m(e)j(is)e(used)f(to)h(test)h(whether)e(Readline)1110 +408 y(is)29 b(in)h Fs(emacs)e Ft(or)h Fs(vi)g Ft(mo)s(de.)40 +b(This)29 b(ma)m(y)h(b)s(e)e(used)h(in)g(conjunction)h(with)f(the)1110 +518 y(`)p Fs(set)h(keymap)p Ft(')c(command,)i(for)f(instance,)i(to)f +(set)g(bindings)f(in)g(the)h Fs(emacs-)1110 628 y(standard)23 +b Ft(and)h Fs(emacs-ctlx)f Ft(k)m(eymaps)i(only)g(if)g(Readline)h(is)f +(starting)h(out)1110 737 y(in)k Fs(emacs)f Ft(mo)s(de.)630 +897 y Fs(term)288 b Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e +(used)g(to)i(include)f(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 +1006 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f +(output)g(b)m(y)g(the)g(terminal's)1110 1116 y(function)24 b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g -(the)g(`)p Fs(=)p Ft(')g(is)g(tested)h(against)1110 628 +(the)g(`)p Fs(=)p Ft(')g(is)g(tested)h(against)1110 1225 y(b)s(oth)k(the)h(full)g(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s -(ortion)e(of)h(the)g(terminal)1110 737 y(name)k(b)s(efore)f(the)g +(ortion)e(of)h(the)g(terminal)1110 1335 y(name)k(b)s(efore)f(the)g (\014rst)g(`)p Fs(-)p Ft('.)50 b(This)33 b(allo)m(ws)i Fs(sun)e Ft(to)h(matc)m(h)g(b)s(oth)f Fs(sun)g Ft(and)1110 -847 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)630 1006 y -Fs(application)1110 1116 y Ft(The)21 b Fq(application)j +1445 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)630 1604 y +Fs(application)1110 1714 y Ft(The)21 b Fq(application)j Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 1225 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h +(set-)1110 1823 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h (Readline)g(library)g(sets)g(the)g Fq(application)1110 -1335 y(name)5 b Ft(,)25 b(and)d(y)m(ou)h(can)g(test)h(for)e(a)h +1933 y(name)5 b Ft(,)25 b(and)d(y)m(ou)h(can)g(test)h(for)e(a)h (particular)h(v)-5 b(alue.)38 b(This)22 b(could)h(b)s(e)f(used)g(to) -1110 1445 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g +1110 2042 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g (for)h(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 -1554 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey) -f(sequence)h(that)f(quotes)1110 1664 y(the)e(curren)m(t)f(or)g -(previous)g(w)m(ord)g(in)g(Bash:)1350 1798 y Fs($if)47 -b(Bash)1350 1908 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word) -1350 2017 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2127 y($endif)150 -2286 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g +2152 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey) +f(sequence)h(that)f(quotes)1110 2262 y(the)e(curren)m(t)f(or)g +(previous)g(w)m(ord)g(in)g(Bash:)1350 2396 y Fs($if)47 +b(Bash)1350 2506 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word) +1350 2615 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2725 y($endif)150 +2884 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g (previous)g(example,)h(terminates)g(an)g Fs($if)e Ft(command.)150 -2446 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i +3044 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i (the)f Fs($if)g Ft(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g -(fails.)150 2605 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m +(fails.)150 3203 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m (es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g -(commands)630 2715 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 +(commands)630 3313 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e -(from)630 2824 y(`)p Fs(/etc/inputrc)p Ft(':)870 2959 -y Fs($include)46 b(/etc/inputrc)150 3158 y Fj(8.3.3)63 -b(Sample)41 b(Init)g(File)150 3305 y Ft(Here)27 b(is)f(an)h(example)g +(from)630 3422 y(`)p Fs(/etc/inputrc)p Ft(':)870 3557 +y Fs($include)46 b(/etc/inputrc)150 3756 y Fj(8.3.3)63 +b(Sample)41 b(Init)g(File)150 3903 y Ft(Here)27 b(is)f(an)h(example)g (of)f(an)h Fq(inputrc)k Ft(\014le.)39 b(This)26 b(illustrates)h(k)m(ey) h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 -3415 y(conditional)j(syn)m(tax.)p eop end +4012 y(conditional)j(syn)m(tax.)p eop end %%Page: 106 112 TeXDict begin 106 111 bop 150 -116 a Ft(106)2527 b(Bash)31 b(Reference)g(Man)m(ual)390 408 y Fs(#)47 b(This)g(file)g(controls)e @@ -13512,85 +13507,87 @@ TeXDict begin 125 130 bop 150 -116 a Ft(Chapter)30 b(9:)41 b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(125)630 299 y Fs(-r)384 b Ft(Read)26 b(the)h(curren)m(t)f(history)g(\014le)g (and)g(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)f(history)1110 -408 y(list.)630 573 y Fs(-w)384 b Ft(W)-8 b(rite)32 b(out)e(the)h +408 y(list.)630 562 y Fs(-w)384 b Ft(W)-8 b(rite)32 b(out)e(the)h (curren)m(t)f(history)g(to)i(the)e(history)g(\014le.)630 -739 y Fs(-p)384 b Ft(P)m(erform)31 b(history)f(substitution)h(on)f(the) +715 y Fs(-p)384 b Ft(P)m(erform)31 b(history)f(substitution)h(on)f(the) h Fq(arg)8 b Ft(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 -848 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g -(in)g(the)g(history)g(list.)630 1013 y Fs(-s)384 b Ft(The)30 +824 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g +(in)g(the)g(history)g(list.)630 977 y Fs(-s)384 b Ft(The)30 b Fq(arg)8 b Ft(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f (history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 -1178 y(When)24 b(an)m(y)h(of)f(the)h(`)p Fs(-w)p Ft(',)h(`)p +1130 y(When)24 b(an)m(y)h(of)f(the)h(`)p Fs(-w)p Ft(',)h(`)p Fs(-r)p Ft(',)f(`)p Fs(-a)p Ft(',)h(or)f(`)p Fs(-n)p Ft(')f(options)g(is)h(used,)g(if)f Fq(\014lename)30 b -Ft(is)24 b(giv)m(en,)j(then)630 1288 y(it)32 b(is)g(used)f(as)h(the)f +Ft(is)24 b(giv)m(en,)j(then)630 1240 y(it)32 b(is)g(used)f(as)h(the)f (history)h(\014le.)45 b(If)31 b(not,)h(then)g(the)f(v)-5 b(alue)32 b(of)g(the)g Fs(HISTFILE)d Ft(v)-5 b(ariable)33 -b(is)630 1397 y(used.)150 1638 y Fr(9.3)68 b(History)46 -b(Expansion)150 1798 y Ft(The)f(History)h(library)e(pro)m(vides)i(a)f +b(is)630 1350 y(used.)150 1576 y Fr(9.3)68 b(History)46 +b(Expansion)150 1735 y Ft(The)f(History)h(library)e(pro)m(vides)i(a)f (history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f -(history)150 1907 y(expansion)g(pro)m(vided)f(b)m(y)h +(history)150 1845 y(expansion)g(pro)m(vided)f(b)m(y)h Fs(csh)p Ft(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)i(manipulate)f(the)150 2017 y(history)30 b(information.)275 -2157 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h +(used)e(to)i(manipulate)f(the)150 1954 y(history)30 b(information.)275 +2086 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h (history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 -2266 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) +2195 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 -2376 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 2516 y(History)27 b(expansion)f(tak)m(es)i +2305 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g +(quic)m(kly)-8 b(.)275 2436 y(History)27 b(expansion)f(tak)m(es)i (place)f(in)f(t)m(w)m(o)i(parts.)39 b(The)26 b(\014rst)g(is)g(to)h -(determine)g(whic)m(h)f(line)h(from)f(the)150 2626 y(history)i(list)g +(determine)g(whic)m(h)f(line)h(from)f(the)150 2546 y(history)i(list)g (should)f(b)s(e)g(used)g(during)g(substitution.)39 b(The)27 b(second)h(is)g(to)h(select)g(p)s(ortions)e(of)h(that)h(line)150 -2735 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m(t)f(one.)40 +2655 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m(t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h(called)h(the)f -Fq(ev)m(en)m(t)p Ft(,)j(and)150 2845 y(the)21 b(p)s(ortions)g(of)g +Fq(ev)m(en)m(t)p Ft(,)j(and)150 2765 y(the)21 b(p)s(ortions)g(of)g (that)h(line)f(that)h(are)g(acted)g(up)s(on)e(are)h(called)h Fq(w)m(ords)p Ft(.)38 b(V)-8 b(arious)21 b Fq(mo)s(di\014ers)j -Ft(are)e(a)m(v)-5 b(ailable)150 2955 y(to)35 b(manipulate)f(the)g +Ft(are)e(a)m(v)-5 b(ailable)150 2874 y(to)35 b(manipulate)f(the)g (selected)i(w)m(ords.)51 b(The)33 b(line)h(is)g(brok)m(en)g(in)m(to)h -(w)m(ords)e(in)h(the)g(same)h(fashion)e(that)150 3064 +(w)m(ords)e(in)h(the)g(same)h(fashion)e(that)150 2984 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m(eral)g(w)m(ords)e(surrounded)f(b) m(y)i(quotes)g(are)g(considered)g(one)g(w)m(ord.)54 b(History)150 -3174 y(expansions)34 b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s +3094 y(expansions)34 b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s (earance)g(of)g(the)g(history)g(expansion)g(c)m(haracter,)i(whic)m(h)e -(is)150 3283 y(`)p Fs(!)p Ft(')d(b)m(y)f(default.)41 +(is)150 3203 y(`)p Fs(!)p Ft(')d(b)m(y)f(default.)41 b(Only)29 b(`)p Fs(\\)p Ft(')i(and)f(`)p Fs(')p Ft(')g(ma)m(y)h(b)s(e)f (used)g(to)h(escap)s(e)g(the)f(history)g(expansion)h(c)m(haracter.)275 -3423 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h +3335 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h Fs(shopt)e Ft(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150 -3533 y(page)32 b(43\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s +3444 y(page)32 b(43\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s (eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h -Fs(histverify)d Ft(shell)150 3643 y(option)39 b(is)f(enabled,)i(and)e +Fs(histverify)d Ft(shell)150 3554 y(option)39 b(is)f(enabled,)i(and)e (Readline)g(is)h(b)s(eing)e(used,)j(history)e(substitutions)g(are)g -(not)h(immediately)150 3752 y(passed)30 b(to)h(the)g(shell)g(parser.)40 +(not)h(immediately)150 3663 y(passed)30 b(to)h(the)g(shell)g(parser.)40 b(Instead,)30 b(the)h(expanded)f(line)h(is)f(reloaded)h(in)m(to)h(the)e -(Readline)h(editing)150 3862 y(bu\013er)e(for)i(further)e(mo)s +(Readline)h(editing)150 3773 y(bu\013er)e(for)i(further)e(mo)s (di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g -(the)g Fs(histreedit)e Ft(shell)i(option)150 3971 y(is)k(enabled,)h(a)g +(the)g Fs(histreedit)e Ft(shell)i(option)150 3882 y(is)k(enabled,)h(a)g (failed)g(history)f(expansion)g(will)g(b)s(e)g(reloaded)g(in)m(to)h -(the)g(Readline)f(editing)h(bu\013er)e(for)150 4081 y(correction.)74 +(the)g(Readline)f(editing)h(bu\013er)e(for)150 3992 y(correction.)74 b(The)41 b(`)p Fs(-p)p Ft(')g(option)g(to)h(the)f Fs(history)f Ft(builtin)g(command)h(ma)m(y)h(b)s(e)e(used)h(to)g(see)h(what)150 -4191 y(a)c(history)g(expansion)f(will)h(do)f(b)s(efore)h(using)f(it.)63 +4102 y(a)c(history)g(expansion)f(will)h(do)f(b)s(efore)h(using)f(it.)63 b(The)37 b(`)p Fs(-s)p Ft(')g(option)h(to)h(the)f Fs(history)d -Ft(builtin)i(ma)m(y)150 4300 y(b)s(e)c(used)h(to)g(add)g(commands)f(to) +Ft(builtin)i(ma)m(y)150 4211 y(b)s(e)c(used)h(to)g(add)g(commands)f(to) i(the)f(end)g(of)g(the)g(history)g(list)h(without)f(actually)i -(executing)f(them,)150 4410 y(so)j(that)h(they)f(are)g(a)m(v)-5 +(executing)f(them,)150 4321 y(so)j(that)h(they)f(are)g(a)m(v)-5 b(ailable)40 b(for)e(subsequen)m(t)f(recall.)65 b(This)37 -b(is)h(most)g(useful)g(in)f(conjunction)h(with)150 4519 -y(Readline.)275 4659 y(The)33 b(shell)h(allo)m(ws)h(con)m(trol)h(of)e +b(is)h(most)g(useful)g(in)f(conjunction)h(with)150 4430 +y(Readline.)275 4562 y(The)33 b(shell)h(allo)m(ws)h(con)m(trol)h(of)e (the)g(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history) -g(expansion)g(mec)m(h-)150 4769 y(anism)h(with)g(the)g +g(expansion)g(mec)m(h-)150 4671 y(anism)h(with)g(the)g Fs(histchars)d Ft(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e) i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 -4879 y(page)32 b(63\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g +4781 y(page)32 b(63\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g (commen)m(t)i(c)m(haracter)f(to)g(mark)f(history)g(timestamps)h(when) -150 4988 y(writing)e(the)h(history)f(\014le.)150 5193 -y Fj(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 5340 -y Ft(An)30 b(ev)m(en)m(t)i(designator)f(is)f(a)h(reference)g(to)g(a)g -(command)f(line)h(en)m(try)f(in)g(the)h(history)f(list.)p -eop end +150 4891 y(writing)e(the)h(history)f(\014le.)150 5083 +y Fj(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 5230 +y Ft(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h(a)f +(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48 +b(Unless)33 b(the)150 5340 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts) +f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h +(history)f(list.)p eop end %%Page: 126 132 TeXDict begin 126 131 bop 150 -116 a Ft(126)2527 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fs(!)432 b Ft(Start)34 @@ -13598,57 +13595,60 @@ b(a)f(history)h(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y) e(a)h(space,)h(tab,)f(the)g(end)f(of)630 408 y(the)i(line,)g(`)p Fs(=)p Ft(')g(or)f(`)p Fs(\()p Ft(')h(\(when)e(the)i Fs(extglob)d Ft(shell)j(option)f(is)h(enabled)f(using)g(the)g -Fs(shopt)630 518 y Ft(builtin\).)150 680 y Fs(!)p Fi(n)384 +Fs(shopt)630 518 y Ft(builtin\).)150 669 y Fs(!)p Fi(n)384 b Ft(Refer)30 b(to)i(command)e(line)g Fq(n)p Ft(.)150 -841 y Fs(!-)p Fi(n)336 b Ft(Refer)30 b(to)i(the)e(command)g -Fq(n)g Ft(lines)h(bac)m(k.)150 1003 y Fs(!!)384 b Ft(Refer)30 +819 y Fs(!-)p Fi(n)336 b Ft(Refer)30 b(to)i(the)e(command)g +Fq(n)g Ft(lines)h(bac)m(k.)150 970 y Fs(!!)384 b Ft(Refer)30 b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f -(for)g(`)p Fs(!-1)p Ft('.)150 1164 y Fs(!)p Fi(string)144 -b Ft(Refer)30 b(to)i(the)e(most)h(recen)m(t)g(command)f(starting)i -(with)e Fq(string)8 b Ft(.)150 1326 y Fs(!?)p Fi(string)j -Fs([?])630 1436 y Ft(Refer)33 b(to)h(the)f(most)g(recen)m(t)h(command)f -(con)m(taining)h Fq(string)8 b Ft(.)48 b(The)33 b(trailing)h(`)p -Fs(?)p Ft(')f(ma)m(y)h(b)s(e)630 1545 y(omitted)d(if)g(the)f -Fq(string)38 b Ft(is)31 b(follo)m(w)m(ed)h(immediately)g(b)m(y)e(a)h -(newline.)150 1707 y Fs(^)p Fi(string1)11 b Fs(^)p Fi(string2)g -Fs(^)630 1816 y Ft(Quic)m(k)31 b(Substitution.)43 b(Rep)s(eat)31 +(for)g(`)p Fs(!-1)p Ft('.)150 1120 y Fs(!)p Fi(string)144 +b Ft(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g +(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 +1230 y(list)31 b(starting)g(with)f Fq(string)8 b Ft(.)150 +1381 y Fs(!?)p Fi(string)j Fs([?])630 1490 y Ft(Refer)25 +b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t) +g(p)s(osition)g(in)g(the)g(history)630 1600 y(list)32 +b(con)m(taining)h Fq(string)8 b Ft(.)43 b(The)31 b(trailing)h(`)p +Fs(?)p Ft(')f(ma)m(y)h(b)s(e)f(omitted)h(if)f(the)h Fq(string)39 +b Ft(is)31 b(follo)m(w)m(ed)630 1709 y(immediately)h(b)m(y)e(a)h +(newline.)150 1860 y Fs(^)p Fi(string1)11 b Fs(^)p Fi(string2)g +Fs(^)630 1970 y Ft(Quic)m(k)31 b(Substitution.)43 b(Rep)s(eat)31 b(the)g(last)h(command,)g(replacing)f Fq(string1)39 b -Ft(with)31 b Fq(string2)7 b Ft(.)630 1926 y(Equiv)-5 +Ft(with)31 b Fq(string2)7 b Ft(.)630 2079 y(Equiv)-5 b(alen)m(t)31 b(to)g Fs(!!:s/)p Fi(string1)11 b Fs(/)p -Fi(string2)g Fs(/)p Ft(.)150 2088 y Fs(!#)384 b Ft(The)30 +Fi(string2)g Fs(/)p Ft(.)150 2230 y Fs(!#)384 b Ft(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150 -2289 y Fj(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 -2436 y Ft(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h +2420 y Fj(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 +2567 y Ft(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h (desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27 b(`)p Fs(:)p Ft(')g(separates)h(the)f(ev)m(en)m(t)150 -2546 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 +2677 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g -(b)s(egins)150 2655 y(with)30 b(a)g(`)p Fs(^)p Ft(',)g(`)p +(b)s(egins)150 2786 y(with)30 b(a)g(`)p Fs(^)p Ft(',)g(`)p Fs($)p Ft(',)g(`)p Fs(*)p Ft(',)h(`)p Fs(-)p Ft(',)f(or)g(`)p Fs(\045)p Ft('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i (the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150 -2765 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).) +2896 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).) 41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f -(line)g(separated)h(b)m(y)150 2874 y(single)h(spaces.)275 -3011 y(F)-8 b(or)31 b(example,)150 3174 y Fs(!!)384 b +(line)g(separated)h(b)m(y)150 3005 y(single)h(spaces.)275 +3136 y(F)-8 b(or)31 b(example,)150 3286 y Fs(!!)384 b Ft(designates)37 b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 -3283 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 3445 +3396 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 3546 y Fs(!!:$)288 b Ft(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 -3555 y(to)31 b Fs(!$)p Ft(.)150 3716 y Fs(!fi:2)240 b +3656 y(to)31 b Fs(!$)p Ft(.)150 3806 y Fs(!fi:2)240 b Ft(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f -(recen)m(t)i(command)e(starting)h(with)f(the)630 3826 -y(letters)j Fs(fi)p Ft(.)275 3988 y(Here)e(are)h(the)g(w)m(ord)f -(designators:)150 4151 y Fs(0)g(\(zero\))114 b Ft(The)30 +(recen)m(t)i(command)e(starting)h(with)f(the)630 3916 +y(letters)j Fs(fi)p Ft(.)275 4067 y(Here)e(are)h(the)g(w)m(ord)f +(designators:)150 4217 y Fs(0)g(\(zero\))114 b Ft(The)30 b Fs(0)p Ft(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h -(this)e(is)g(the)h(command)f(w)m(ord.)150 4313 y Fi(n)432 -b Ft(The)30 b Fq(n)p Ft(th)g(w)m(ord.)150 4474 y Fs(^)432 +(this)e(is)g(the)h(command)f(w)m(ord.)150 4368 y Fi(n)432 +b Ft(The)30 b Fq(n)p Ft(th)g(w)m(ord.)150 4518 y Fs(^)432 b Ft(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 -4636 y Fs($)432 b Ft(The)30 b(last)h(argumen)m(t.)150 -4798 y Fs(\045)432 b Ft(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h +4669 y Fs($)432 b Ft(The)30 b(last)h(argumen)m(t.)150 +4820 y Fs(\045)432 b Ft(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h (most)g(recen)m(t)g(`)p Fs(?)p Fi(string)11 b Fs(?)p -Ft(')28 b(searc)m(h.)150 4959 y Fi(x)11 b Fs(-)p Fi(y)325 +Ft(')28 b(searc)m(h.)150 4970 y Fi(x)11 b Fs(-)p Fi(y)325 b Ft(A)30 b(range)h(of)g(w)m(ords;)f(`)p Fs(-)p Fi(y)11 b Ft(')30 b(abbreviates)h(`)p Fs(0-)p Fi(y)11 b Ft('.)150 5121 y Fs(*)432 b Ft(All)28 b(of)g(the)g(w)m(ords,)g(except)h(the)e @@ -15839,736 +15839,739 @@ g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g TeXDict begin 156 161 bop 150 -116 a Ft(156)2527 b(Bash)31 b(Reference)g(Man)m(ual)150 299 y Fe(isearch-terminators)16 b Fc(:)h(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 b Fb(101)150 532 y Fr(K)150 -648 y Fe(keymap)15 b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 b Fb(101)150 536 y Fr(K)150 +654 y Fe(keymap)15 b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fb(101)150 900 -y Fr(L)150 1017 y Fe(LANG)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fb(101)150 910 +y Fr(L)150 1027 y Fe(LANG)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(69)150 1104 y Fe(LC_ALL)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:) +b Fb(69)150 1115 y Fe(LC_ALL)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 -b Fb(69)150 1191 y Fe(LC_COLLATE)7 b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g +b Fb(69)150 1203 y Fe(LC_COLLATE)7 b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fb(69)150 -1278 y Fe(LC_CTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +1291 y Fe(LC_CTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(70)150 1366 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(70)150 1380 y Fe(LC_MESSAGES)13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)40 b Fb(7,)26 b(70)150 1453 y Fe(LC_NUMERIC)7 +(:)g(:)g(:)40 b Fb(7,)26 b(70)150 1468 y Fe(LC_NUMERIC)7 b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)33 b Fb(70)150 1540 y Fe(LINENO)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g +f(:)g(:)33 b Fb(70)150 1556 y Fe(LINENO)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 -b Fb(70)150 1627 y Fe(LINES)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(70)150 1644 y Fe(LINES)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 -b Fb(70)150 1861 y Fr(M)150 1977 y Fe(MACHTYPE)12 b Fc(:)j(:)e(:)g(:)g +b Fb(70)150 1881 y Fr(M)150 1998 y Fe(MACHTYPE)12 b Fc(:)j(:)e(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 -b Fb(70)150 2064 y Fe(MAIL)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(70)150 2087 y Fe(MAIL)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(63)150 2152 y Fe(MAILCHECK)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g +b Fb(63)150 2175 y Fe(MAILCHECK)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b -Fb(70)150 2239 y Fe(MAILPATH)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:) +Fb(70)150 2263 y Fe(MAILPATH)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(63)150 -2326 y Fe(MAPFILE)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +2351 y Fe(MAPFILE)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(70)150 -2413 y Fe(mark-modified-lines)16 b Fc(:)h(:)d(:)f(:)g(:)g(:)g(:)g(:)g +2439 y Fe(mark-modified-lines)16 b Fc(:)h(:)d(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 -b Fb(101)150 2501 y Fe(mark-symlinked-directories)16 +b Fb(101)150 2527 y Fe(mark-symlinked-directories)16 b Fc(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -42 b Fb(101)150 2588 y Fe(match-hidden-files)23 b Fc(:)13 +42 b Fb(101)150 2615 y Fe(match-hidden-files)23 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(101)150 2675 y Fe(meta-flag)7 +(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(101)150 2703 y Fe +(menu-complete-display-prefix)11 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(102)150 2791 y Fe(meta-flag)7 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)34 b Fb(101)150 2927 y Fr(O)150 3043 y Fe(OLDPWD)17 +g(:)g(:)34 b Fb(101)150 3047 y Fr(O)150 3164 y Fe(OLDPWD)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 3131 y Fe(OPTARG)17 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 3252 y Fe(OPTARG)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(63)150 3218 y Fe(OPTERR)17 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(63)150 3340 y Fe(OPTERR)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 3305 y Fe(OPTIND)17 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 3428 y Fe(OPTIND)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(63)150 3392 y Fe(OSTYPE)17 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(63)150 3516 y Fe(OSTYPE)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 3480 y Fe(output-meta)22 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 3604 y Fe(output-meta)22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46 -b Fb(102)150 3732 y Fr(P)150 3848 y Fe(page-completions)7 +b Fb(102)150 3860 y Fr(P)150 3978 y Fe(page-completions)7 b Fc(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(102)150 -3935 y Fe(PATH)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +4066 y Fe(PATH)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(63)150 4022 y Fe(PIPESTATUS)7 b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fb(70)2025 -299 y Fe(POSIXLY_CORRECT)11 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(63)2025 299 y Fe(PIPESTATUS)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(70)2025 +386 y Fe(POSIXLY_CORRECT)11 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)38 b Fb(70)2025 387 y Fe(PPID)23 b Fc(:)13 +g(:)g(:)g(:)38 b Fb(70)2025 473 y Fe(PPID)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(70)2025 475 y Fe(PROMPT_COMMAND)14 +h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(70)2025 560 y Fe(PROMPT_COMMAND)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 -b Fb(70)2025 563 y Fe(PROMPT_DIRTRIM)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h(:) +b Fb(70)2025 648 y Fe(PROMPT_DIRTRIM)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(71)2025 651 y Fe(PS1)8 +(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(71)2025 735 y Fe(PS1)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(63)2025 -738 y Fe(PS2)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +822 y Fe(PS2)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(63)2025 826 y Fe(PS3)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(63)2025 909 y Fe(PS3)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(71)2025 914 y Fe(PS4)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(71)2025 996 y Fe(PS4)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(71)2025 1002 y Fe(PWD)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +b Fb(71)2025 1083 y Fe(PWD)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -34 b Fb(71)2025 1239 y Fr(R)2025 1356 y Fe(RANDOM)17 +34 b Fb(71)2025 1316 y Fr(R)2025 1432 y Fe(RANDOM)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(71)2025 1444 y Fe(READLINE_LINE)16 +(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(71)2025 1519 y Fe(READLINE_LINE)16 b Fc(:)g(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 -b Fb(71)2025 1532 y Fe(READLINE_POINT)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h +b Fb(71)2025 1606 y Fe(READLINE_POINT)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(71)2025 1620 y Fe(REPLY)21 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(71)2025 1694 y Fe(REPLY)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(71)2025 1708 y Fe +g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(71)2025 1781 y Fe (revert-all-at-newline)11 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(102)2025 1945 y Fr(S)2025 2062 y Fe(SECONDS)15 b +b Fb(102)2025 2014 y Fr(S)2025 2130 y Fe(SECONDS)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)41 b Fb(71)2025 2150 y Fe(SHELL)21 b +h(:)f(:)g(:)g(:)41 b Fb(71)2025 2217 y Fe(SHELL)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(71)2025 2238 y Fe(SHELLOPTS)9 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(71)2025 2304 y Fe(SHELLOPTS)9 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)36 b Fb(71)2025 2326 y Fe(SHLVL)21 b Fc(:)13 +f(:)g(:)g(:)36 b Fb(71)2025 2391 y Fe(SHLVL)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)46 b Fb(71)2025 2414 y Fe(show-all-if-ambiguous)11 +g(:)g(:)h(:)f(:)g(:)46 b Fb(71)2025 2478 y Fe(show-all-if-ambiguous)11 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(102)2025 2502 y Fe +(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(102)2025 2565 y Fe (show-all-if-unmodified)8 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b -Fb(102)2025 2590 y Fe(skip-completed-text)16 b Fc(:)h(:)c(:)g(:)h(:)f +Fb(102)2025 2653 y Fe(skip-completed-text)16 b Fc(:)h(:)c(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)43 b Fb(102)2025 2845 y Fr(T)2025 2963 y Fe(TEXTDOMAIN)9 +g(:)43 b Fb(102)2025 2904 y Fr(T)2025 3020 y Fe(TEXTDOMAIN)9 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)36 b Fb(7)2025 3050 y Fe(TEXTDOMAINDIR)21 +h(:)f(:)g(:)36 b Fb(7)2025 3107 y Fe(TEXTDOMAINDIR)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46 -b Fb(7)2025 3138 y Fe(TIMEFORMAT)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g +b Fb(7)2025 3194 y Fe(TIMEFORMAT)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(71)2025 -3226 y Fe(TMOUT)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +3282 y Fe(TMOUT)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b -Fb(72)2025 3314 y Fe(TMPDIR)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g +Fb(72)2025 3369 y Fe(TMPDIR)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(72)2025 3551 y Fr(U)2025 3668 y Fe(UID)8 b Fc(:)13 +b Fb(72)2025 3601 y Fr(U)2025 3717 y Fe(UID)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(72)2025 3905 -y Fr(V)2025 4022 y Fe(visible-stats)14 b Fc(:)i(:)d(:)g(:)g(:)h(:)f(:)g +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(72)2025 3950 +y Fr(V)2025 4066 y Fe(visible-stats)14 b Fc(:)i(:)d(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(102)150 4255 y Fr(D.4)68 -b(F)-11 b(unction)44 b(Index)150 4492 y(A)150 4610 y +g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(103)150 4299 y Fr(D.4)68 +b(F)-11 b(unction)44 b(Index)150 4535 y(A)150 4661 y Fe(abort)27 b(\(C-g\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(114)150 4698 y Fe(accept-line)28 +h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(114)150 4753 y Fe(accept-line)28 b(\(Newline)g(or)e(Return\))e Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)50 b Fb(109)150 4787 y Fe(alias-expand-line)29 +(:)g(:)50 b Fb(109)150 4845 y Fe(alias-expand-line)29 b(\(\))21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(116)150 -5045 y Fr(B)150 5163 y Fe(backward-char)29 b(\(C-b\))23 +5122 y Fr(B)150 5248 y Fe(backward-char)29 b(\(C-b\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)49 b Fb(108)150 5252 y +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)49 b Fb(108)150 5340 y Fe(backward-delete-char)30 b(\(Rubout\))14 b Fc(:)h(:)f(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)41 b Fb(110)150 5340 y Fe -(backward-kill-line)30 b(\(C-x)c(Rubout\))16 b Fc(:)f(:)e(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)43 b Fb(111)2025 4492 y Fe(backward-kill-word)29 +(:)g(:)g(:)h(:)f(:)g(:)g(:)41 b Fb(110)2025 4535 y Fe +(backward-kill-line)29 b(\(C-x)e(Rubout\))16 b Fc(:)f(:)e(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)43 b Fb(111)2025 4622 y Fe(backward-kill-word)29 b(\(\))18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(111)2025 4582 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(111)2025 4710 y Fe(backward-kill-word)29 b(\(M-DEL\))24 b Fc(:)13 b(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fb(111)2025 -4673 y Fe(backward-word)28 b(\(M-b\))c Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:) +4797 y Fe(backward-word)28 b(\(M-b\))c Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)50 -b Fb(108)2025 4764 y Fe(beginning-of-history)30 b(\(M-<\))23 +b Fb(108)2025 4884 y Fe(beginning-of-history)30 b(\(M-<\))23 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -49 b Fb(109)2025 4855 y Fe(beginning-of-line)29 b(\(C-a\))13 +49 b Fb(109)2025 4972 y Fe(beginning-of-line)29 b(\(C-a\))13 b Fc(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)40 b Fb(108)2025 5126 y Fr(C)2025 5249 y +g(:)g(:)g(:)40 b Fb(108)2025 5224 y Fr(C)2025 5340 y Fe(call-last-kbd-macro)30 b(\(C-x)c(e\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(114)2025 -5340 y Fe(capitalize-word)29 b(\(M-c\))18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 -b Fb(111)p eop end +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(114)p +eop end %%Page: 157 163 TeXDict begin 157 162 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(157)150 299 y Fe(character-search)29 -b(\(C-]\))15 b Fc(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 b Fb(115)150 387 y -Fe(character-search-backward)31 b(\(M-C-]\))23 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fb(115)150 474 y Fe(clear-screen)28 -b(\(C-l\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(108)150 562 y Fe(complete)27 b(\(TAB\))20 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(112)150 -650 y Fe(complete-command)29 b(\(M-!\))15 b Fc(:)g(:)e(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 -b Fb(113)150 738 y Fe(complete-filename)29 b(\(M-/\))13 -b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)39 b Fb(113)150 825 y Fe(complete-hostname)29 -b(\(M-@\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(113)150 913 y Fe +b(D:)i(Indexes)2623 b(157)150 299 y Fe(capitalize-word)29 +b(\(M-c\))18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(111)150 387 +y Fe(character-search)29 b(\(C-]\))15 b Fc(:)g(:)e(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 +b Fb(115)150 475 y Fe(character-search-backward)31 b(\(M-C-]\))23 +b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fb(115)150 +564 y Fe(clear-screen)28 b(\(C-l\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)35 b Fb(108)150 652 y Fe(complete)27 b(\(TAB\))20 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 +b Fb(112)150 740 y Fe(complete-command)29 b(\(M-!\))15 +b Fc(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)42 b Fb(113)150 828 y Fe(complete-filename)29 +b(\(M-/\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(113)150 917 y Fe(complete-hostname) +29 b(\(M-@\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(113)150 1005 y Fe (complete-into-braces)30 b(\(M-{\))23 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(114)150 -1001 y Fe(complete-username)29 b(\(M-~\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:) +1093 y Fe(complete-username)29 b(\(M-~\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 -b Fb(113)150 1089 y Fe(complete-variable)29 b(\(M-$\))13 +b Fb(113)150 1181 y Fe(complete-variable)29 b(\(M-$\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)39 b Fb(113)150 1176 y Fe(copy-backward-word)30 +g(:)h(:)f(:)39 b Fb(113)150 1270 y Fe(copy-backward-word)30 b(\(\))18 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(112)150 1264 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(112)150 1358 y Fe(copy-forward-word)29 b(\(\))21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 -b Fb(112)150 1352 y Fe(copy-region-as-kill)30 b(\(\))15 +b Fb(112)150 1446 y Fe(copy-region-as-kill)30 b(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)42 b Fb(112)150 1606 y Fr(D)150 1724 +g(:)g(:)g(:)g(:)42 b Fb(112)150 1703 y Fr(D)150 1821 y Fe(dabbrev-expand)29 b(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)38 b Fb(114)150 1811 y Fe(delete-char)28 b(\(C-d\))11 +g(:)38 b Fb(114)150 1909 y Fe(delete-char)28 b(\(C-d\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(110)150 -1899 y Fe(delete-char-or-list)30 b(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g +1998 y Fe(delete-char-or-list)30 b(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 -b Fb(113)150 1987 y Fe(delete-horizontal-space)31 b(\(\))22 +b Fb(113)150 2086 y Fe(delete-horizontal-space)31 b(\(\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -49 b Fb(111)150 2075 y Fe(digit-argument)29 b(\()p Fd(M-0)p +49 b Fb(111)150 2174 y Fe(digit-argument)29 b(\()p Fd(M-0)p Fe(,)e Fd(M-1)p Fe(,)f(...)g Fd(M--)p Fe(\))d Fc(:)13 -b(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(112)150 2162 y Fe +b(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(112)150 2262 y Fe (display-shell-version)30 b(\(C-x)d(C-v\))16 b Fc(:)e(:)f(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)43 b Fb(116)150 2250 y Fe(do-uppercase-version) +(:)f(:)g(:)g(:)g(:)g(:)43 b Fb(116)150 2351 y Fe(do-uppercase-version) 30 b(\(M-a,)d(M-b,)f(M-)p Fd(x)9 b Fe(,)27 b(...\))325 -2337 y Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +2438 y Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48 b Fb(114)150 2425 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48 b Fb(114)150 2526 y Fe(downcase-word)29 b(\(M-l\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)49 -b Fb(110)150 2513 y Fe(dump-functions)29 b(\(\))11 b +b Fb(110)150 2614 y Fe(dump-functions)29 b(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(115)150 -2600 y Fe(dump-macros)28 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g +2702 y Fe(dump-macros)28 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)45 b Fb(116)150 2688 y Fe(dump-variables)29 +g(:)g(:)h(:)f(:)g(:)45 b Fb(116)150 2791 y Fe(dump-variables)29 b(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 -b Fb(115)150 2776 y Fe(dynamic-complete-history)31 b(\(M-TAB\))7 +b Fb(115)150 2879 y Fe(dynamic-complete-history)31 b(\(M-TAB\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(114)150 -3030 y Fr(E)150 3148 y Fe(edit-and-execute-command)e(\(C-xC-e\))23 +3136 y Fr(E)150 3254 y Fe(edit-and-execute-command)e(\(C-xC-e\))23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fb(116)150 -3235 y Fe(end-kbd-macro)29 b(\(C-x)d(\)\))7 b Fc(:)14 +3342 y Fe(end-kbd-macro)29 b(\(C-x)d(\)\))7 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)34 b Fb(114)150 3323 y Fe(end-of-history)29 +(:)g(:)h(:)f(:)g(:)34 b Fb(114)150 3431 y Fe(end-of-history)29 b(\(M->\))21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(109)150 -3411 y Fe(end-of-line)28 b(\(C-e\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g +3519 y Fe(end-of-line)28 b(\(C-e\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)38 b Fb(108)150 3499 y Fe(exchange-point-and-mark)31 +g(:)g(:)38 b Fb(108)150 3607 y Fe(exchange-point-and-mark)31 b(\(C-x)26 b(C-x\))11 b Fc(:)j(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)38 -b Fb(115)150 3753 y Fr(F)150 3870 y Fe(forward-backward-delete-char)32 +b Fb(115)150 3864 y Fr(F)150 3982 y Fe(forward-backward-delete-char)32 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(110)150 3958 y Fe(forward-char)28 b(\(C-f\))8 b +b Fb(110)150 4071 y Fe(forward-char)28 b(\(C-f\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(108)150 -4046 y Fe(forward-search-history)c(\(C-s\))17 b Fc(:)d(:)f(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(109)150 4134 +4159 y Fe(forward-search-history)c(\(C-s\))17 b Fc(:)d(:)f(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(109)150 4247 y Fe(forward-word)28 b(\(M-f\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)35 b Fb(108)150 4378 y Fr(G)150 4495 y Fe(glob-complete-word)30 +(:)35 b Fb(108)150 4494 y Fr(G)150 4612 y Fe(glob-complete-word)30 b(\(M-g\))10 b Fc(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(116)150 4583 y Fe(glob-expand-word)29 +(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(116)150 4700 y Fe(glob-expand-word)29 b(\(C-x)e(*\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(116)150 4670 y Fe +(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(116)150 4788 y Fe (glob-list-expansions)30 b(\(C-x)d(g\))7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(116)150 4925 -y Fr(H)150 5042 y Fe(history-and-alias-expand-line)f(\(\))7 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(116)150 5045 +y Fr(H)150 5163 y Fe(history-and-alias-expand-line)f(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(116)150 -5130 y Fe(history-expand-line)d(\(M-^\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g +5252 y Fe(history-expand-line)d(\(M-^\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(116)150 5217 y Fe(history-search-backward)d(\(\))22 +b Fb(116)150 5340 y Fe(history-search-backward)d(\(\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -49 b Fb(109)150 5305 y Fe(history-search-forward)31 b(\(\))8 -b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)34 b Fb(109)2025 299 y Fr(I)2025 416 y Fe(insert-comment)29 +49 b Fb(109)2025 299 y Fe(history-search-forward)30 b(\(\))8 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)34 b Fb(109)2025 561 y Fr(I)2025 681 y Fe(insert-comment)29 b(\(M-#\))21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(115)2025 -503 y Fe(insert-completions)29 b(\(M-*\))10 b Fc(:)15 +770 y Fe(insert-completions)29 b(\(M-*\))10 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)37 b Fb(113)2025 591 y Fe(insert-last-argument)30 +(:)37 b Fb(113)2025 859 y Fe(insert-last-argument)30 b(\(M-.)c(or)g(M-_\))18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)45 -b Fb(116)2025 844 y Fr(K)2025 961 y Fe(kill-line)27 b(\(C-k\))16 -b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b -Fb(111)2025 1048 y Fe(kill-region)28 b(\(\))19 b Fc(:)13 +b Fb(116)2025 1121 y Fr(K)2025 1241 y Fe(kill-line)27 +b(\(C-k\))16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 +b Fb(111)2025 1330 y Fe(kill-region)28 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Fb(112)2025 -1136 y Fe(kill-whole-line)29 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g +1419 y Fe(kill-whole-line)29 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)35 b Fb(111)2025 1224 y Fe(kill-word)27 b(\(M-d\))16 +f(:)g(:)35 b Fb(111)2025 1508 y Fe(kill-word)27 b(\(M-d\))16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b -Fb(111)2025 1467 y Fr(M)2025 1583 y Fe(magic-space)28 +Fb(111)2025 1760 y Fr(M)2025 1880 y Fe(magic-space)28 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 -b Fb(116)2025 1671 y Fe(menu-complete)28 b(\(\))13 b +b Fb(116)2025 1969 y Fe(menu-complete)28 b(\(\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(113)2025 -1758 y Fe(menu-complete-backward)30 b(\(\))8 b Fc(:)13 +2058 y Fe(menu-complete-backward)30 b(\(\))8 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(113)2025 2012 y Fr(N)2025 2129 y Fe(next-history)28 +b Fb(113)2025 2320 y Fr(N)2025 2440 y Fe(next-history)28 b(\(C-n\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(109)2025 2216 y Fe(non-incremental-forward-search)q(-hist)q(ory)d -(\(M-n\))2200 2303 y Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(109)2025 2529 y Fe(non-incremental-forward-search)q(-hist)q(ory)d +(\(M-n\))2200 2616 y Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b -Fb(109)2025 2391 y Fe(non-incremental-reverse-search)q(-hist)q(ory)32 -b(\(M-p\))2200 2478 y Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +Fb(109)2025 2705 y Fe(non-incremental-reverse-search)q(-hist)q(ory)32 +b(\(M-p\))2200 2793 y Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b -Fb(109)2025 2713 y Fr(O)2025 2829 y Fe(operate-and-get-next)30 +Fb(109)2025 3036 y Fr(O)2025 3156 y Fe(operate-and-get-next)30 b(\(C-o\))23 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)49 b Fb(116)2025 2917 y Fe(overwrite-mode)29 +g(:)g(:)g(:)49 b Fb(116)2025 3245 y Fe(overwrite-mode)29 b(\(\))11 b Fc(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(111)2025 3160 y Fr(P)2025 3277 y Fe(possible-command-completions) +b Fb(111)2025 3496 y Fr(P)2025 3616 y Fe(possible-command-completions) 32 b(\(C-x)26 b(!\))21 b Fc(:)13 b(:)g(:)h(:)f(:)47 b -Fb(114)2025 3364 y Fe(possible-completions)30 b(\(M-?\))23 +Fb(114)2025 3705 y Fe(possible-completions)30 b(\(M-?\))23 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -49 b Fb(112)2025 3452 y Fe(possible-filename-completions)32 +49 b Fb(112)2025 3795 y Fe(possible-filename-completions)32 b(\(C-x)26 b(/\))18 b Fc(:)c(:)f(:)g(:)45 b Fb(113)2025 -3539 y Fe(possible-hostname-completions)32 b(\(C-x)26 -b(@\))18 b Fc(:)c(:)f(:)g(:)45 b Fb(113)2025 3627 y Fe +3884 y Fe(possible-hostname-completions)32 b(\(C-x)26 +b(@\))18 b Fc(:)c(:)f(:)g(:)45 b Fb(113)2025 3973 y Fe (possible-username-completions)32 b(\(C-x)26 b(~\))18 -b Fc(:)c(:)f(:)g(:)45 b Fb(113)2025 3715 y Fe +b Fc(:)c(:)f(:)g(:)45 b Fb(113)2025 4062 y Fe (possible-variable-completions)32 b(\(C-x)26 b($\))18 -b Fc(:)c(:)f(:)g(:)45 b Fb(113)2025 3802 y Fe(prefix-meta)28 +b Fc(:)c(:)f(:)g(:)45 b Fb(113)2025 4151 y Fe(prefix-meta)28 b(\(ESC\))11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(114)2025 3890 y Fe(previous-history)29 b(\(C-p\))15 +b Fb(114)2025 4240 y Fe(previous-history)29 b(\(C-p\))15 b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)42 b Fb(109)2025 4143 y Fr(Q)2025 4260 +h(:)f(:)g(:)g(:)42 b Fb(109)2025 4502 y Fr(Q)2025 4622 y Fe(quoted-insert)28 b(\(C-q)f(or)f(C-v\))19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)46 -b Fb(110)2025 4513 y Fr(R)2025 4630 y Fe(re-read-init-file)29 +b Fb(110)2025 4884 y Fr(R)2025 5004 y Fe(re-read-init-file)29 b(\(C-x)e(C-r\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)36 b Fb(114)2025 4718 y Fe(redraw-current-line)30 +(:)g(:)h(:)f(:)g(:)36 b Fb(114)2025 5093 y Fe(redraw-current-line)30 b(\(\))15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(108)2025 4805 y Fe +(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(108)2025 5182 y Fe (reverse-search-history)30 b(\(C-r\))17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)44 b Fb(109)2025 4893 y Fe(revert-line)28 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)44 b Fb(109)2025 5271 y Fe(revert-line)28 b(\(M-r\))11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(115)2025 5136 y Fr(S)2025 5252 y Fe(self-insert)28 -b(\(a,)e(b,)g(A,)g(1,)g(!,)g(...)q(\))7 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(110)2025 5340 y Fe(set-mark)27 -b(\(C-@\))20 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Fb(115)p eop end %%Page: 158 164 TeXDict begin 158 163 bop 150 -116 a Ft(158)2527 b(Bash)31 -b(Reference)g(Man)m(ual)150 299 y Fe(shell-backward-word)f(\(\))15 +b(Reference)g(Man)m(ual)150 299 y Fr(S)150 416 y Fe(self-insert)d(\(a,) +e(b,)g(A,)g(1,)h(!,)f(...\))7 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)33 b Fb(110)150 504 y Fe(set-mark)27 b(\(C-@\))20 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 +b Fb(115)150 591 y Fe(shell-backward-word)30 b(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)42 b Fb(108)150 390 y Fe(shell-expand-line)29 +g(:)g(:)g(:)g(:)42 b Fb(108)150 679 y Fe(shell-expand-line)29 b(\(M-C-e\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(116)150 482 y Fe(shell-forward-word)c +(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(116)150 767 y Fe(shell-forward-word)c (\(\))18 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(108)150 573 y +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(108)150 855 y Fe(shell-kill-word)29 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -35 b Fb(111)150 665 y Fe(skip-csi-sequence)29 b(\(\))21 +35 b Fb(111)150 942 y Fe(skip-csi-sequence)29 b(\(\))21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(115)150 756 y Fe(start-kbd-macro)29 +(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(115)150 1030 y Fe(start-kbd-macro)29 b(\(C-x)e(\(\))19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(114)150 1020 -y Fr(T)150 1145 y Fe(tilde-expand)28 b(\(M-&\))8 b Fc(:)15 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(114)150 1274 +y Fr(T)150 1391 y Fe(tilde-expand)28 b(\(M-&\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(115)150 1236 y +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(115)150 1479 y Fe(transpose-chars)29 b(\(C-t\))18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 -b Fb(110)150 1328 y Fe(transpose-words)29 b(\(M-t\))18 +b Fb(110)150 1566 y Fe(transpose-words)29 b(\(M-t\))18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)44 b Fb(110)2025 299 y Fr(U)2025 -415 y Fe(undo)26 b(\(C-_)h(or)f(C-x)g(C-u\))c Fc(:)13 +429 y Fe(undo)26 b(\(C-_)h(or)f(C-x)g(C-u\))c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)48 b Fb(114)2025 502 y Fe(universal-argument)29 +(:)h(:)f(:)g(:)g(:)48 b Fb(114)2025 523 y Fe(universal-argument)29 b(\(\))18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(112)2025 589 y +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(112)2025 617 y Fe(unix-filename-rubout)30 b(\(\))13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)40 -b Fb(111)2025 676 y Fe(unix-line-discard)29 b(\(C-u\))13 +b Fb(111)2025 711 y Fe(unix-line-discard)29 b(\(C-u\))13 b Fc(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)40 b Fb(111)2025 764 y Fe(unix-word-rubout)29 +g(:)g(:)g(:)40 b Fb(111)2025 806 y Fe(unix-word-rubout)29 b(\(C-w\))15 b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(111)2025 851 y +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(111)2025 900 y Fe(upcase-word)28 b(\(M-u\))11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -38 b Fb(110)2025 1102 y Fr(Y)2025 1218 y Fe(yank)26 b(\(C-y\))12 +38 b Fb(110)2025 1188 y Fr(Y)2025 1318 y Fe(yank)26 b(\(C-y\))12 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)39 b Fb(112)2025 1306 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))19 +(:)39 b Fb(112)2025 1412 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)46 b Fb(110)2025 1393 y Fe(yank-nth-arg)28 b(\(M-C-y\))22 +(:)46 b Fb(110)2025 1506 y Fe(yank-nth-arg)28 b(\(M-C-y\))22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(109)2025 1480 y Fe(yank-pop)27 +(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(109)2025 1600 y Fe(yank-pop)27 b(\(M-y\))20 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 -b Fb(112)150 1712 y Fr(D.5)68 b(Concept)45 b(Index)150 -1972 y(A)150 2090 y Fb(alias)27 b(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g +b Fb(112)150 1833 y Fr(D.5)68 b(Concept)45 b(Index)150 +2092 y(A)150 2211 y Fb(alias)27 b(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(81)150 2179 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(81)150 2300 y(arithmetic)26 b(ev)l(aluation)16 b Fc(:)e(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -43 b Fb(80)150 2267 y(arithmetic)26 b(expansion)d Fc(:)13 +43 b Fb(80)150 2389 y(arithmetic)26 b(expansion)d Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(24)150 2355 y(arithmetic,)27 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(24)150 2477 y(arithmetic,)27 b(shell)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 -b Fb(80)150 2443 y(arra)n(ys)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +b Fb(80)150 2566 y(arra)n(ys)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41 -b Fb(82)150 2699 y Fr(B)150 2817 y Fb(bac)n(kground)9 +b Fb(82)150 2823 y Fr(B)150 2942 y Fb(bac)n(kground)9 b Fc(:)j(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)35 b Fb(91)150 2905 y(Bash)26 b(con\014guration)d +(:)g(:)35 b Fb(91)150 3031 y(Bash)26 b(con\014guration)d Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(129)150 -2993 y(Bash)26 b(installation)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +3119 y(Bash)26 b(installation)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)46 b Fb(129)150 3081 y(Bourne)26 b(shell)13 +g(:)g(:)h(:)46 b Fb(129)150 3208 y(Bourne)26 b(shell)13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)40 b Fb(5)150 3170 y(brace)26 b(expansion)20 b +(:)f(:)40 b Fb(5)150 3297 y(brace)26 b(expansion)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)47 -b Fb(19)150 3258 y(builtin)9 b Fc(:)k(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(19)150 3385 y(builtin)9 b Fc(:)k(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 -b Fb(3)150 3496 y Fr(C)150 3615 y Fb(command)26 b(editing)15 +b Fb(3)150 3626 y Fr(C)150 3745 y Fb(command)26 b(editing)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 -b Fb(96)150 3703 y(command)26 b(execution)d Fc(:)13 b(:)g(:)g(:)g(:)g +b Fb(96)150 3833 y(command)26 b(execution)d Fc(:)13 b(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)49 b Fb(31)150 3791 y(command)26 b(expansion)16 +h(:)f(:)g(:)g(:)49 b Fb(31)150 3922 y(command)26 b(expansion)16 b Fc(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)42 b Fb(31)150 -3879 y(command)26 b(history)12 b Fc(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +4010 y(command)26 b(history)12 b Fc(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)39 b Fb(123)150 3968 y(command)26 b(searc)n(h)10 +g(:)g(:)39 b Fb(123)150 4099 y(command)26 b(searc)n(h)10 b Fc(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 -b Fb(31)150 4056 y(command)26 b(substitution)15 b Fc(:)e(:)g(:)g(:)g(:) +b Fb(31)150 4188 y(command)26 b(substitution)15 b Fc(:)e(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)41 b Fb(24)150 4144 y(command)26 b(timing)7 +(:)f(:)g(:)41 b Fb(24)150 4276 y(command)26 b(timing)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(8)150 4232 y(commands,)26 b(comp)r(ound)18 b Fc(:)c(:)f(:)g(:)g(:) +b Fb(8)150 4365 y(commands,)26 b(comp)r(ound)18 b Fc(:)c(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)45 b Fb(9)150 4321 y(commands,)26 b(conditional)d +(:)h(:)f(:)g(:)45 b Fb(9)150 4454 y(commands,)26 b(conditional)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(10)150 4409 y(commands,)26 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(10)150 4542 y(commands,)26 b(grouping)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(13)150 4497 y(commands,)26 b(lists)6 b Fc(:)15 b(:)e(:)g(:)g(:)g +b Fb(13)150 4631 y(commands,)26 b(lists)6 b Fc(:)15 b(:)e(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(9)150 -4585 y(commands,)26 b(lo)r(oping)16 b Fc(:)f(:)e(:)g(:)h(:)f(:)g(:)g(:) +4720 y(commands,)26 b(lo)r(oping)16 b Fc(:)f(:)e(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)42 b Fb(10)150 4674 y(commands,)26 b(pip)r(elines)12 +(:)g(:)h(:)42 b Fb(10)150 4808 y(commands,)26 b(pip)r(elines)12 b Fc(:)i(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(8)150 -4762 y(commands,)26 b(shell)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g +4897 y(commands,)26 b(shell)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)42 b Fb(8)150 4850 y(commands,)26 +f(:)g(:)g(:)g(:)g(:)42 b Fb(8)150 4985 y(commands,)26 b(simple)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)44 -b Fb(8)150 4938 y(commen)n(ts,)26 b(shell)7 b Fc(:)15 +b Fb(8)150 5074 y(commen)n(ts,)26 b(shell)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 -b Fb(7)150 5027 y(completion)27 b(builtins)15 b Fc(:)e(:)g(:)g(:)g(:)g +b Fb(7)150 5163 y(completion)27 b(builtins)15 b Fc(:)e(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)42 b Fb(119)150 5115 y(con\014guration)15 +g(:)g(:)g(:)g(:)42 b Fb(119)150 5251 y(con\014guration)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42 -b Fb(129)150 5203 y(con)n(trol)26 b(op)r(erator)21 b +b Fb(129)150 5340 y(con)n(trol)26 b(op)r(erator)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(3)150 5291 y(copro)r(cess)12 b Fc(:)i(:)g(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b -Fb(14)2025 1972 y Fr(D)2025 2094 y Fb(directory)26 b(stac)n(k)c +b Fb(3)2025 2092 y(copro)r(cess)12 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38 b +Fb(14)2025 2346 y Fr(D)2025 2464 y Fb(directory)26 b(stac)n(k)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 -b Fb(83)2025 2359 y Fr(E)2025 2481 y Fb(editing)26 b(command)g(lines)13 +b Fb(83)2025 2718 y Fr(E)2025 2836 y Fb(editing)26 b(command)g(lines)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fb(96)2025 2571 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fb(96)2025 2924 y(en)n(vironmen)n(t)12 b Fc(:)g(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(33)2025 2661 y(ev)l(aluation,)26 +g(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(33)2025 3012 y(ev)l(aluation,)26 b(arithmetic)e Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49 b -Fb(80)2025 2751 y(ev)n(en)n(t)24 b(designators)14 b Fc(:)h(:)e(:)g(:)g +Fb(80)2025 3100 y(ev)n(en)n(t)24 b(designators)14 b Fc(:)h(:)e(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)41 b Fb(125)2025 2841 y(execution)25 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)41 b Fb(125)2025 3188 y(execution)25 b(en)n(vironmen)n(t)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 -b Fb(32)2025 2931 y(exit)25 b(status)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)h(:) +b Fb(32)2025 3276 y(exit)25 b(status)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45 b Fb(3,)26 -b(33)2025 3021 y(expansion)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g +b(33)2025 3364 y(expansion)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(19)2025 -3111 y(expansion,)26 b(arithmetic)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g +3452 y(expansion,)26 b(arithmetic)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)38 b Fb(24)2025 3201 y(expansion,)26 b(brace)10 b +f(:)38 b Fb(24)2025 3540 y(expansion,)26 b(brace)10 b Fc(:)j(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 -b Fb(19)2025 3291 y(expansion,)26 b(\014lename)12 b Fc(:)h(:)g(:)g(:)h +b Fb(19)2025 3628 y(expansion,)26 b(\014lename)12 b Fc(:)h(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)38 b Fb(25)2025 3381 y(expansion,)26 +g(:)g(:)g(:)g(:)g(:)h(:)38 b Fb(25)2025 3716 y(expansion,)26 b(parameter)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)40 -b Fb(21)2025 3471 y(expansion,)26 b(pathname)18 b Fc(:)13 +b Fb(21)2025 3804 y(expansion,)26 b(pathname)18 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(25)2025 3561 y(expansion,)26 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(25)2025 3892 y(expansion,)26 b(tilde)8 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)34 b Fb(20)2025 3651 y(expressions,)27 b(arithmetic)7 +g(:)34 b Fb(20)2025 3980 y(expressions,)27 b(arithmetic)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(80)2025 3741 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(80)2025 4068 y(expressions,)27 b(conditional)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 -b Fb(78)2025 4006 y Fr(F)2025 4128 y Fb(\014eld)15 b +b Fb(78)2025 4322 y Fr(F)2025 4440 y Fb(\014eld)15 b Fc(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)42 b Fb(3)2025 4218 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)42 b Fb(3)2025 4528 y(\014lename)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)42 b Fb(3)2025 -4308 y(\014lename)26 b(expansion)c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:) +4616 y(\014lename)26 b(expansion)c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)49 b Fb(25)2025 4398 y(foreground)23 b Fc(:)13 +(:)g(:)g(:)49 b Fb(25)2025 4704 y(foreground)23 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -49 b Fb(91)2025 4488 y(functions,)26 b(shell)21 b Fc(:)13 +49 b Fb(91)2025 4792 y(functions,)26 b(shell)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 -b Fb(15)2025 4752 y Fr(H)2025 4874 y Fb(history)25 b(builtins)14 +b Fb(15)2025 5046 y Fr(H)2025 5164 y Fb(history)25 b(builtins)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41 -b Fb(123)2025 4964 y(history)25 b(ev)n(en)n(ts)19 b Fc(:)13 +b Fb(123)2025 5252 y(history)25 b(ev)n(en)n(ts)19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46 -b Fb(125)2025 5054 y(history)25 b(expansion)8 b Fc(:)14 +b Fb(125)2025 5340 y(history)25 b(expansion)8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(125)2025 -5145 y(history)25 b(list)c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b Fb(123)2025 5235 -y(History)-6 b(,)25 b(ho)n(w)h(to)g(use)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)40 b Fb(122)p eop end +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(125)p +eop end %%Page: 159 165 TeXDict begin 159 164 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(159)150 299 y Fr(I)150 415 y Fb(iden)n(ti\014er) -22 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +b(D:)i(Indexes)2623 b(159)150 299 y Fb(history)26 b(list)21 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)47 b Fb(123)150 386 y(History)-6 b(,)26 b(ho)n(w)g(to)f(use)13 +b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fb(122)150 +636 y Fr(I)150 752 y Fb(iden)n(ti\014er)22 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)50 b Fb(3)150 840 y(initialization)28 b(\014le,)e(readline) +13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(98)150 927 y(installation)13 +b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)40 b Fb(129)150 1014 y(in)n(teraction,)27 b(readline)21 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 b Fb(95)150 +1101 y(in)n(teractiv)n(e)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)50 b Fb(3)150 502 y(initialization)28 -b(\014le,)e(readline)13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(98)150 -589 y(installation)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)40 b Fb(129)150 676 y(in)n(teraction,)27 -b(readline)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 -b Fb(95)150 764 y(in)n(teractiv)n(e)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(75,)26 b(76)150 851 y(in)n -(ternationalization)14 b Fc(:)h(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -41 b Fb(7)150 1084 y Fr(J)150 1200 y Fb(job)16 b Fc(:)e(:)f(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)43 b Fb(3)150 1287 y(job)26 b(con)n(trol)13 +g(:)g(:)g(:)41 b Fb(75,)26 b(76)150 1189 y(in)n(ternationalization)14 +b Fc(:)h(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 b +Fb(7)150 1422 y Fr(J)150 1538 y Fb(job)16 b Fc(:)e(:)f(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)43 b Fb(3)150 1625 y(job)26 b(con)n(trol)13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40 -b Fb(3,)26 b(91)150 1537 y Fr(K)150 1653 y Fb(kill)g(ring)21 +b Fb(3,)26 b(91)150 1875 y Fr(K)150 1992 y Fb(kill)g(ring)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)47 b Fb(97)150 1740 y(killing)27 +h(:)f(:)g(:)g(:)g(:)47 b Fb(97)150 2079 y(killing)27 b(text)19 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)46 b Fb(97)150 1989 y Fr(L)150 2105 +h(:)f(:)g(:)g(:)g(:)46 b Fb(97)150 2329 y Fr(L)150 2445 y Fb(lo)r(calization)14 b Fc(:)i(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(7)150 2193 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(7)150 2532 y(login)27 b(shell)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(75)150 2442 y -Fr(M)150 2558 y Fb(matc)n(hing,)26 b(pattern)20 b Fc(:)14 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(75)150 2782 y +Fr(M)150 2898 y Fb(matc)n(hing,)26 b(pattern)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(26)150 -2645 y(metac)n(haracter)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +2986 y(metac)n(haracter)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(3)150 2878 y Fr(N)150 -2994 y Fb(name)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(3)150 3219 y Fr(N)150 +3335 y Fb(name)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40 -b Fb(3)150 3081 y(nativ)n(e)25 b(languages)13 b Fc(:)i(:)e(:)g(:)h(:)f +b Fb(3)150 3422 y(nativ)n(e)25 b(languages)13 b Fc(:)i(:)e(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40 b Fb(7)150 3169 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40 b Fb(7)150 3510 y(notation,)27 b(readline)9 b Fc(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)35 b Fb(96)150 3418 y Fr(O)150 3534 y Fb(op)r(erator,)27 +(:)f(:)g(:)35 b Fb(96)150 3760 y Fr(O)150 3876 y Fb(op)r(erator,)27 b(shell)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)43 b Fb(3)150 3784 y Fr(P)150 3900 y Fb(parameter)26 +g(:)g(:)43 b Fb(3)150 4126 y Fr(P)150 4242 y Fb(parameter)26 b(expansion)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 -b Fb(21)150 3987 y(parameters)17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(21)150 4329 y(parameters)17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)43 b Fb(17)150 -4074 y(parameters,)27 b(p)r(ositional)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g +4416 y(parameters,)27 b(p)r(ositional)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)44 b Fb(17)150 4161 y(parameters,)27 b(sp)r(ecial)18 +g(:)44 b Fb(17)150 4504 y(parameters,)27 b(sp)r(ecial)18 b Fc(:)c(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fb(18)150 -4249 y(pathname)25 b(expansion)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g +4591 y(pathname)25 b(expansion)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)38 b Fb(25)150 4336 y(pattern)25 b(matc)n(hing)14 +g(:)38 b Fb(25)150 4678 y(pattern)25 b(matc)n(hing)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)40 -b Fb(26)150 4423 y(pip)r(eline)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(26)150 4766 y(pip)r(eline)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)50 -b Fb(8)150 4510 y(POSIX)17 b Fc(:)12 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(8)150 4853 y(POSIX)17 b Fc(:)12 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)44 -b Fb(3)150 4597 y(POSIX)25 b(Mo)r(de)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(86)150 -4685 y(pro)r(cess)27 b(group)9 b Fc(:)k(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)36 b Fb(3)2025 299 y(pro)r(cess)26 -b(group)g(ID)21 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)49 b Fb(3)2025 386 y(pro)r(cess)26 b(substitution)c -Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48 b Fb(24)2025 -474 y(programmable)27 b(completion)20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)46 -b Fb(117)2025 561 y(prompting)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(84)2025 -811 y Fr(Q)2025 928 y Fb(quoting)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)37 -b Fb(6)2025 1015 y(quoting,)26 b(ANSI)13 b Fc(:)e(:)j(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(6)2025 -1266 y Fr(R)2025 1382 y Fb(Readline,)26 b(ho)n(w)g(to)g(use)7 -b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(94)2025 -1469 y(redirection)7 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fb(27)2025 1557 -y(reserv)n(ed)25 b(w)n(ord)7 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b Fb(3)2025 1644 -y(restricted)26 b(shell)8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)35 b Fb(86)2025 1731 y(return)25 -b(status)c Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)48 b Fb(4)2025 1965 y Fr(S)2025 2082 y -Fb(shell)26 b(arithmetic)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)37 b Fb(80)2025 2169 y(shell)26 b(function)12 -b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)38 -b Fb(15)2025 2256 y(shell)26 b(script)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b -Fb(34)2025 2344 y(shell)26 b(v)l(ariable)18 b Fc(:)c(:)f(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(17)2025 -2431 y(shell,)26 b(in)n(teractiv)n(e)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:) +b Fb(3)2025 299 y(POSIX)24 b(Mo)r(de)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)40 b Fb(76)2025 2518 y(signal)7 -b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fb(4)2025 2606 -y(signal)27 b(handling)17 b Fc(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)44 b Fb(34)2025 2693 y(sp)r(ecial)27 -b(builtin)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37 b Fb(86)2025 +386 y(pro)r(cess)26 b(group)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(3)2025 473 +y(pro)r(cess)26 b(group)g(ID)21 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)49 b Fb(3)2025 561 y(pro)r(cess)26 +b(substitution)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48 +b Fb(24)2025 648 y(programmable)27 b(completion)20 b +Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)46 b Fb(117)2025 735 y(prompting)11 b +Fc(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)38 b Fb(84)2025 985 y Fr(Q)2025 1101 y Fb(quoting)10 +b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)37 b Fb(6)2025 1189 y(quoting,)26 +b(ANSI)13 b Fc(:)e(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -37 b Fb(4,)26 b(62)2025 2781 y(startup)f(\014les)d Fc(:)13 -b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 -b Fb(75)2025 2868 y(susp)r(ending)25 b(jobs)6 b Fc(:)14 -b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(91)2025 3118 y Fr(T)2025 3235 y Fb(tilde)26 b(expansion)18 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 -b Fb(20)2025 3322 y(tok)n(en)11 b Fc(:)h(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)40 b Fb(6)2025 1439 y Fr(R)2025 1555 y Fb(Readline,)26 +b(ho)n(w)g(to)g(use)7 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 +b Fb(94)2025 1642 y(redirection)7 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b +Fb(27)2025 1729 y(reserv)n(ed)25 b(w)n(ord)7 b Fc(:)14 +b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 +b Fb(3)2025 1817 y(restricted)26 b(shell)8 b Fc(:)14 +b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35 +b Fb(86)2025 1904 y(return)25 b(status)c Fc(:)13 b(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)48 b Fb(4)2025 +2137 y Fr(S)2025 2254 y Fb(shell)26 b(arithmetic)11 b +Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 +b Fb(80)2025 2341 y(shell)26 b(function)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fb(15)2025 +2428 y(shell)26 b(script)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(34)2025 2515 +y(shell)26 b(v)l(ariable)18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(17)2025 2603 y(shell,)26 +b(in)n(teractiv)n(e)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)40 b Fb(76)2025 2690 y(signal)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)34 b Fb(4)2025 2777 y(signal)27 b(handling)17 +b Fc(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44 +b Fb(34)2025 2865 y(sp)r(ecial)27 b(builtin)10 b Fc(:)j(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(4,)26 b(62)2025 +2952 y(startup)f(\014les)d Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(75)2025 3039 y(susp)r(ending)25 +b(jobs)6 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)33 b Fb(91)2025 3289 y Fr(T)2025 3405 y Fb(tilde)26 +b(expansion)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)45 b Fb(20)2025 3493 y(tok)n(en)11 b Fc(:)h(:)i(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38 -b Fb(4)2025 3409 y(translation,)27 b(nativ)n(e)e(languages)13 +(:)g(:)38 b Fb(4)2025 3580 y(translation,)27 b(nativ)n(e)e(languages)13 b Fc(:)i(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)40 b Fb(7)2025 3660 y Fr(V)2025 3776 y Fb(v)l(ariable,)26 +g(:)g(:)g(:)40 b Fb(7)2025 3830 y Fr(V)2025 3946 y Fb(v)l(ariable,)26 b(shell)8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)34 b Fb(17)2025 3864 y(v)l(ariables,)27 b(readline)21 +f(:)g(:)g(:)34 b Fb(17)2025 4033 y(v)l(ariables,)27 b(readline)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 -b Fb(99)2025 4114 y Fr(W)2025 4230 y Fb(w)n(ord)21 b +b Fb(99)2025 4283 y Fr(W)2025 4399 y Fb(w)n(ord)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(4)2025 4318 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(4)2025 4487 y(w)n(ord)26 b(splitting)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(25)2025 4568 y Fr(Y)2025 -4685 y Fb(y)n(anking)25 b(text)9 b Fc(:)j(:)h(:)g(:)h(:)f(:)g(:)g(:)g +g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(25)2025 4737 y Fr(Y)2025 +4853 y Fb(y)n(anking)25 b(text)9 b Fc(:)j(:)h(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(97)p eop end diff --git a/doc/bashref.texi b/doc/bashref.texi index 2f457515..90af9738 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -1717,7 +1717,7 @@ Bash uses the value of the variable formed from the rest of expanded and that value is used in the rest of the substitution, rather than the value of @var{parameter} itself. This is known as @code{indirect expansion}. -The exceptions to this are the expansions of $@{!@var{prefix}@*} +The exceptions to this are the expansions of $@{!@var{prefix}@*@} and $@{!@var{name}[@@]@} described below. The exclamation point must immediately follow the left brace in order to @@ -6695,14 +6695,6 @@ redirection errors, variable assignment errors for assignments preceding the command name, and so on. @item -If @env{CDPATH} is set, the @code{cd} builtin will not implicitly -append the current directory to it. This means that @code{cd} will -fail if no valid directory name can be constructed from -any of the entries in @env{$CDPATH}, even if the a directory with -the same name as the name given as an argument to @code{cd} exists -in the current directory. - -@item A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. @@ -6710,6 +6702,11 @@ A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. @item +A non-interactive shell exists 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. + +@item A non-interactive shell exits with an error status if the iteration variable in a @code{for} statement or the selection variable in a @code{select} statement is a readonly variable. @@ -6775,10 +6772,6 @@ does not refer to an existing directory, @code{cd} will fail instead of falling back to @var{physical} mode. @item -When the @code{pwd} builtin is supplied the @option{-P} option, it resets -@code{$PWD} to a pathname containing no symlinks. - -@item The @code{pwd} builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the @option{-P} option. diff --git a/doc/bashref.vr b/doc/bashref.vr index be1edc5e..acc01b88 100644 --- a/doc/bashref.vr +++ b/doc/bashref.vr @@ -128,10 +128,11 @@ \entry{mark-modified-lines}{101}{\code {mark-modified-lines}} \entry{mark-symlinked-directories}{101}{\code {mark-symlinked-directories}} \entry{match-hidden-files}{101}{\code {match-hidden-files}} +\entry{menu-complete-display-prefix}{102}{\code {menu-complete-display-prefix}} \entry{output-meta}{102}{\code {output-meta}} \entry{page-completions}{102}{\code {page-completions}} \entry{revert-all-at-newline}{102}{\code {revert-all-at-newline}} \entry{show-all-if-ambiguous}{102}{\code {show-all-if-ambiguous}} \entry{show-all-if-unmodified}{102}{\code {show-all-if-unmodified}} \entry{skip-completed-text}{102}{\code {skip-completed-text}} -\entry{visible-stats}{102}{\code {visible-stats}} +\entry{visible-stats}{103}{\code {visible-stats}} diff --git a/doc/bashref.vrs b/doc/bashref.vrs index 9b87d3c7..76eb2c0a 100644 --- a/doc/bashref.vrs +++ b/doc/bashref.vrs @@ -117,6 +117,7 @@ \entry {\code {mark-modified-lines}}{101} \entry {\code {mark-symlinked-directories}}{101} \entry {\code {match-hidden-files}}{101} +\entry {\code {menu-complete-display-prefix}}{102} \entry {\code {meta-flag}}{101} \initial {O} \entry {\code {OLDPWD}}{70} @@ -161,4 +162,4 @@ \initial {U} \entry {\code {UID}}{72} \initial {V} -\entry {\code {visible-stats}}{102} +\entry {\code {visible-stats}}{103} diff --git a/doc/builtins.0 b/doc/builtins.0 index 2d8bef62..c172d617 100644 --- a/doc/builtins.0 +++ b/doc/builtins.0 @@ -601,7 +601,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 nnaammee is set to ?. + the first non-option argument, and _n_a_m_e is set to ?. ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. @@ -983,8 +983,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS status is false. Any command associated with the RREETTUURRNN trap is executed before execution resumes after the function or script. - sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n] [_a_r_g ...] - sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n] [_a_r_g ...] + 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 displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables can- @@ -1228,15 +1228,15 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS ccoommppaatt3311 If set, bbaasshh changes its behavior to that of version 3.1 with respect to quoted arguments to the conditional com- - mand's =~ operator. + mand's ==~~ operator. 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. + using the conditional command's << and >> operators. 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 and + using the conditional command's << and >> operators and the effect of interrupting a command list. ccoommppaatt4411 @item compat41 If set, bbaasshh, when in posix mode, treats diff --git a/doc/builtins.ps b/doc/builtins.ps index e71d4eee..942623dd 100644 --- a/doc/builtins.ps +++ b/doc/builtins.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.19.2 -%%CreationDate: Wed Jul 21 08:54:49 2010 +%%CreationDate: Mon Oct 25 10:55:37 2010 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -1192,7 +1192,7 @@ Q 2.043(When the end of options is encountered,)144 710.4 R F1(getopts) 4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 (alue greater than zero.)-.25 F F4(OPTIND)144 722.4 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 (is set to ?.)2.5 E(GNU Bash-4.0)72 768 Q(2004 Apr 20)148.735 E(8) 203.725 E 0 Cg EP %%Page: 9 9 @@ -1781,12 +1781,13 @@ E F0 .246(or the e)2.985 F .246(xit status of the last command e)-.15 F 4.805 E F0 2.306(trap is e)4.806 F -.15(xe)-.15 G 2.306(cuted before e) .15 F -.15(xe)-.15 G(cution).15 E(resumes after the function or script.) 144 554.4 Q F1(set)108 571.2 Q F0([)2.5 E F1 -(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1<ad6f>-2.5 E F2(option)2.5 -E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1(set)108 583.2 Q F0 -([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option) -2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 595.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 +(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1<ad6f>-2.5 E F2 +(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1 +(set)108 583.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o) +-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0 +(...])2.5 E -.4(Wi)144 595.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 607.2 R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 (riables cannot be).25 F 2.947(reset. In)144 619.2 R F2 .447(posix mode) @@ -2130,9 +2131,9 @@ F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist)144 (ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 702 Q F0 .42(If set,)184 714 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(to the conditional command')184 726 Q 2.5(s=)-.55 -G 2.5(~o)-2.5 G(perator)-2.5 E(.)-.55 E(GNU Bash-4.0)72 768 Q -(2004 Apr 20)148.735 E(16)198.725 E 0 Cg EP +-.15 F(guments)-.18 E(to the conditional command')184 726 Q(s)-.55 E F1 +(=~)2.5 E F0(operator)2.5 E(.)-.55 E(GNU Bash-4.0)72 768 Q(2004 Apr 20) +148.735 E(16)198.725 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP @@ -2142,25 +2143,25 @@ BP /Times-Bold@0 SF(compat32)144 84 Q F0 1.409(If set,)184 96 R F1(bash) 3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41(ersion 3.2 with respect to locale-speci\214c)-.15 F -(string comparison when using the conditional command')184 108 Q 2.5 -(s<a)-.55 G(nd > operators.)-2.5 E F1(compat40)144 120 Q F0 1.41 -(If set,)184 132 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 -(vior to that of v)-.2 F 1.409 -(ersion 4.0 with respect to locale-speci\214c)-.15 F 1.692 -(string comparison when using the conditional command')184 144 R 4.193 -(s<a)-.55 G 1.693(nd > operators and the)-4.193 F(ef)184 156 Q -(fect of interrupting a command list.)-.25 E F1(compat41)144 168 Q F0 -1.232(@item compat41 If set,)184 180 R F1(bash)3.732 E F0 3.732(,w)C -1.232(hen in posix mode, treats a single quote in a double-)-3.732 F -1.213(quoted parameter e)184 192 R 1.213 -(xpansion as a special character)-.15 F 6.213(.T)-.55 G 1.214 -(he single quotes must match \(an)-6.213 F -2.15 -.25(ev e)184 204 T -2.949(nn).25 G .448(umber\) and the characters between the single quote\ -s are considered quoted.)-2.949 F(This)5.448 E .062(is the beha)184 216 -R .062(vior of posix mode through v)-.2 F .062(ersion 4.1.)-.15 F .062 -(The def)5.062 F .062(ault bash beha)-.1 F .063(vior remains as)-.2 F -(in pre)184 228 Q(vious v)-.25 E(ersions.)-.15 E F1(dirspell)144 240 Q -F0 .859(If set,)7.77 F F1(bash)3.359 E F0 .858 +(string comparison when using the conditional command')184 108 Q(s)-.55 +E F1(<)2.5 E F0(and)2.5 E F1(>)2.5 E F0(operators.)2.5 E F1(compat40)144 +120 Q F0 1.41(If set,)184 132 R F1(bash)3.91 E F0 1.41(changes its beha) +3.91 F 1.409(vior to that of v)-.2 F 1.409 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 1.682 +(string comparison when using the conditional command')184 144 R(s)-.55 +E F1(<)4.183 E F0(and)4.183 E F1(>)4.183 E F0 1.683(operators and the) +4.183 F(ef)184 156 Q(fect of interrupting a command list.)-.25 E F1 +(compat41)144 168 Q F0 1.232(@item compat41 If set,)184 180 R F1(bash) +3.732 E F0 3.732(,w)C 1.232 +(hen in posix mode, treats a single quote in a double-)-3.732 F 1.213 +(quoted parameter e)184 192 R 1.213(xpansion as a special character)-.15 +F 6.213(.T)-.55 G 1.214(he single quotes must match \(an)-6.213 F -2.15 +-.25(ev e)184 204 T 2.949(nn).25 G .448(umber\) and the characters betw\ +een the single quotes are considered quoted.)-2.949 F(This)5.448 E .062 +(is the beha)184 216 R .062(vior of posix mode through v)-.2 F .062 +(ersion 4.1.)-.15 F .062(The def)5.062 F .062(ault bash beha)-.1 F .063 +(vior remains as)-.2 F(in pre)184 228 Q(vious v)-.25 E(ersions.)-.15 E +F1(dirspell)144 240 Q F0 .859(If set,)7.77 F F1(bash)3.359 E F0 .858 (attempts spelling correction on directory names during w)3.359 F .858 (ord completion if)-.1 F (the directory name initially supplied does not e)184 252 Q(xist.)-.15 E diff --git a/doc/rbash.0 b/doc/rbash.0 index eb062207..ebd414ca 100644 --- a/doc/rbash.0 +++ b/doc/rbash.0 @@ -21,7 +21,7 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying a file name 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 @@ -39,7 +39,7 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +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 diff --git a/doc/rbash.ps b/doc/rbash.ps index 62dca30a..76aa6c2d 100644 --- a/doc/rbash.ps +++ b/doc/rbash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.19.2 -%%CreationDate: Wed Jul 21 08:54:50 2010 +%%CreationDate: Mon Oct 25 10:55:38 2010 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%DocumentSuppliedResources: procset grops 1.19 2 @@ -247,10 +247,10 @@ G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or)2.25 E F3 -.27(BA)2.5 G (pecifying command names containing)-32.5 E F2(/)2.5 E F0 32.5<8373>108 216 S(pecifying a \214le name containing a)-32.5 E 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 32.5<8353>108 232.8 S .351 -(pecifying a \214lename containing a slash as an ar)-32.5 F .351 -(gument to the)-.18 F F2<ad70>2.851 E F0 .351(option to the)2.851 F F2 -(hash)2.851 E F0 -.2(bu)2.851 G .351(iltin com-).2 F(mand)144 244.8 Q +(iltin command).2 E 32.5<8373>108 232.8 S .45 +(pecifying a \214lename containing a slash as an ar)-32.5 F .449 +(gument to the)-.18 F F2<ad70>2.949 E F0 .449(option to the)2.949 F F2 +(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 244.8 Q 32.5<8369>108 261.6 S(mporting function de\214nitions from the shell en) -32.5 E(vironment at startup)-.4 E 32.5<8370>108 278.4 S(arsing the v) -32.5 E(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E @@ -260,7 +260,7 @@ ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E 32.5 (iltin command to replace the shell with another command).2 E 32.5<8361> 108 328.8 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E F2<ad66>2.5 E F0(and)2.5 E F2<ad64>2.5 E F0(options to the)2.5 E F2 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8355>108 345.6 S +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8375>108 345.6 S (sing the)-32.5 E F2(enable)2.5 E F0 -.2(bu)2.5 G (iltin command to enable disabled shell b).2 E(uiltins)-.2 E 32.5<8373> 108 362.4 S(pecifying the)-32.5 E F2<ad70>2.5 E F0(option to the)2.5 E diff --git a/doc/version.texi b/doc/version.texi index a68f5e79..cc4b015c 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -2,9 +2,9 @@ Copyright (C) 1988-2010 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Mon Sep 6 22:08:10 EDT 2010 +@set LASTCHANGE Wed Oct 20 21:37:22 EDT 2010 @set EDITION 4.2 @set VERSION 4.2 -@set UPDATED 6 September 2010 -@set UPDATED-MONTH September 2010 +@set UPDATED 20 October 2010 +@set UPDATED-MONTH October 2010 diff --git a/include/chartypes.h b/include/chartypes.h index 389d4fd3..77bcad97 100644 --- a/include/chartypes.h +++ b/include/chartypes.h @@ -103,7 +103,6 @@ #ifndef TOCTRL /* letter to control char -- ASCII. The TOUPPER is in there so \ce and \cE will map to the same character in $'...' expansions. */ - /* XXX - should this be TOUPPER(x) ^ x040 ? */ # define TOCTRL(x) (TOUPPER(x) & 037) #endif #ifndef UNCTRL diff --git a/lib/readline/complete.c b/lib/readline/complete.c index c1ee0f1b..50eb70e9 100644 --- a/lib/readline/complete.c +++ b/lib/readline/complete.c @@ -2450,7 +2450,10 @@ rl_old_menu_complete (count, invoking_key) match_list_index += count; if (match_list_index < 0) - match_list_index += match_list_size; + { + while (match_list_index < 0) + match_list_index += match_list_size; + } else match_list_index %= match_list_size; @@ -2615,7 +2618,10 @@ rl_menu_complete (count, ignore) match_list_index += count; if (match_list_index < 0) - match_list_index += match_list_size; + { + while (match_list_index < 0) + match_list_index += match_list_size; + } else match_list_index %= match_list_size; diff --git a/lib/readline/complete.c~ b/lib/readline/complete.c~ index 764030fc..4b73e104 100644 --- a/lib/readline/complete.c~ +++ b/lib/readline/complete.c~ @@ -197,7 +197,7 @@ int _rl_skip_completed_text = 0; /* If non-zero, menu completion displays the common prefix first in the cycle of possible completions instead of the last. */ -int _rl_menu_complete_prefix_first = 1; +int _rl_menu_complete_prefix_first = 0; /* If non-zero, then this is the address of a function to call when completing on a directory name. The function is called with @@ -2450,7 +2450,10 @@ rl_old_menu_complete (count, invoking_key) match_list_index += count; if (match_list_index < 0) - match_list_index += match_list_size; + { + while (match_list_index < 0) + match_list_index += match_list_size; + } else match_list_index %= match_list_size; diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 43049296..985210ea 100644 --- a/lib/readline/doc/rluser.texi +++ b/lib/readline/doc/rluser.texi @@ -1235,7 +1235,7 @@ Kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same as @code{shell-forward-word}. -@item backward-kill-word () +@item shell-backward-kill-word () Kill the word behind point. Word boundaries are the same as @code{shell-backward-word}. @end ifset diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h index e3c44ce4..384ff67c 100644 --- a/lib/readline/rlprivate.h +++ b/lib/readline/rlprivate.h @@ -345,6 +345,7 @@ extern void _rl_set_cursor PARAMS((int, int)); /* text.c */ extern void _rl_fix_point PARAMS((int)); extern int _rl_replace_text PARAMS((const char *, int, int)); +extern int _rl_forward_char_internal PARAMS((int)); extern int _rl_insert_char PARAMS((int, int)); extern int _rl_overwrite_char PARAMS((int, int)); extern int _rl_overwrite_rubout PARAMS((int, int)); diff --git a/lib/readline/rlprivate.h~ b/lib/readline/rlprivate.h~ index 404341a2..e3c44ce4 100644 --- a/lib/readline/rlprivate.h~ +++ b/lib/readline/rlprivate.h~ @@ -418,6 +418,7 @@ extern int _rl_completion_case_map; extern int _rl_match_hidden_files; extern int _rl_page_completions; extern int _rl_skip_completed_text; +extern int _rl_menu_complete_prefix_first; /* display.c */ extern int _rl_vis_botlin; diff --git a/lib/readline/text.c b/lib/readline/text.c index 4c90e651..536e31af 100644 --- a/lib/readline/text.c +++ b/lib/readline/text.c @@ -265,11 +265,13 @@ rl_forward_byte (count, key) if (count > 0) { - int end = rl_point + count; + int end, lend; + + end = rl_point + count; #if defined (VI_MODE) - int lend = rl_end > 0 ? rl_end - (VI_COMMAND_MODE()) : rl_end; + lend = rl_end > 0 ? rl_end - (VI_COMMAND_MODE()) : rl_end; #else - int lend = rl_end; + lend = rl_end; #endif if (end > lend) @@ -287,6 +289,31 @@ rl_forward_byte (count, key) return 0; } +int +_rl_forward_char_internal (count) + int count; +{ + int point; + +#if defined (HANDLE_MULTIBYTE) + point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); + +#if defined (VI_MODE) + if (point >= rl_end && VI_COMMAND_MODE()) + point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO); +#endif + + if (rl_end < 0) + rl_end = 0; +#else + point = rl_point + count; + if (point > rl_end) + point = rl_end; +#endif + + return (point); +} + #if defined (HANDLE_MULTIBYTE) /* Move forward COUNT characters. */ int @@ -309,20 +336,12 @@ rl_forward_char (count, key) return 0; } - point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); - -#if defined (VI_MODE) - if (point >= rl_end && VI_COMMAND_MODE()) - point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO); -#endif + point = _rl_forward_char_internal (count); if (rl_point == point) rl_ding (); rl_point = point; - - if (rl_end < 0) - rl_end = 0; } return 0; @@ -805,8 +824,9 @@ _rl_insert_char (count, c) /* We are inserting a single character. If there is pending input, then make a string of all of the pending characters that are bound to rl_insert, and insert - them all. */ - if (_rl_any_typein ()) + them all. Don't do this if we're current reading input from + a macro. */ + if ((RL_ISSTATE (RL_STATE_MACROINPUT) == 0) && _rl_any_typein ()) _rl_insert_typein (c); else { diff --git a/lib/readline/text.c~ b/lib/readline/text.c~ index 6f4e2316..e022156d 100644 --- a/lib/readline/text.c~ +++ b/lib/readline/text.c~ @@ -150,7 +150,7 @@ rl_delete_text (from, to) if (_rl_doing_an_undo == 0) rl_add_undo (UNDO_DELETE, from, to, text); else - free (text); + xfree (text); rl_end -= diff; rl_line_buffer[rl_end] = '\0'; @@ -265,11 +265,13 @@ rl_forward_byte (count, key) if (count > 0) { - int end = rl_point + count; + int end, lend; + + end = rl_point + count; #if defined (VI_MODE) - int lend = rl_end > 0 ? rl_end - (VI_COMMAND_MODE()) : rl_end; + lend = rl_end > 0 ? rl_end - (VI_COMMAND_MODE()) : rl_end; #else - int lend = rl_end; + lend = rl_end; #endif if (end > lend) @@ -287,6 +289,31 @@ rl_forward_byte (count, key) return 0; } +int +_rl_forward_char_internal (count) + int count; +{ + int point; + +#if defined (HANDLE_MULTIBYTE) + point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); + +#if defined (VI_MODE) + if (point >= rl_end && VI_COMMAND_MODE()) + point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO); +#endif + + if (rl_end < 0) + rl_end = 0; +#else + point = rl_point + count; + if (point > rl_end) + point = rl_end; +#endif + + return (point); +} + #if defined (HANDLE_MULTIBYTE) /* Move forward COUNT characters. */ int @@ -309,20 +336,12 @@ rl_forward_char (count, key) return 0; } - point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); - -#if defined (VI_MODE) - if (point >= rl_end && VI_COMMAND_MODE()) - point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO); -#endif + point = _rl_forward_char_internal (count); if (rl_point == point) rl_ding (); rl_point = point; - - if (rl_end < 0) - rl_end = 0; } return 0; @@ -752,7 +771,7 @@ _rl_insert_char (count, c) string[i] = '\0'; rl_insert_text (string); - free (string); + xfree (string); return 0; } @@ -779,7 +798,7 @@ _rl_insert_char (count, c) count -= decreaser; } - free (string); + xfree (string); incoming_length = 0; stored_count = 0; #else /* !HANDLE_MULTIBYTE */ @@ -1407,8 +1426,8 @@ rl_transpose_words (count, key) /* I think that does it. */ rl_end_undo_group (); - free (word1); - free (word2); + xfree (word1); + xfree (word2); return 0; } @@ -1467,7 +1486,7 @@ rl_transpose_chars (count, key) rl_end_undo_group (); #if defined (HANDLE_MULTIBYTE) - free (dummy); + xfree (dummy); #endif return 0; diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c index d6c2ea8f..23462169 100644 --- a/lib/readline/vi_mode.c +++ b/lib/readline/vi_mode.c @@ -630,12 +630,16 @@ _rl_vi_append_forward (key) if (MB_CUR_MAX == 1 || rl_byte_oriented) rl_point++; else - { - point = rl_point; - rl_forward_char (1, key); - if (point == rl_point) - rl_point = rl_end; - } + { + point = rl_point; +#if 0 + rl_forward_char (1, key); +#else + rl_point = _rl_forward_char_internal (1); +#endif + if (point == rl_point) + rl_point = rl_end; + } } } @@ -733,7 +737,7 @@ _rl_vi_done_inserting () _rl_vi_last_key_before_insert == 'a' || _rl_vi_last_key_before_insert == 'I' || _rl_vi_last_key_before_insert == 'A')) - _rl_vi_save_insert (rl_undo_list); + _rl_vi_save_insert (rl_undo_list); /* XXX - Other keys probably need to be checked. */ else if (_rl_vi_last_key_before_insert == 'C') rl_end_undo_group (); @@ -793,7 +797,7 @@ _rl_vi_change_mbchar_case (count) if (MB_INVALIDCH (m)) wc = (wchar_t)rl_line_buffer[rl_point]; else if (MB_NULLWCH (m)) - wc = L'\0'; + wc = L'\0'; if (iswupper (wc)) wc = towlower (wc); else if (iswlower (wc)) @@ -821,7 +825,7 @@ _rl_vi_change_mbchar_case (count) rl_vi_check (); } else - rl_forward_char (1, 0); + rl_forward_char (1, 0); } return 0; @@ -868,7 +872,7 @@ rl_vi_change_case (count, ignore) _rl_insert_char (1, c); rl_end_undo_group (); rl_vi_check (); - } + } else rl_forward_char (1, c); } @@ -906,7 +910,7 @@ rl_vi_check () if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); else - rl_point--; + rl_point--; } return (0); } @@ -1059,7 +1063,7 @@ rl_domove_motion_callback (m) /* Posix.2 says that if cw or cW moves the cursor towards the end of the line, the character under the cursor should be deleted. */ if (rl_point == rl_mark) - rl_point++; + rl_point++; else { /* Move past the end of the word so that the kill doesn't @@ -1099,7 +1103,7 @@ rl_domove_read_callback (m) /* If we just read a vi-mode motion command numeric argument, turn off the `reading numeric arg' state */ if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_VIMOVENUMARG()) - RL_UNSETSTATE (RL_STATE_NUMERICARG); + RL_UNSETSTATE (RL_STATE_NUMERICARG); #endif /* Should do everything, including turning off RL_STATE_VIMOTION */ return (rl_domove_motion_callback (m)); @@ -1137,10 +1141,10 @@ rl_domove_read_callback (m) rl_numeric_arg *= save; c = rl_vi_domove_getchar (m); if (c < 0) - { - m->motion = 0; - return -1; - } + { + m->motion = 0; + return -1; + } m->motion = c; return (rl_domove_motion_callback (m)); } @@ -1288,7 +1292,7 @@ vi_change_dispatch (m) rl_kill_text (rl_point, rl_mark); /* `C' does not save the text inserted for undoing or redoing. */ if (_rl_uppercase_p (m->key) == 0) - _rl_vi_doing_insert = 1; + _rl_vi_doing_insert = 1; /* XXX -- TODO -- use m->numericarg? */ rl_vi_start_inserting (m->key, rl_numeric_arg, rl_arg_sign); } @@ -1562,23 +1566,23 @@ rl_vi_char_search (count, key) else { switch (key) - { - case 't': - _rl_cs_orig_dir = _rl_cs_dir = FTO; - break; + { + case 't': + _rl_cs_orig_dir = _rl_cs_dir = FTO; + break; - case 'T': - _rl_cs_orig_dir = _rl_cs_dir = BTO; - break; + case 'T': + _rl_cs_orig_dir = _rl_cs_dir = BTO; + break; - case 'f': - _rl_cs_orig_dir = _rl_cs_dir = FFIND; - break; + case 'f': + _rl_cs_orig_dir = _rl_cs_dir = FFIND; + break; - case 'F': - _rl_cs_orig_dir = _rl_cs_dir = BFIND; - break; - } + case 'F': + _rl_cs_orig_dir = _rl_cs_dir = BFIND; + break; + } if (vi_redoing) { @@ -1586,12 +1590,12 @@ rl_vi_char_search (count, key) } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = _rl_callback_data_alloc (count); - _rl_callback_data->i1 = _rl_cs_dir; - _rl_callback_func = _rl_vi_callback_char_search; - return (0); - } + { + _rl_callback_data = _rl_callback_data_alloc (count); + _rl_callback_data->i1 = _rl_cs_dir; + _rl_callback_func = _rl_vi_callback_char_search; + return (0); + } #endif else { @@ -1642,7 +1646,7 @@ rl_vi_match (ignore, key) pre = rl_point; rl_forward_char (1, key); if (pre == rl_point) - break; + break; } } else @@ -1671,7 +1675,7 @@ rl_vi_match (ignore, key) { pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY); if (tmp == pos) - pos--; + pos--; } if (pos >= 0) { @@ -1919,8 +1923,8 @@ rl_vi_replace (count, key) vi_replace_map[NEWLINE].function = rl_newline; /* If the normal vi insertion keymap has ^H bound to erase, do the - same here. Probably should remove the assignment to RUBOUT up - there, but I don't think it will make a difference in real life. */ + same here. Probably should remove the assignment to RUBOUT up + there, but I don't think it will make a difference in real life. */ if (vi_insertion_keymap[CTRL ('H')].type == ISFUNC && vi_insertion_keymap[CTRL ('H')].function == rl_rubout) vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete; diff --git a/lib/readline/vi_mode.c~ b/lib/readline/vi_mode.c~ index a02a0d8a..02a4f24a 100644 --- a/lib/readline/vi_mode.c~ +++ b/lib/readline/vi_mode.c~ @@ -630,12 +630,16 @@ _rl_vi_append_forward (key) if (MB_CUR_MAX == 1 || rl_byte_oriented) rl_point++; else - { - point = rl_point; - rl_forward_char (1, key); - if (point == rl_point) - rl_point = rl_end; - } + { + point = rl_point; +#if 0 + rl_forward_char (1, key); +#else + _rl_forward_char_internal (1); +#endif + if (point == rl_point) + rl_point = rl_end; + } } } @@ -733,7 +737,7 @@ _rl_vi_done_inserting () _rl_vi_last_key_before_insert == 'a' || _rl_vi_last_key_before_insert == 'I' || _rl_vi_last_key_before_insert == 'A')) - _rl_vi_save_insert (rl_undo_list); + _rl_vi_save_insert (rl_undo_list); /* XXX - Other keys probably need to be checked. */ else if (_rl_vi_last_key_before_insert == 'C') rl_end_undo_group (); @@ -793,7 +797,7 @@ _rl_vi_change_mbchar_case (count) if (MB_INVALIDCH (m)) wc = (wchar_t)rl_line_buffer[rl_point]; else if (MB_NULLWCH (m)) - wc = L'\0'; + wc = L'\0'; if (iswupper (wc)) wc = towlower (wc); else if (iswlower (wc)) @@ -821,7 +825,7 @@ _rl_vi_change_mbchar_case (count) rl_vi_check (); } else - rl_forward_char (1, 0); + rl_forward_char (1, 0); } return 0; @@ -868,7 +872,7 @@ rl_vi_change_case (count, ignore) _rl_insert_char (1, c); rl_end_undo_group (); rl_vi_check (); - } + } else rl_forward_char (1, c); } @@ -906,7 +910,7 @@ rl_vi_check () if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); else - rl_point--; + rl_point--; } return (0); } @@ -1011,7 +1015,7 @@ static void _rl_mvcxt_dispose (m) _rl_vimotion_cxt *m; { - free (m); + xfree (m); } static int @@ -1059,7 +1063,7 @@ rl_domove_motion_callback (m) /* Posix.2 says that if cw or cW moves the cursor towards the end of the line, the character under the cursor should be deleted. */ if (rl_point == rl_mark) - rl_point++; + rl_point++; else { /* Move past the end of the word so that the kill doesn't @@ -1099,7 +1103,7 @@ rl_domove_read_callback (m) /* If we just read a vi-mode motion command numeric argument, turn off the `reading numeric arg' state */ if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_VIMOVENUMARG()) - RL_UNSETSTATE (RL_STATE_NUMERICARG); + RL_UNSETSTATE (RL_STATE_NUMERICARG); #endif /* Should do everything, including turning off RL_STATE_VIMOTION */ return (rl_domove_motion_callback (m)); @@ -1137,10 +1141,10 @@ rl_domove_read_callback (m) rl_numeric_arg *= save; c = rl_vi_domove_getchar (m); if (c < 0) - { - m->motion = 0; - return -1; - } + { + m->motion = 0; + return -1; + } m->motion = c; return (rl_domove_motion_callback (m)); } @@ -1288,7 +1292,7 @@ vi_change_dispatch (m) rl_kill_text (rl_point, rl_mark); /* `C' does not save the text inserted for undoing or redoing. */ if (_rl_uppercase_p (m->key) == 0) - _rl_vi_doing_insert = 1; + _rl_vi_doing_insert = 1; /* XXX -- TODO -- use m->numericarg? */ rl_vi_start_inserting (m->key, rl_numeric_arg, rl_arg_sign); } @@ -1562,23 +1566,23 @@ rl_vi_char_search (count, key) else { switch (key) - { - case 't': - _rl_cs_orig_dir = _rl_cs_dir = FTO; - break; + { + case 't': + _rl_cs_orig_dir = _rl_cs_dir = FTO; + break; - case 'T': - _rl_cs_orig_dir = _rl_cs_dir = BTO; - break; + case 'T': + _rl_cs_orig_dir = _rl_cs_dir = BTO; + break; - case 'f': - _rl_cs_orig_dir = _rl_cs_dir = FFIND; - break; + case 'f': + _rl_cs_orig_dir = _rl_cs_dir = FFIND; + break; - case 'F': - _rl_cs_orig_dir = _rl_cs_dir = BFIND; - break; - } + case 'F': + _rl_cs_orig_dir = _rl_cs_dir = BFIND; + break; + } if (vi_redoing) { @@ -1586,12 +1590,12 @@ rl_vi_char_search (count, key) } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = _rl_callback_data_alloc (count); - _rl_callback_data->i1 = _rl_cs_dir; - _rl_callback_func = _rl_vi_callback_char_search; - return (0); - } + { + _rl_callback_data = _rl_callback_data_alloc (count); + _rl_callback_data->i1 = _rl_cs_dir; + _rl_callback_func = _rl_vi_callback_char_search; + return (0); + } #endif else { @@ -1642,7 +1646,7 @@ rl_vi_match (ignore, key) pre = rl_point; rl_forward_char (1, key); if (pre == rl_point) - break; + break; } } else @@ -1671,7 +1675,7 @@ rl_vi_match (ignore, key) { pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY); if (tmp == pos) - pos--; + pos--; } if (pos >= 0) { @@ -1919,8 +1923,8 @@ rl_vi_replace (count, key) vi_replace_map[NEWLINE].function = rl_newline; /* If the normal vi insertion keymap has ^H bound to erase, do the - same here. Probably should remove the assignment to RUBOUT up - there, but I don't think it will make a difference in real life. */ + same here. Probably should remove the assignment to RUBOUT up + there, but I don't think it will make a difference in real life. */ if (vi_insertion_keymap[CTRL ('H')].type == ISFUNC && vi_insertion_keymap[CTRL ('H')].function == rl_rubout) vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete; diff --git a/lib/sh/strtrans.c b/lib/sh/strtrans.c index 13d928d4..2265782f 100644 --- a/lib/sh/strtrans.c +++ b/lib/sh/strtrans.c @@ -176,6 +176,8 @@ ansicstr (string, len, flags, sawc, rlen) else if ((flags & 1) == 0 && (c = *s)) { s++; + if ((flags & 2) && c == '\\' && c == *s) + s++; /* Posix requires $'\c\\' do backslash escaping */ c = TOCTRL(c); break; } diff --git a/lib/sh/strtrans.c~ b/lib/sh/strtrans.c~ index 3400eb8f..901e7195 100644 --- a/lib/sh/strtrans.c~ +++ b/lib/sh/strtrans.c~ @@ -49,11 +49,9 @@ ansicstr (string, len, flags, sawc, rlen) char *string; int len, flags, *sawc, *rlen; { - int c, temp, v; + int c, temp; char *ret, *r, *s; -#if defined (HANDLE_MULTIBYTE) - char mbch[25]; /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/ -#endif + unsigned long v; if (string == 0 || *string == '\0') return ((char *)NULL); @@ -153,7 +151,6 @@ ansicstr (string, len, flags, sawc, rlen) } else { - memset (mbch, '\0', sizeof (mbch)); temp = u32cconv (v, r); r += temp; continue; @@ -174,9 +171,13 @@ ansicstr (string, len, flags, sawc, rlen) *rlen = r - ret; return ret; } + else if ((flags & 1) == 0 && *s == 0) + ; /* pass \c through */ else if ((flags & 1) == 0 && (c = *s)) { s++; + if ((flags & 2) && c == '\\' && c == *s) + s++; /* c = TOCTRL(c); break; } @@ -3165,7 +3165,7 @@ parse_matched_pair (qc, open, close, lenp, flags) start_lineno = line_number; while (count) { - ch = shell_getc (qc != '\'' && (tflags & LEX_PASSNEXT) == 0); + ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 0); if (ch == EOF) { @@ -3434,7 +3434,7 @@ parse_comsub (qc, open, close, lenp, flags) while (count) { comsub_readchar: - ch = shell_getc (qc != '\'' && (tflags & LEX_PASSNEXT) == 0); + ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0); if (ch == EOF) { @@ -3,13 +3,13 @@ # This file is distributed under the same license as the bash package. # Göran Uddeborg <goeran@uddeborg.se>, 2008, 2009, 2010. # -# $Revision: 1.8 $ +# $Revision: 1.9 $ msgid "" msgstr "" "Project-Id-Version: bash 4.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-12-30 08:25-0500\n" -"PO-Revision-Date: 2010-01-05 19:12+0100\n" +"PO-Revision-Date: 2010-10-24 22:35+0200\n" "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "MIME-Version: 1.0\n" @@ -1387,7 +1387,7 @@ msgstr "oväntad symbol %d i villkorligt kommando" #: parse.y:5459 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "syntaxfel när den oväntade symbolen \"%s\"" +msgstr "syntaxfel nära den oväntade symbolen \"%s\"" #: parse.y:5477 #, c-format @@ -62,13 +62,14 @@ extern int errno; int expanding_redir; extern int posixly_correct; +extern int last_command_exit_value; extern REDIRECT *redirection_undo_list; extern REDIRECT *exec_redirection_undo_list; /* Static functions defined and used in this file. */ -static void add_undo_close_redirect __P((int)); static void add_exec_redirect __P((REDIRECT *)); static int add_undo_redirect __P((int, enum r_instruction, int)); +static int add_undo_close_redirect __P((int)); static int expandable_redirection_filename __P((REDIRECT *)); static int stdin_redirection __P((enum r_instruction, int)); static int undoablefd __P((int)); @@ -93,6 +94,13 @@ static REDIRECTEE rd; Used to print a reasonable error message. */ static int heredoc_errno; +#define REDIRECTION_ERROR(r, e) \ + if ((r) != 0) \ + { \ + last_command_exit_value = EXECUTION_FAILURE;\ + return ((e) == 0 ? EINVAL : (e));\ + } + void redirection_error (temp, error) REDIRECT *temp; @@ -813,9 +821,10 @@ do_redirection_internal (redirect, flags) { /* Only setup to undo it if the thing to undo is active. */ if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector, ri, -1); + r = add_undo_redirect (redirector, ri, -1); else - add_undo_close_redirect (redirector); + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR (r, errno); } #if defined (BUFFERED_INPUT) @@ -918,9 +927,10 @@ do_redirection_internal (redirect, flags) { /* Only setup to undo it if the thing to undo is active. */ if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector, ri, -1); + r = add_undo_redirect (redirector, ri, -1); else - add_undo_close_redirect (redirector); + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR(r, errno); } #if defined (BUFFERED_INPUT) @@ -972,9 +982,10 @@ do_redirection_internal (redirect, flags) { /* Only setup to undo it if the thing to undo is active. */ if (fcntl (redirector, F_GETFD, 0) != -1) - add_undo_redirect (redirector, ri, redir_fd); + r = add_undo_redirect (redirector, ri, redir_fd); else - add_undo_close_redirect (redirector); + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR(r, errno); } #if defined (BUFFERED_INPUT) check_bash_input (redirector); @@ -1046,8 +1057,10 @@ do_redirection_internal (redirect, flags) return AMBIGUOUS_REDIRECT; } + r = 0; if ((flags & RX_UNDOABLE) && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector, ri, -1); + r = add_undo_redirect (redirector, ri, -1); + REDIRECTION_ERROR (r, errno); #if defined (COPROCESS_SUPPORT) coproc_fdchk (redirector); @@ -1164,7 +1177,7 @@ add_undo_redirect (fd, ri, fdbase) /* Set up to close FD when we are finished with the current command and its redirections. */ -static void +static int add_undo_close_redirect (fd) int fd; { @@ -1177,6 +1190,8 @@ add_undo_close_redirect (fd) closer->flags |= RX_INTERNAL; closer->next = redirection_undo_list; redirection_undo_list = closer; + + return 0; } static void @@ -62,13 +62,14 @@ extern int errno; int expanding_redir; extern int posixly_correct; +extern int last_command_exit_value; extern REDIRECT *redirection_undo_list; extern REDIRECT *exec_redirection_undo_list; /* Static functions defined and used in this file. */ -static void add_undo_close_redirect __P((int)); static void add_exec_redirect __P((REDIRECT *)); static int add_undo_redirect __P((int, enum r_instruction, int)); +static int add_undo_close_redirect __P((int)); static int expandable_redirection_filename __P((REDIRECT *)); static int stdin_redirection __P((enum r_instruction, int)); static int undoablefd __P((int)); @@ -93,6 +94,13 @@ static REDIRECTEE rd; Used to print a reasonable error message. */ static int heredoc_errno; +#define REDIRECTION_ERROR(r, e) \ + if (r != 0) \ + { \ + last_command_exit_value = EXECUTION_FAILURE;\ + return (e == 0 ? EINVAL : e);\ + } + void redirection_error (temp, error) REDIRECT *temp; @@ -638,8 +646,6 @@ redir_open (filename, flags, mode, ri) #endif /* AFS */ } -itrace("redir_open: %s -> %d", filename, fd); - return fd; } @@ -815,9 +821,10 @@ do_redirection_internal (redirect, flags) { /* Only setup to undo it if the thing to undo is active. */ if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector, ri, -1); + r = add_undo_redirect (redirector, ri, -1); else - add_undo_close_redirect (redirector); + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR (r, errno); } #if defined (BUFFERED_INPUT) @@ -920,9 +927,10 @@ do_redirection_internal (redirect, flags) { /* Only setup to undo it if the thing to undo is active. */ if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector, ri, -1); + r = add_undo_redirect (redirector, ri, -1); else - add_undo_close_redirect (redirector); + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR(r, errno); } #if defined (BUFFERED_INPUT) @@ -974,9 +982,10 @@ do_redirection_internal (redirect, flags) { /* Only setup to undo it if the thing to undo is active. */ if (fcntl (redirector, F_GETFD, 0) != -1) - add_undo_redirect (redirector, ri, redir_fd); + r = add_undo_redirect (redirector, ri, redir_fd); else - add_undo_close_redirect (redirector); + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR(r, errno); } #if defined (BUFFERED_INPUT) check_bash_input (redirector); @@ -1048,8 +1057,10 @@ do_redirection_internal (redirect, flags) return AMBIGUOUS_REDIRECT; } + r = 0; if ((flags & RX_UNDOABLE) && (fcntl (redirector, F_GETFD, 0) != -1)) - add_undo_redirect (redirector, ri, -1); + r = add_undo_redirect (redirector, ri, -1); + REDIRECTION_ERROR (r, errno); #if defined (COPROCESS_SUPPORT) coproc_fdchk (redirector); @@ -1166,7 +1177,7 @@ add_undo_redirect (fd, ri, fdbase) /* Set up to close FD when we are finished with the current command and its redirections. */ -static void +static int add_undo_close_redirect (fd) int fd; { @@ -1179,6 +1190,8 @@ add_undo_close_redirect (fd) closer->flags |= RX_INTERNAL; closer->next = redirection_undo_list; redirection_undo_list = closer; + + return 0; } static void @@ -59,6 +59,9 @@ extern int loop_level, continuing, breaking, funcnest; extern int executing_list; extern int comsub_ignore_return; extern int parse_and_execute_level, shell_initialized; +#if defined (HISTORY) +extern int history_lines_this_session; +#endif extern void intialize_siglist (); @@ -500,6 +503,10 @@ termsig_sighandler (sig) /* XXX - should this also trigger when interrupt_immediately is set? */ if (terminate_immediately) { +#if defined (HISTORY) + /* XXX - will inhibit history file being written */ + history_lines_this_session = 0; +#endif terminate_immediately = 0; termsig_handler (sig); } @@ -1,6 +1,6 @@ /* sig.c - interface for shell signal handlers and signal initialization. */ -/* Copyright (C) 1994-2009 Free Software Foundation, Inc. +/* Copyright (C) 1994-2010 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -500,6 +500,9 @@ termsig_sighandler (sig) /* XXX - should this also trigger when interrupt_immediately is set? */ if (terminate_immediately) { +#if defined (HISTORY) + /* XXX - history_lines_this_session = 0 will inhibit history file being written */ +#endif terminate_immediately = 0; termsig_handler (sig); } @@ -108,7 +108,7 @@ extern int errno; /* Evaluates to 1 if C is one of the shell's special parameters for which an indirect variable reference may be made. */ #define VALID_INDIR_PARAM(c) \ - ((c) == '#' || (c) == '?' || (c) == '@' || (c) == '*') + ((posixly_correct == 0 && (c) == '#') || (posixly_correct == 0 && (c) == '?') || (c) == '@' || (c) == '*') /* Evaluates to 1 if C is one of the OP characters that follows the parameter in ${parameter[:]OPword}. */ @@ -5907,7 +5907,7 @@ parameter_brace_expand_length (name) break; case '!': if (last_asynchronous_pid == NO_PID) - t = (char *)NULL; + t = (char *)NULL; /* XXX - error if set -u set? */ else t = itos (last_asynchronous_pid); break; @@ -5929,6 +5929,8 @@ parameter_brace_expand_length (name) if (legal_number (name + 1, &arg_index)) /* ${#1} */ { t = get_dollar_var_value (arg_index); + if (t == 0 && unbound_vars_is_error) + return INTMAX_MIN; number = MB_STRLEN (t); FREE (t); } @@ -5939,6 +5941,8 @@ parameter_brace_expand_length (name) t = assoc_reference (assoc_cell (var), "0"); else t = array_reference (array_cell (var), 0); + if (t == 0 && unbound_vars_is_error) + return INTMAX_MIN; number = MB_STRLEN (t); } #endif @@ -6940,15 +6944,8 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta /* If the name really consists of a special variable, then make sure that we have the entire name. We don't allow indirect references to special variables except `#', `?', `@' and `*'. */ - if ((sindex == t_index && - (string[t_index] == '-' || - string[t_index] == '?' || - string[t_index] == '#')) || - (sindex == t_index - 1 && string[sindex] == '!' && - (string[t_index] == '#' || - string[t_index] == '?' || - string[t_index] == '@' || - string[t_index] == '*'))) + if ((sindex == t_index && VALID_SPECIAL_LENGTH_PARAM (string[t_index])) || + (sindex == t_index - 1 && string[sindex] == '!' && VALID_INDIR_PARAM (string[t_index]))) { t_index++; free (name); @@ -7043,6 +7040,13 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta } number = parameter_brace_expand_length (name); + if (number == INTMAX_MIN && unbound_vars_is_error) + { + last_command_exit_value = EXECUTION_FAILURE; + err_unboundvar (name+1); + free (name); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } free (name); *indexp = sindex; @@ -7178,6 +7182,21 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta *indexp = sindex; + /* All the cases where an expansion can possibly generate an unbound + variable error. */ + if (want_substring || want_patsub || want_casemod || c == '#' || c == '%' || c == RBRACE) + { + if (var_is_set == 0 && unbound_vars_is_error && ((name[0] != '@' && name[0] != '*') || name[1])) + { + last_command_exit_value = EXECUTION_FAILURE; + err_unboundvar (name); + FREE (value); + FREE (temp); + free (name); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } + } + /* If this is a substring spec, process it and add the result. */ if (want_substring) { @@ -7251,15 +7270,6 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta return &expand_wdesc_error; case RBRACE: - if (var_is_set == 0 && unbound_vars_is_error && ((name[0] != '@' && name[0] != '*') || name[1])) - { - last_command_exit_value = EXECUTION_FAILURE; - err_unboundvar (name); - FREE (value); - FREE (temp); - free (name); - return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); - } break; case '#': /* ${param#[#]pattern} */ @@ -9324,6 +9334,7 @@ expand_word_list_internal (list, eflags) if ((eflags & WEXP_VARASSIGN) && subst_assign_varlist) { sh_wassign_func_t *assign_func; + int is_special_builtin; /* If the remainder of the words expand to nothing, Posix.2 requires that the variable and environment assignments affect the shell's @@ -9331,6 +9342,10 @@ expand_word_list_internal (list, eflags) assign_func = new_list ? assign_in_env : do_word_assignment; tempenv_assign_error = 0; + /* Posix says that special builtins exit if a variable assignment error + occurs in an assignment preceding it. */ + is_special_builtin = (posixly_correct && new_list && find_special_builtin (new_list->word->word)); + for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) { this_command_name = (char *)NULL; @@ -9344,7 +9359,7 @@ expand_word_list_internal (list, eflags) if (assign_func == do_word_assignment) { last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct) + if (interactive_shell == 0 && posixly_correct && is_special_builtin) exp_jump_to_top_level (FORCE_EOF); else exp_jump_to_top_level (DISCARD); diff --git a/tests/RUN-ONE-TEST b/tests/RUN-ONE-TEST index 3efcf32d..72ec06a2 100755 --- a/tests/RUN-ONE-TEST +++ b/tests/RUN-ONE-TEST @@ -1,4 +1,4 @@ -BUILD_DIR=/usr/local/build/chet/bash/bash-current +BUILD_DIR=/usr/local/build/bash/bash-current THIS_SH=$BUILD_DIR/bash PATH=$PATH:$BUILD_DIR diff --git a/tests/arith.right b/tests/arith.right index 41e2654b..8f5d2ab3 100644 --- a/tests/arith.right +++ b/tests/arith.right @@ -200,14 +200,15 @@ ok 4 10000 10000 +2147483649 8 12 -./arith.tests: line 275: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") -./arith.tests: line 279: a b: syntax error in expression (error token is "b") -./arith.tests: line 280: ((: a b: syntax error in expression (error token is "b") +./arith.tests: line 278: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") +./arith.tests: line 282: a b: syntax error in expression (error token is "b") +./arith.tests: line 283: ((: a b: syntax error in expression (error token is "b") 42 42 42 42 42 42 -./arith.tests: line 291: b[c]d: syntax error in expression (error token is "d") +./arith.tests: line 294: b[c]d: syntax error in expression (error token is "d") diff --git a/tests/arith.tests b/tests/arith.tests index 21bfdca4..134e3979 100644 --- a/tests/arith.tests +++ b/tests/arith.tests @@ -264,6 +264,9 @@ ${THIS_SH} ./arith1.sub ${THIS_SH} ./arith2.sub ${THIS_SH} ./arith3.sub +# make sure arithmetic expansion handles ints > 2**31 - 1 using intmax_t +echo $(( 2147483645 + 4 )) + x=4 y=7 diff --git a/tests/arith.tests~ b/tests/arith.tests~ new file mode 100644 index 00000000..21bfdca4 --- /dev/null +++ b/tests/arith.tests~ @@ -0,0 +1,291 @@ +set +o posix +declare -i iv jv + +iv=$(( 3 + 5 * 32 )) +echo $iv +iv=iv+3 +echo $iv +iv=2 +jv=iv + +let "jv *= 2" +echo $jv +jv=$(( $jv << 2 )) +echo $jv + +let jv="$jv / 2" +echo $jv +jv="jv >> 2" +echo $jv + +iv=$((iv+ $jv)) +echo $iv +echo $((iv -= jv)) +echo $iv +echo $(( iv == jv )) +echo $(( iv != $jv )) +echo $(( iv < jv )) +echo $(( $iv > $jv )) +echo $(( iv <= $jv )) +echo $(( $iv >= jv )) + +echo $jv +echo $(( ~$jv )) +echo $(( ~1 )) +echo $(( ! 0 )) + +echo $(( jv % 2 )) +echo $(( $iv % 4 )) + +echo $(( iv <<= 16 )) +echo $(( iv %= 33 )) + +echo $(( 33 & 55 )) +echo $(( 33 | 17 )) + +echo $(( iv && $jv )) +echo $(( $iv || jv )) + +echo $(( iv && 0 )) +echo $(( iv & 0 )) +echo $(( iv && 1 )) +echo $(( iv & 1 )) + +echo $(( $jv || 0 )) +echo $(( jv | 0 )) +echo $(( jv | 1 )) +echo $(( $jv || 1 )) + +let 'iv *= jv' +echo $iv +echo $jv +let "jv += $iv" +echo $jv + +echo $(( jv /= iv )) +echo $(( jv <<= 8 )) +echo $(( jv >>= 4 )) + +echo $(( iv |= 4 )) +echo $(( iv &= 4 )) + +echo $(( iv += (jv + 9))) +echo $(( (iv + 4) % 7 )) + +# unary plus, minus +echo $(( +4 - 8 )) +echo $(( -4 + 8 )) + +# conditional expressions +echo $(( 4<5 ? 1 : 32)) +echo $(( 4>5 ? 1 : 32)) +echo $(( 4>(2+3) ? 1 : 32)) +echo $(( 4<(2+3) ? 1 : 32)) +echo $(( (2+2)<(2+3) ? 1 : 32)) +echo $(( (2+2)>(2+3) ? 1 : 32)) + +# bug in bash versions through bash-3.2 +S=105 +W=$((S>99?4:S>9?3:S>0?2:0)) +echo $W +unset W S + +# check that the unevaluated part of the ternary operator does not do +# evaluation or assignment +x=i+=2 +y=j+=2 +declare -i i=1 j=1 +echo $((1 ? 20 : (x+=2))) +echo $i,$x +echo $((0 ? (y+=2) : 30)) +echo $j,$y + +x=i+=2 +y=j+=2 +declare -i i=1 j=1 +echo $((1 ? 20 : (x+=2))) +echo $i,$x +echo $((0 ? (y+=2) : 30)) +echo $i,$y + +# check precedence of assignment vs. conditional operator +# should be an error +declare -i x=2 +y=$((1 ? 20 : x+=2)) + +# check precedence of assignment vs. conditional operator +declare -i x=2 +echo $((0 ? x+=2 : 20)) + +# associativity of assignment-operator operator +declare -i i=1 j=2 k=3 +echo $((i += j += k)) +echo $i,$j,$k + +# octal, hex +echo $(( 0x100 | 007 )) +echo $(( 0xff )) +echo $(( 16#ff )) +echo $(( 16#FF/2 )) +echo $(( 8#44 )) + +echo $(( 8 ^ 32 )) + +# other bases +echo $(( 16#a )) +echo $(( 32#a )) +echo $(( 56#a )) +echo $(( 64#a )) + +echo $(( 16#A )) +echo $(( 32#A )) +echo $(( 56#A )) +echo $(( 64#A )) + +echo $(( 64#@ )) +echo $(( 64#_ )) + +# weird bases +echo $(( 3425#56 )) + +# missing number after base +echo $(( 2# )) + +# these should generate errors +echo $(( 7 = 43 )) +echo $(( 2#44 )) +echo $(( 44 / 0 )) +let 'jv += $iv' +echo $(( jv += \$iv )) +let 'rv = 7 + (43 * 6' + +# more errors +declare -i i +i=0#4 +i=2#110#11 + +((echo abc; echo def;); echo ghi) + +if (((4+4) + (4 + 7))); then + echo ok +fi + +(()) # make sure the null expression works OK + +a=(0 2 4 6) +echo $(( a[1] + a[2] )) +echo $(( (a[1] + a[2]) == a[3] )) +(( (a[1] + a[2]) == a[3] )) ; echo $? + +# test pushing and popping the expression stack +unset A +A="4 + " +echo $(( ( 4 + A ) + 4 )) +A="3 + 5" +echo $(( ( 4 + A ) + 4 )) + +# badly-formed conditional expressions +echo $(( 4 ? : $A )) +echo $(( 1 ? 20 )) +echo $(( 4 ? 20 : )) + +# precedence and short-circuit evaluation +B=9 +echo $B + +echo $(( 0 && B=42 )) +echo $B + +echo $(( 1 || B=88 )) +echo $B + +echo $(( 0 && (B=42) )) +echo $B + +echo $(( (${$} - $$) && (B=42) )) +echo $B + +echo $(( 1 || (B=88) )) +echo $B + +# until command with (( )) command +x=7 + +echo $x +until (( x == 4 )) +do + echo $x + x=4 +done + +echo $x + +# exponentiation +echo $(( 2**15 - 1)) +echo $(( 2**(16-1))) +echo $(( 2**16*2 )) +echo $(( 2**31-1)) +echo $(( 2**0 )) + +# {pre,post}-{inc,dec}rement and associated errors + +x=4 + +echo $x +echo $(( x++ )) +echo $x +echo $(( x-- )) +echo $x + +echo $(( --x )) +echo $x + +echo $(( ++x )) +echo $x + +echo $(( ++7 )) +echo $(( 7-- )) + +echo $(( --x=7 )) +echo $(( ++x=7 )) + +echo $(( x++=7 )) +echo $(( x--=7 )) + +echo $x + +echo $(( +7 )) +echo $(( -7 )) + +echo $(( ++7 )) +echo $(( --7 )) + +${THIS_SH} ./arith1.sub +${THIS_SH} ./arith2.sub +${THIS_SH} ./arith3.sub + +x=4 +y=7 + +(( x=8 , y=12 )) + +echo $x $y + +# should be an error +(( x=9 y=41 )) + +# These are errors +unset b +echo $((a b)) +((a b)) + +n=42 +printf "%d\n" $n +printf "%i\n" $n +echo $(( 8#$(printf "%o\n" $n) )) +printf "%u\n" $n +echo $(( 16#$(printf "%x\n" $n) )) +echo $(( 16#$(printf "%X\n" $n) )) + +# causes longjmp botches through bash-2.05b +a[b[c]d]=e diff --git a/tests/braces.right b/tests/braces.right index a02bfc61..40175464 100644 --- a/tests/braces.right +++ b/tests/braces.right @@ -57,6 +57,7 @@ a-{bdef-g-c a-{bdef-i-c a b c d e f g h i j k l m n o p q r s t u v w x y z a c e g i k m o q s u w y z x v t r p n l j h f d b +2147483645 2147483646 2147483647 2147483648 2147483649 10 8 6 4 2 0 10 8 6 4 2 0 -50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0 diff --git a/tests/braces.tests b/tests/braces.tests index c2b153ec..a80cf450 100644 --- a/tests/braces.tests +++ b/tests/braces.tests @@ -94,6 +94,9 @@ echo {a..z} echo {a..z..2} echo {z..a..-2} +# make sure brace expansion handles ints > 2**31 - 1 using intmax_t +echo {2147483645..2147483649} + # unwanted zero-padding -- fixed post-bash-4.0 echo {10..0..2} echo {10..0..-2} diff --git a/tests/braces.tests~ b/tests/braces.tests~ new file mode 100644 index 00000000..a80cf450 --- /dev/null +++ b/tests/braces.tests~ @@ -0,0 +1,119 @@ +echo ff{c,b,a} +echo f{d,e,f}g +echo {l,n,m}xyz +echo {abc\,def} +echo {abc} + +echo \{a,b,c,d,e} +echo {x,y,\{a,b,c}} +echo {x\,y,\{abc\},trie} + +echo /usr/{ucb/{ex,edit},lib/{ex,how_ex}} + +echo XXXX\{`echo a b c | tr ' ' ','`\} +eval echo XXXX\{`echo a b c | tr ' ' ','`\} + +echo {} +echo { } +echo } +echo { +echo abcd{efgh + +echo foo {1,2} bar +echo `zecho foo {1,2} bar` +echo $(zecho foo {1,2} bar) + +var=baz +varx=vx +vary=vy + +echo foo{bar,${var}.} +echo foo{bar,${var}} + +echo "${var}"{x,y} +echo $var{x,y} +echo ${var}{x,y} + +unset var varx vary + +# new sequence brace operators +echo {1..10} + +# this doesn't work yet +echo {0..10,braces} +# but this does +echo {{0..10},braces} +echo x{{0..10},braces}y + +echo {3..3} +echo x{3..3}y +echo {10..1} +echo {10..1}y +echo x{10..1}y + +echo {a..f} +echo {f..a} + +echo {a..A} +echo {A..a} + +echo {f..f} + +# mixes are incorrectly-formed brace expansions +echo {1..f} +echo {f..1} + +echo 0{1..9} {10..20} + +# do negative numbers work? +echo {-1..-10} +echo {-20..0} + +# weirdly-formed brace expansions -- fixed in post-bash-3.1 +echo a-{b{d,e}}-c + +echo a-{bdef-{g,i}-c + +echo {"klklkl"}{1,2,3} +echo {"x,x"} + +echo {1..10..2} +echo {-1..-10..2} +echo {-1..-10..-2} + +echo {10..1..-2} +echo {10..1..2} + +echo {1..20..2} +echo {1..20..20} + +echo {100..0..5} +echo {100..0..-5} + +echo {a..z} +echo {a..z..2} +echo {z..a..-2} + +# make sure brace expansion handles ints > 2**31 - 1 using intmax_t +echo {2147483645..2147483649} + +# unwanted zero-padding -- fixed post-bash-4.0 +echo {10..0..2} +echo {10..0..-2} +echo {-50..-0..5} + +# bad +echo {1..10.f} +echo {1..ff} +echo {1..10..ff} +echo {1.20..2} +echo {1..20..f2} +echo {1..20..2f} +echo {1..2f..2} +echo {1..ff..2} +echo {1..ff} +echo {1..f} +echo {1..0f} +echo {1..10f} +echo {1..10.f} +echo {1..10.f} diff --git a/tests/comsub-posix.right b/tests/comsub-posix.right index 34b57d94..ab04c52a 100644 --- a/tests/comsub-posix.right +++ b/tests/comsub-posix.right @@ -70,3 +70,4 @@ swap32_posix () )); done } +yes diff --git a/tests/comsub-posix.tests b/tests/comsub-posix.tests index 3f04e6a5..bcfeede0 100644 --- a/tests/comsub-posix.tests +++ b/tests/comsub-posix.tests @@ -205,6 +205,14 @@ ${THIS_SH} ./comsub-posix3.sub # produced a parse error through bash-4.0-beta2 : $(echo foo)" " +# produced a parse error through bash-4.1 +unset x +x=$( +echo yes +# a comment with " ' \ +) +echo $x +unset x # fixed after bash-4.0 released : $(case a in a) echo ;; # comment diff --git a/tests/comsub-posix.tests~ b/tests/comsub-posix.tests~ index a2f6b3c2..3f04e6a5 100644 --- a/tests/comsub-posix.tests~ +++ b/tests/comsub-posix.tests~ @@ -200,6 +200,8 @@ ${THIS_SH} ./comsub-posix1.sub ${THIS_SH} ./comsub-posix2.sub +${THIS_SH} ./comsub-posix3.sub + # produced a parse error through bash-4.0-beta2 : $(echo foo)" " diff --git a/tests/execscript b/tests/execscript index a20f051e..70e77a3b 100644 --- a/tests/execscript +++ b/tests/execscript @@ -115,3 +115,10 @@ echo after # Problem with bash at least back to version 3.0 ${THIS_SH} -c 'VAR=0; VAR=1 command exec; exit ${VAR}' + +# problem with bash through bash-4.1 +( + exec /var/empty/nosuch + echo bad +) 2>/dev/null +[ $? = 127 ] || echo FAIL: bad exit status $? at $LINENO diff --git a/tests/execscript~ b/tests/execscript~ index 0d2389b5..8b832918 100644 --- a/tests/execscript~ +++ b/tests/execscript~ @@ -113,4 +113,12 @@ true | `echo true` & echo after +# Problem with bash at least back to version 3.0 ${THIS_SH} -c 'VAR=0; VAR=1 command exec; exit ${VAR}' + +# problem with bash through bash-4.1 +( + exec /var/empty/nosuch + echo bad +) 2>/dev/null +[ $? = 127 ] || echo exit status = $? at $LINENO diff --git a/tests/posixexp.right b/tests/posixexp.right index aa1bbf4e..0ba6555a 100644 --- a/tests/posixexp.right +++ b/tests/posixexp.right @@ -37,5 +37,5 @@ argv[1] = <'bar> argv[1] = <foo 'bar baz> argv[1] = <}z> argv[1] = <''z}> -./posixexp.tests: line 68: unexpected EOF while looking for matching `}' -./posixexp.tests: line 69: syntax error: unexpected end of file +./posixexp.tests: line 77: unexpected EOF while looking for matching `}' +./posixexp.tests: line 78: syntax error: unexpected end of file diff --git a/tests/posixexp.tests b/tests/posixexp.tests index 9a5b64cd..60be1c74 100644 --- a/tests/posixexp.tests +++ b/tests/posixexp.tests @@ -63,6 +63,15 @@ recho "foo ${IFS+'bar} baz" recho ${IFS+'}'z} recho "${IFS+'}'z}" +: ${TMPDIR:=/var/tmp} +rm -f $TMPDIR/sh +cp ${THIS_SH} $TMPDIR/sh +THIS_SH=$TMPDIR/sh ${THIS_SH} ./posixexp1.sub || echo "sh posixexp1.sub: test $? failed" +${THIS_SH} ./posixexp1.sub || echo "bash posixexp1.sub: test $? failed" + +THIS_SH=$TMPDIR/sh ${THIS_SH} ./posixexp2.sub || echo "sh posixexp2.sub: test $? failed" +rm -f $TMPDIR/sh + # this will be an error foo=bar echo "${foo:-"a}" diff --git a/tests/posixexp.tests~ b/tests/posixexp.tests~ index 018c0877..bbc10ed6 100644 --- a/tests/posixexp.tests~ +++ b/tests/posixexp.tests~ @@ -1,3 +1,15 @@ +unset a +printf "%s\n" ${a:=a\ b} +echo "$a" + +unset v +recho ${v=a\ b} x ${v=c\ d} + +unset v +recho "${v=a\ b}" x "${v=c\ d}" + +unset a v + recho "foo ${IFS+'bar'} baz" recho "a ${IFS+b c} d" @@ -51,6 +63,14 @@ recho "foo ${IFS+'bar} baz" recho ${IFS+'}'z} recho "${IFS+'}'z}" +: ${TMPDIR:=/var/tmp} +rm -f $TMPDIR/sh +cp ${THIS_SH} $TMPDIR/sh +THIS_SH=$TMPDIR/sh ${THIS_SH} ./posixexp1.sub || echo "sh posixexp1.sub: test $? failed" +${THIS_SH} ./posixexp1.sub || echo "bash posixexp1.sub: test $? failed" + +rm -f $TMPDIR/sh + # this will be an error foo=bar echo "${foo:-"a}" diff --git a/tests/posixexp1.sub b/tests/posixexp1.sub new file mode 100644 index 00000000..ce0b29dc --- /dev/null +++ b/tests/posixexp1.sub @@ -0,0 +1,30 @@ +# $FreeBSD: src/tools/regression/bin/sh/expansion/set-u1.0,v 1.2 2010/10/12 18:20:38 obrien Exp $ + +${THIS_SH} -uc 'unset foo; echo ${foo}' 2>/dev/null && exit 1 +${THIS_SH} -uc 'unset foo; echo $foo' 2>/dev/null && exit 1 +${THIS_SH} -uc 'foo=; echo $foo' >/dev/null || exit 2 +${THIS_SH} -uc 'foo=1; echo $foo' >/dev/null || exit 3 +# -/+/= are unaffected by set -u +${THIS_SH} -uc 'unset foo; echo ${foo-}' >/dev/null || exit 4 +${THIS_SH} -uc 'unset foo; echo ${foo+}' >/dev/null || exit 5 +${THIS_SH} -uc 'unset foo; echo ${foo=}' >/dev/null || exit 6 +# length/trimming are affected +${THIS_SH} -uc 'unset foo; echo ${#foo}' 2>/dev/null && exit 7 +${THIS_SH} -uc 'foo=; echo ${#foo}' >/dev/null || exit 8 +${THIS_SH} -uc 'unset foo; echo ${foo#?}' 2>/dev/null && exit 9 +${THIS_SH} -uc 'foo=1; echo ${foo#?}' >/dev/null || exit 10 +${THIS_SH} -uc 'unset foo; echo ${foo##?}' 2>/dev/null && exit 11 +${THIS_SH} -uc 'foo=1; echo ${foo##?}' >/dev/null || exit 12 +${THIS_SH} -uc 'unset foo; echo ${foo%?}' 2>/dev/null && exit 13 +${THIS_SH} -uc 'foo=1; echo ${foo%?}' >/dev/null || exit 14 +${THIS_SH} -uc 'unset foo; echo ${foo%%?}' 2>/dev/null && exit 15 +${THIS_SH} -uc 'foo=1; echo ${foo%%?}' >/dev/null || exit 16 + +${THIS_SH} -uc 'echo $!' 2>/dev/null && exit 17 +${THIS_SH} -uc ':& echo $!' >/dev/null || exit 18 +${THIS_SH} -uc 'echo $#' >/dev/null || exit 19 +${THIS_SH} -uc 'echo $1' 2>/dev/null && exit 20 +${THIS_SH} -uc 'echo $1' ${THIS_SH} xnotthere >/dev/null || exit 21 +${THIS_SH} -uc 'echo $2' ${THIS_SH} xnotthere 2>/dev/null && exit 22 +${THIS_SH} -uc 'echo $2' ${THIS_SH} xnotthere ynotthere >/dev/null || exit 23 +exit 0 diff --git a/tests/posixexp1.sub~ b/tests/posixexp1.sub~ new file mode 100644 index 00000000..d729a62d --- /dev/null +++ b/tests/posixexp1.sub~ @@ -0,0 +1,30 @@ +# $FreeBSD: src/tools/regression/bin/sh/expansion/set-u1.0,v 1.2 2010/10/12 18:20:38 obrien Exp $ + +${THIS_SH} -uc 'unset foo; echo ${foo}' 2>/dev/null && exit 1 +${THIS_SH} -uc 'unset foo; echo $foo' 2>/dev/null && exit 1 +${THIS_SH} -uc 'foo=; echo $foo' >/dev/null || exit 2 +${THIS_SH} -uc 'foo=1; echo $foo' >/dev/null || exit 3 +# -/+/= are unaffected by set -u +${THIS_SH} -uc 'unset foo; echo ${foo-}' >/dev/null || exit 4 +${THIS_SH} -uc 'unset foo; echo ${foo+}' >/dev/null || exit 5 +${THIS_SH} -uc 'unset foo; echo ${foo=}' >/dev/null || exit 6 +# length/trimming are affected +${THIS_SH} -uc 'unset foo; echo ${#foo}' 2>/dev/null && exit 7 +${THIS_SH} -uc 'foo=; echo ${#foo}' >/dev/null || exit 8 +${THIS_SH} -uc 'unset foo; echo ${foo#?}' 2>/dev/null && exit 9 +${THIS_SH} -uc 'foo=1; echo ${foo#?}' >/dev/null || exit 10 +${THIS_SH} -uc 'unset foo; echo ${foo##?}' 2>/dev/null && exit 11 +${THIS_SH} -uc 'foo=1; echo ${foo##?}' >/dev/null || exit 12 +${THIS_SH} -uc 'unset foo; echo ${foo%?}' 2>/dev/null && exit 13 +${THIS_SH} -uc 'foo=1; echo ${foo%?}' >/dev/null || exit 14 +${THIS_SH} -uc 'unset foo; echo ${foo%%?}' 2>/dev/null && exit 15 +${THIS_SH} -uc 'foo=1; echo ${foo%%?}' >/dev/null || exit 16 + +${THIS_SH} -uc 'echo $!' 2>/dev/null && exit 17 +${THIS_SH} -uc ':& echo $!' >/dev/null || exit 18 +${THIS_SH} -uc 'echo $#' >/dev/null || exit 19 +${THIS_SH} -uc 'echo $1' 2>/dev/null && exit 20 +${THIS_SH} -uc 'echo $1' ${THIS_SH} x >/dev/null || exit 21 +${THIS_SH} -uc 'echo $2' ${THIS_SH} x 2>/dev/null && exit 22 +${THIS_SH} -uc 'echo $2' ${THIS_SH} x y >/dev/null || exit 23 +exit 0 diff --git a/tests/posixexp2.right b/tests/posixexp2.right new file mode 100644 index 00000000..08d3901e --- /dev/null +++ b/tests/posixexp2.right @@ -0,0 +1,40 @@ +1 }z +2 ''z} +3 foo 'bar baz +4 foo b c baz +5 foo b c baz +6 }z +7 }z +8 ""z} +9 "}"z +10 foo bar} baz +11 ''z} +12 }z +13 }z +14 }z +15 <foo abx{ {{{}b c d{} bar> <}> <baz> . +16 hi there +17 hi there +18 hi there +19 hi there +20 hi there +21 hi there +22 hi there +23 hi there +24 'value' +25 'value' +26 $key +27 'value' +28 'x ~ x''x}"x}" # +29 <foo> <abx{ {{> <{}b> <c> <d{}> <bar> <}> <baz> . +30 <foo> <b\ +ar> <baz> . +32 <foo> <bar> <baz> . +33 <foo 'bar' baz> . +34 <foo bar baz> . +35 <a> <b> <x> <a> <b> . +36 <a\ b> <x> <a\ b> . +37 <a b> <x> <c d> . +38 xay / x'a'y . +39 x' / x' . +40 < b c> . diff --git a/tests/posixexp2.sub b/tests/posixexp2.sub new file mode 100644 index 00000000..9780f71a --- /dev/null +++ b/tests/posixexp2.sub @@ -0,0 +1,21 @@ + +x=a\ b +[ "$x" = "${x?}" ] || exit 1 +set -- ${x?} +{ [ "$#" = 2 ] && [ "$1" = a ] && [ "$2" = b ]; } || exit 1 +unset x +(echo ${x?abcdefg}) 2>&1 | grep -q abcdefg || exit 1 +${THIS_SH} -c 'unset foo; echo ${foo?}' 2>/dev/null && exit 2 +${THIS_SH} -c 'foo=; echo ${foo:?}' 2>/dev/null && exit 3 +${THIS_SH} -c 'foo=; echo ${foo?}' >/dev/null || exit 4 +${THIS_SH} -c 'foo=1; echo ${foo:?}' >/dev/null || exit 5 +${THIS_SH} -c 'echo ${!?}' 2>/dev/null && exit 6 +${THIS_SH} -c ':& echo ${!?}' >/dev/null || exit 7 +${THIS_SH} -c 'echo ${#?}' >/dev/null || exit 8 +${THIS_SH} -c 'echo ${*?}' 2>/dev/null && exit 9 +${THIS_SH} -c 'echo ${*?}' ${THIS_SH} x >/dev/null || exit 10 +${THIS_SH} -c 'echo ${1?}' 2>/dev/null && exit 11 +${THIS_SH} -c 'echo ${1?}' ${THIS_SH} x >/dev/null || exit 12 +${THIS_SH} -c 'echo ${2?}' ${THIS_SH} x 2>/dev/null && exit 13 +${THIS_SH} -c 'echo ${2?}' ${THIS_SH} x y >/dev/null || exit 14 +exit 0 diff --git a/tests/posixexp2.tests b/tests/posixexp2.tests new file mode 100644 index 00000000..57dd767d --- /dev/null +++ b/tests/posixexp2.tests @@ -0,0 +1,47 @@ +# From mksh + +set -o posix + +(echo 1 ${IFS+'}'z}) 2>&- || echo failed in 1 +(echo 2 "${IFS+'}'z}") 2>&- || echo failed in 2 +(echo 3 "foo ${IFS+'bar} baz") 2>&- || echo failed in 3 +(echo -n '4 '; printf '%s\n' "foo ${IFS+"b c"} baz") 2>&- || echo failed in 4 +(echo -n '5 '; printf '%s\n' "foo ${IFS+b c} baz") 2>&- || echo failed in 5 +(echo 6 ${IFS+"}"z}) 2>&- || echo failed in 6 +(echo 7 "${IFS+"}"z}") 2>&- || echo failed in 7 +(echo 8 "${IFS+\"}\"z}") 2>&- || echo failed in 8 +(echo 9 "${IFS+\"\}\"z}") 2>&- || echo failed in 9 +(echo 10 foo ${IFS+'bar} baz'}) 2>&- || echo failed in 10 +(echo 11 "$(echo "${IFS+'}'z}")") 2>&- || echo failed in 11 +(echo 12 "$(echo ${IFS+'}'z})") 2>&- || echo failed in 12 +(echo 13 ${IFS+\}z}) 2>&- || echo failed in 13 +(echo 14 "${IFS+\}z}") 2>&- || echo failed in 14 +u=x; (echo -n '15 '; printf '<%s> ' "foo ${IFS+a"b$u{ {"{{\}b} c ${IFS+d{}} bar" ${IFS-e{}} baz; echo .) 2>&- || echo failed in 15 +l=t; (echo 16 ${IFS+h`echo -n i ${IFS+$l}h`ere}) 2>&- || echo failed in 16 +l=t; (echo 17 ${IFS+h$(echo -n i ${IFS+$l}h)ere}) 2>&- || echo failed in 17 +l=t; (echo 18 "${IFS+h`echo -n i ${IFS+$l}h`ere}") 2>&- || echo failed in 18 +l=t; (echo 19 "${IFS+h$(echo -n i ${IFS+$l}h)ere}") 2>&- || echo failed in 19 +l=t; (echo 20 ${IFS+h`echo -n i "${IFS+$l}"h`ere}) 2>&- || echo failed in 20 +l=t; (echo 21 ${IFS+h$(echo -n i "${IFS+$l}"h)ere}) 2>&- || echo failed in 21 +l=t; (echo 22 "${IFS+h`echo -n i "${IFS+$l}"h`ere}") 2>&- || echo failed in 22 +l=t; (echo 23 "${IFS+h$(echo -n i "${IFS+$l}"h)ere}") 2>&- || echo failed in 23 +key=value; (echo -n '24 '; printf '%s\n' "${IFS+'$key'}") 2>&- || echo failed in 24 +key=value; (echo -n '25 '; printf '%s\n' "${IFS+"'$key'"}") 2>&- || echo failed in 25 # ksh93: “'$key'” +key=value; (echo -n '26 '; printf '%s\n' ${IFS+'$key'}) 2>&- || echo failed in 26 +key=value; (echo -n '27 '; printf '%s\n' ${IFS+"'$key'"}) 2>&- || echo failed in 27 +(echo -n '28 '; printf '%s\n' "${IFS+"'"x ~ x'}'x"'}"x}" #') 2>&- || echo failed in 28 +u=x; (echo -n '29 '; printf '<%s> ' foo ${IFS+a"b$u{ {"{ {\}b} c ${IFS+d{}} bar ${IFS-e{}} baz; echo .) 2>&- || echo failed in 29 +(echo -n '30 '; printf '<%s> ' ${IFS+foo 'b\ +ar' baz}; echo .) 2>&- || (echo failed in 30; echo failed in 31) +(echo -n '32 '; printf '<%s> ' ${IFS+foo "b\ +ar" baz}; echo .) 2>&- || echo failed in 32 +(echo -n '33 '; printf '<%s> ' "${IFS+foo 'b\ +ar' baz}"; echo .) 2>&- || echo failed in 33 +(echo -n '34 '; printf '<%s> ' "${IFS+foo "b\ +ar" baz}"; echo .) 2>&- || echo failed in 34 +(echo -n '35 '; printf '<%s> ' ${v=a\ b} x ${v=c\ d}; echo .) 2>&- || echo failed in 35 +(echo -n '36 '; printf '<%s> ' "${v=a\ b}" x "${v=c\ d}"; echo .) 2>&- || echo failed in 36 +(echo -n '37 '; printf '<%s> ' ${v-a\ b} x ${v-c\ d}; echo .) 2>&- || echo failed in 37 +(echo 38 ${IFS+x'a'y} / "${IFS+x'a'y}" .) 2>&- || echo failed in 38 +foo="x'a'y"; (echo 39 ${foo%*'a'*} / "${foo%*'a'*}" .) 2>&- || echo failed in 39 +foo="a b c"; (echo -n '40 '; printf '<%s> ' "${foo#a}"; echo .) 2>&- || echo failed in 40 diff --git a/tests/run-posixexp2 b/tests/run-posixexp2 new file mode 100644 index 00000000..9a2890f9 --- /dev/null +++ b/tests/run-posixexp2 @@ -0,0 +1,2 @@ +${THIS_SH} ./posixexp2.tests > /tmp/xx 2>&1 +diff /tmp/xx posixexp2.right && rm -f /tmp/xx diff --git a/tests/run-posixexp2~ b/tests/run-posixexp2~ new file mode 100644 index 00000000..e5a1c3e5 --- /dev/null +++ b/tests/run-posixexp2~ @@ -0,0 +1,2 @@ +${THIS_SH} ./posixexp.tests > /tmp/xx 2>&1 +diff /tmp/xx posixexp.right && rm -f /tmp/xx |